diff options
Diffstat (limited to 'src/extend/camera.c')
-rw-r--r-- | src/extend/camera.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/extend/camera.c b/src/extend/camera.c index 15bcc58..6426193 100644 --- a/src/extend/camera.c +++ b/src/extend/camera.c @@ -2,6 +2,26 @@ #include "../core/device.h" #include "camera.h" +// A unity editor style camera +typedef struct Camera { + Transform transform; + float fov, aspect, near, far; + /*matrix*/ + Mat4 cached_view_matrix; /*or WorldToCameraMatrix*/ + Mat4 cached_proj_matrix; + bool is_viewdirty, is_projdirty; + /*operations*/ + float zoom_speed; + Vec2 rotate_sensitivity; + Vec2 move_sensitivity; + Euler euler; + /*events*/ + bool look_around; + Vec2 mouse_prev; + bool move_around; + /*window*/ + wog_Window* wnd; +} Camera; Camera* camera_create(wog_Window* wnd, CameraConfig* config) { Camera* cam = ssrM_new(Camera); @@ -135,10 +155,10 @@ void camera_onupdate(Camera* cam, float dt) { void camera_ondraw(Camera* cam) { /*set vp matrix*/ ssr_matrixmode(MATRIX_PROJECTION); - camera_getprojmatrix(&cam, NULL); + camera_getprojmatrix(cam, NULL); ssr_loadmatrix(&cam->cached_proj_matrix); ssr_matrixmode(MATRIX_VIEW); - camera_getviewmatrix(&cam, NULL); + camera_getviewmatrix(cam, NULL); ssr_loadmatrix(&cam->cached_view_matrix); ssr_matrixmode(MATRIX_MODEL); /*set builtin variables*/ |