Camera đang dùng và đổi tọa độ giữa thế giới và màn hình. Tiếp...
Classes | |
| struct | njin::camera_follow |
| Cho camera bám theo một entity: mượt, có vùng chết, nhìn trước theo hướng chạy, và không bao giờ lộ ra ngoài khung level. Tiếp... | |
Các hàm | |
| entt::entity | njin::camera_spawn (context &ctx, f32 zoom=1.0f, vec2 pos={}) |
| Tạo một entity camera đang dùng (transform, njin::camera_2d, njin::camera_on) nhìn vào pos, với offset ở giữa màn hình. | |
| rect | njin::level_bounds (const context &ctx, level_handle level) |
| Khung của một level trong thế giới, dùng cho camera_follow::bounds. | |
| vec2 | njin::camera_clamp (const context &ctx, vec2 pos, const camera_2d &cam, rect bounds) |
| Giới hạn một vị trí camera để khung nhìn nằm trong bounds. | |
| camera_view | njin::camera_active (const context &ctx) |
| Trả về góc nhìn dùng cho frame này. | |
| vec2 | njin::w2scr (const context &ctx, vec2 pos) |
| Đổi một điểm từ thế giới sang pixel màn hình, qua camera_active(). | |
| vec2 | njin::scr2w (const context &ctx, vec2 pos) |
| Đổi một điểm từ pixel màn hình sang thế giới, qua camera_active(). | |
| rect | njin::camera_bounds (const context &ctx) |
| Vùng thế giới đang hiện trên màn hình. | |
| void | njin::camera_set_post_shader (context &ctx, shader_handle shader) |
| Áp một shader hậu kỳ lên toàn bộ thế giới đi qua camera. | |
Camera đang dùng và đổi tọa độ giữa thế giới và màn hình.
Tạo một entity camera đang dùng (transform, njin::camera_2d, njin::camera_on) nhìn vào pos, với offset ở giữa màn hình.
| ctx | Context của engine. |
| zoom | Độ phóng. 2 là mọi thứ to gấp đôi. |
| pos | Điểm nhìn ban đầu trong thế giới. |
| rect njin::level_bounds | ( | const context & | ctx, |
| level_handle | level ) |
Khung của một level trong thế giới, dùng cho camera_follow::bounds.
| ctx | Context của engine. |
| level | Level đã nạp. |
Giới hạn một vị trí camera để khung nhìn nằm trong bounds.
| ctx | Context của engine (để biết cỡ màn hình). |
| pos | Vị trí camera (transform.pos). |
| cam | Camera. |
| bounds | Vùng thế giới. Kích thước 0 là không giới hạn. |
| camera_view njin::camera_active | ( | const context & | ctx | ) |
Trả về góc nhìn dùng cho frame này.
Đó là entity có camera_on, camera_2d và transform (xem _comps.h), hoặc góc nhìn đồng nhất (thế giới trùng với pixel màn hình) nếu không có entity nào. Được đọc trực tiếp từ registry nên thay đổi có hiệu lực ngay.
| ctx | Context của engine. |
Đổi một điểm từ thế giới sang pixel màn hình, qua camera_active().
| ctx | Context của engine. |
| pos | Điểm trong thế giới. |
Đổi một điểm từ pixel màn hình sang thế giới, qua camera_active().
Thường dùng để đổi vị trí chuột, từ mouse_pos(), thành vị trí trong thế giới.
| ctx | Context của engine. |
| pos | Điểm trên màn hình (pixel). |
| rect njin::camera_bounds | ( | const context & | ctx | ) |
Vùng thế giới đang hiện trên màn hình.
Khi camera xoay, đây là hình chữ nhật thẳng trục bao quanh vùng nhìn thấy. Dùng để bỏ qua việc vẽ những thứ nằm ngoài màn hình.
| ctx | Context của engine. |
| void njin::camera_set_post_shader | ( | context & | ctx, |
| shader_handle | shader ) |
Áp một shader hậu kỳ lên toàn bộ thế giới đi qua camera.
Khi bật, mọi thứ vẽ trong phase_pre_render và phase_render (kể cả sprite và tilemap) được vẽ vào một ảnh ngoài màn hình, rồi vẽ ra màn hình qua shader này. UI vẽ trong phase_post_render không bị ảnh hưởng. Đặt uniform cho shader như bình thường bằng các hàm shader_set_*().
| ctx | Context của engine. |
| shader | Shader hậu kỳ. Handle id 0 để tắt. |