Camera.h 978 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef SCUFENG_CAMERA_H_
  2. #define SCUFENG_CAMERA_H_
  3. #include "cglm/types.h"
  4. #include "scufeng/engine.h"
  5. typedef struct {
  6. vec3 pos;
  7. float pitch_rad;
  8. float yaw_rad;
  9. float fov_rad;
  10. float near_clip;
  11. float far_clip;
  12. vec3 front;
  13. vec3 right;
  14. mat4 view;
  15. mat4 projection;
  16. } SECamera;
  17. SECamera SECamera_new(
  18. vec3 pos,
  19. const float fov_rad,
  20. const float near_clip,
  21. const float far_clip
  22. );
  23. void SECamera_set_perspective(SECamera *const camera);
  24. void SECamera_pos_set(SECamera *const camera, vec3 pos);
  25. void SECamera_move_to_direction(SECamera *const camera, SEDirection dir, const float mag);
  26. void SECamera_look_dir(SECamera *const camera, vec3 dir);
  27. void SECamera_look_at(SECamera *const camera, vec3 target);
  28. void SECamera_pitch_add(SECamera *const camera, const float pitch_rad);
  29. void SECamera_yaw_add(SECamera *const camera, const float yaw_rad);
  30. void SECamera_view_update(SECamera *const camera);
  31. #endif // SCUFENG_CAMERA_H_