camera.h 666 B

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. *** :: Camera ::
  3. ***
  4. *** Basic Camera Entity
  5. ***
  6. **/
  7. #ifndef camera_h
  8. #define camera_h
  9. #include "cengine.h"
  10. #include "cjoystick.h"
  11. typedef struct {
  12. vec3 position;
  13. vec3 target;
  14. float fov;
  15. float near_clip;
  16. float far_clip;
  17. } camera;
  18. camera* camera_new();
  19. void camera_delete(camera* cam);
  20. vec3 camera_direction(camera* c);
  21. mat4 camera_view_matrix(camera* c);
  22. mat4 camera_proj_matrix(camera* c);
  23. mat4 camera_view_proj_matrix(camera* c);
  24. void camera_normalize_target(camera* c);
  25. void camera_control_orbit(camera* c, SDL_Event e);
  26. void camera_control_freecam(camera* c, float timestep);
  27. void camera_control_joyorbit(camera* c, float timestep);
  28. #endif