diff options
Diffstat (limited to 'src/extend/camera.h')
-rw-r--r-- | src/extend/camera.h | 35 |
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 |