camera.lua 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. local ffi = require("ffi")
  2. ffi.cdef
  3. [[
  4. typedef struct
  5. {
  6. Vec3 m_position;
  7. Vec3 m_look_at;
  8. Vec3 m_up;
  9. float m_angle_x;
  10. float m_angle_y;
  11. Mat4 m_view;
  12. Mat4 m_projection;
  13. float m_FOV;
  14. float m_aspect;
  15. float m_near;
  16. float m_far;
  17. } Camera;
  18. Camera* camera(const Vec3& position, float fov, float aspect);
  19. const Vec3& camera_position(Camera* self);
  20. void camera_set_position(Camera* self, const Vec3& position);
  21. const Vec3& camera_look_at(Camera* self);
  22. void camera_set_look_at(Camera* self, const Vec3& lookat);
  23. void camera_set_rotation(Camera* self, const float x, const float y);
  24. const Vec3& camera_up(Camera* self);
  25. float camera_fov(Camera* self);
  26. void camera_set_fov(Camera* self, float fov);
  27. float camera_aspect(Camera* self);
  28. void camera_set_aspect(Camera* self, float aspect);
  29. float camera_near_clip_distance(Camera* self);
  30. void camera_set_near_clip_distance(Camera* self, float near);
  31. float camera_far_clip_distance(Camera* self);
  32. void camera_set_far_clip_distance(Camera* self, float far);
  33. const Mat4& camera_projection_matrix(Camera* self);
  34. const Mat4& camera_view_matrix(Camera* self);
  35. void camera_move_forward(Camera* self, float meters);
  36. void camera_move_backward(Camera* self, float meters);
  37. void camera_strafe_left(Camera* self, float meters);
  38. void camera_strafe_right(Camera* self, float meters);
  39. ]]
  40. Camera = {}
  41. Camera.camera = lib.camera
  42. Camera.position = lib.camera_position
  43. Camera.set_position = lib.camera_set_position
  44. Camera.look_at = lib.camera_look_at
  45. Camera.set_look_at = lib.camera_set_look_at
  46. Camera.set_rotation = lib.camera_set_rotation
  47. Camera.up = lib.camera_up
  48. Camera.fov = lib.camera_fov
  49. Camera.set_fov = lib.camera_set_fov
  50. Camera.aspect = lib.camera_aspect
  51. Camera.set_aspect = lib.camera_set_aspect
  52. Camera.near_clip_distance = lib.camera_near_clip_distance
  53. Camera.set_near_clip_distance = lib.camera_set_near_clip_distance
  54. Camera.far_clip_distance = lib.camera_far_clip_distance
  55. Camera.set_far_clip_distance = lib.camera_set_far_clip_distance
  56. Camera.projection_matrix = lib.camera_projection_matrix
  57. Camera.view_matrix = lib.camera_view_matrix
  58. Camera.move_forward = lib.camera_move_forward
  59. Camera.move_backward = lib.camera_move_backward
  60. Camera.strafe_left = lib.camera_strafe_left
  61. Camera.strafe_right = lib.camera_strafe_right