summaryrefslogtreecommitdiff
path: root/src/extend/camera.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/extend/camera.c')
-rw-r--r--src/extend/camera.c24
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*/