#ifndef SCUFENG_CAMERA_H_ #define SCUFENG_CAMERA_H_ #include "cglm/types.h" #include "scufeng/engine.h" typedef struct { vec3 pos; float pitch_rad; float yaw_rad; float fov_rad; float near_clip; float far_clip; vec3 front; vec3 right; mat4 view; mat4 projection; } SECamera; SECamera SECamera_new( vec3 pos, const float fov_rad, const float near_clip, const float far_clip ); void SECamera_set_perspective(SECamera *const camera); void SECamera_pos_set(SECamera *const camera, vec3 pos); void SECamera_move_to_direction(SECamera *const camera, SEDirection dir, const float mag); void SECamera_look_dir(SECamera *const camera, vec3 dir); void SECamera_look_at(SECamera *const camera, vec3 target); void SECamera_pitch_add(SECamera *const camera, const float pitch_rad); void SECamera_yaw_add(SECamera *const camera, const float yaw_rad); void SECamera_view_update(SECamera *const camera); #endif // SCUFENG_CAMERA_H_