Open Source Tomb Raider Engine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Camera.h 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*!
  2. * \file include/Camera.h
  3. * \brief Camera class
  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. //! \fixme The Y axis seems to be the source of all evil?
  20. static void setPosition(glm::vec3 p) { pos = glm::vec3(p.x, -p.y, p.z); }
  21. static glm::vec3 getPosition() { return glm::vec3(pos.x, -pos.y, pos.z); }
  22. static glm::vec2 getRotation() { return rot; }
  23. static glm::mat4 getProjectionMatrix() { return projection; }
  24. static glm::mat4 getViewMatrix() { return view; }
  25. static void setSensitivityX(float sens) { rotationDeltaX = sens; }
  26. static float getSensitivityX() { return rotationDeltaX; }
  27. static void setSensitivityY(float sens) { rotationDeltaY = sens; }
  28. static float getSensitivityY() { return rotationDeltaY; }
  29. static void setUpdateViewFrustum(bool u) { updateViewFrustum = u; }
  30. static bool getUpdateViewFrustum() { return updateViewFrustum; }
  31. static void setRoom(int r) { if (room != r) dirty = true; room = r; }
  32. static int getRoom() { return room; }
  33. static void setShowOverlay(bool s) { showOverlay = s; }
  34. static bool getShowOverlay() { return showOverlay; }
  35. static bool boxInFrustum(BoundingBox b);
  36. static void displayFrustum(glm::mat4 MVP);
  37. static void displayUI();
  38. private:
  39. static void calculateFrustumPlanes();
  40. static glm::vec3 pos;
  41. static glm::vec2 rot;
  42. static glm::vec3 posSpeed;
  43. static glm::vec2 rotSpeed;
  44. static glm::mat4 projection;
  45. static glm::mat4 view;
  46. static float rotationDeltaX, rotationDeltaY;
  47. static bool updateViewFrustum, dirty, showOverlay;
  48. static int room;
  49. };
  50. #endif