diff options
author | chai <chaifix@163.com> | 2020-02-26 00:01:07 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-02-26 00:01:07 +0800 |
commit | 27687536844ed3b045bba1abd1aae8bb3692f6cb (patch) | |
tree | b8bfdc74a81ac8bdfdd11f037927f967da874447 /src/extend/camera.c | |
parent | 1a94259666a0d98e98e6999f19cf07475b618e65 (diff) |
*camera
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*/ |