Open Source Tomb Raider Engine
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

Camera.h 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*!
  2. * \file include/Camera.h
  3. * \brief Camera, View Frustum
  4. *
  5. * \author xythobuz
  6. */
  7. #ifndef _CAMERA_H_
  8. #define _CAMERA_H_
  9. #include <glm/gtc/type_precision.hpp>
  10. #include "RoomData.h"
  11. class Camera {
  12. public:
  13. static void reset();
  14. static bool update();
  15. static void setSize(glm::i32vec2 s);
  16. static void handleAction(ActionEvents action, bool isFinished);
  17. static void handleMouseMotion(int x, int y);
  18. static void handleControllerAxis(float value, KeyboardButton axis);
  19. static void setPosition(glm::vec3 p) { pos = p; dirty = true; }
  20. static glm::vec3 getPosition() { return pos; }
  21. static glm::vec2 getRotation() { return rot; }
  22. static glm::mat4 getProjectionMatrix() { return projection; }
  23. static glm::mat4 getViewMatrix() { return view; }
  24. static void setSensitivityX(float sens) { rotationDeltaX = sens; }
  25. static float getSensitivityX() { return rotationDeltaX; }
  26. static void setSensitivityY(float sens) { rotationDeltaY = sens; }
  27. static float getSensitivityY() { return rotationDeltaY; }
  28. static void setUpdateViewFrustum(bool u) { updateViewFrustum = u; }
  29. static bool getUpdateViewFrustum() { return updateViewFrustum; }
  30. static void setRoom(int r) { if (room != r) dirty = true; room = r; }
  31. static int getRoom() { return room; }
  32. static void setShowOverlay(bool s) { showOverlay = s; }
  33. static bool getShowOverlay() { return showOverlay; }
  34. static void setKeepInRoom(bool k) { keepInRoom = k; }
  35. static bool getKeepInRoom() { return keepInRoom; }
  36. static bool boxInFrustum(BoundingBox b);
  37. static void displayFrustum(glm::mat4 MVP);
  38. static void displayUI();
  39. private:
  40. static void calculateFrustumPlanes();
  41. static glm::vec3 pos;
  42. static glm::vec2 rot;
  43. static glm::vec3 posSpeed;
  44. static glm::vec2 rotSpeed;
  45. static glm::mat4 projection;
  46. static glm::mat4 view;
  47. static float rotationDeltaX, rotationDeltaY;
  48. static bool updateViewFrustum, dirty, showOverlay, movingFaster;
  49. static bool keepInRoom;
  50. static int room;
  51. };
  52. #endif