#include "M_camera.h" void M_initCamera(M_Camera *camera, vec3 up) { glm_vec3_zero(camera->pos); switch (camera->type) { case M_CAMERA_FPS: camera->yaw = 0.0f; camera->pitch = 0.0f; camera->roll = 0.0f; break; case M_CAMERA_REGULAR: default: glm_vec3_copy( up, camera->up ); glm_vec3_copy( (vec3){0.0f, 0.0f, -1.0f}, camera->direction ); break; } } inline void M_cameraViewMatrix(M_Camera *camera) { switch (camera->type) { case M_CAMERA_REGULAR: vec3 target; glm_vec3_add( camera->pos, camera->direction, target ); glm_lookat( camera->pos, target, camera->up, camera->view_matrix ); break; case M_CAMERA_FPS: glm_mat4_identity(camera->view_matrix); glm_translate(camera->view_matrix, camera->pos); glm_rotate_x(camera->view_matrix, camera->pitch, camera->view_matrix); glm_rotate_y(camera->view_matrix, camera->yaw, camera->view_matrix); break; } }