-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCamera.cs
More file actions
27 lines (24 loc) · 1.31 KB
/
Copy pathCamera.cs
File metadata and controls
27 lines (24 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
namespace CreatorEngine;
/// <summary>
/// 현재 카메라에 대한 질의. 컴포넌트 래퍼가 아니라 정적 접근점이다 —
/// 엔진이 <c>CameraManagement</c>에서 마지막 카메라를 들고 있고,
/// 게임 스크립트도 전부 그것을 쓰기 때문이다.
/// </summary>
public static class Camera
{
/// <summary>쓸 수 있는 카메라가 있는지. 씬 전환 직후에는 없을 수 있다.</summary>
public static bool Exists => Native.HasCamera();
/// <summary>화면 크기(픽셀).</summary>
public static Float2 ScreenSize => Native.CameraGetScreenSize();
/// <summary>
/// 월드 좌표를 화면 픽셀로 바꾼다.
///
/// X·Y는 좌상단 기준 화면 좌표, Z는 카메라 앞쪽 거리다.
/// <b>Z가 0 이하면 대상이 카메라 뒤에 있어 X·Y가 의미 없다</b> — 반드시 먼저 걸러야 한다
/// (Unity <c>Camera.WorldToScreenPoint</c>와 같은 규약).
///
/// 기존 C++ 스크립트 11개 파일이 뷰·투영 행렬을 직접 곱하고 w로 나누고 NDC를 펴는
/// 스무 줄짜리를 똑같이 복제하고 있었다. 행렬을 경계 너머로 넘기는 대신 결과만 받는다.
/// </summary>
public static Float3 WorldToScreenPoint(Float3 world) => Native.CameraWorldToScreenPoint(world);
}