summaryrefslogtreecommitdiff
path: root/src/extend/camera.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/extend/camera.h')
-rw-r--r--src/extend/camera.h35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/extend/camera.h b/src/extend/camera.h
index 2b7afa5..8227dbf 100644
--- a/src/extend/camera.h
+++ b/src/extend/camera.h
@@ -2,18 +2,37 @@
#define _SOFTSHADEROOM_CAMERA_H_
#include "../math/math.h"
+#include "transform.h"
+#include "../extern/wog.h"
-typedef struct Camera {
- Vec3 front;
+#undef near
+#undef far
+
+typedef struct {
+ Transform transform;
+ float fov, aspect, near, far;
+ /*matrix*/
+ Mat4 view_matrix; /*or WorldToCameraMatrix*/
+ Mat4 proj_matrix;
+ bool is_viewdirty, is_projdirty;
+ /*operations*/
+ float zoom_speed;
} Camera;
-void camera_onmousemove(float x, float y);
-void camera_onleftdown();
-void camera_onleftup();
-void camera_onrightdown();
-void camera_onrightup();
-void camera_onscroll(int amount);
+typedef struct CameraConfig {
+ float fov, aspect, near, far;
+ Vec3 pos;
+}CameraConfig;
+
+void camera_init(Camera* cam);
+
+void camera_setposition(float x, float y, float z);
+
+void camera_onevent(Camera* cam, wog_Event* e);
void camera_getmatrix(Mat4* view, Mat4* proj);
+void camera_getviewmatrix(Camera* cam, Mat4* view);
+void camera_getprojmatrix(Camera* cam, Mat4* proj);
+
#endif \ No newline at end of file