Open Source Tomb Raider Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RoomData.h 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*!
  2. * \file include/RoomData.h
  3. * \brief Auxiliary Room classes
  4. *
  5. * \author xythobuz
  6. */
  7. #ifndef _ROOM_DATA_H_
  8. #define _ROOM_DATA_H_
  9. #include "BoundingBox.h"
  10. class StaticModel {
  11. public:
  12. StaticModel(glm::vec3 pos, float angle, int i);
  13. void display(glm::mat4 VP);
  14. void displayUI();
  15. glm::vec3 getCenter();
  16. float getRadius();
  17. void displayBoundingSphere(glm::mat4 VP, glm::vec3 color);
  18. private:
  19. void find();
  20. int id;
  21. int cache;
  22. glm::mat4 model;
  23. };
  24. // --------------------------------------
  25. class RoomSprite {
  26. public:
  27. RoomSprite(glm::vec3 p, int s) : pos(p), sprite(s) { }
  28. void display(glm::mat4 VP);
  29. private:
  30. glm::vec3 pos;
  31. int sprite;
  32. };
  33. // --------------------------------------
  34. class Portal {
  35. public:
  36. Portal(int adj, glm::vec3 n,
  37. glm::vec3 v1, glm::vec3 v2, glm::vec3 v3, glm::vec3 v4);
  38. int getAdjoiningRoom() { return adjoiningRoom; }
  39. glm::vec3 getNormal() { return normal; }
  40. BoundingBox getBoundingBox() { return bbox; }
  41. void display(glm::mat4 VP);
  42. void displayUI();
  43. glm::vec3 getVertex(int i) {
  44. orAssertGreaterThanEqual(i, 0);
  45. orAssertLessThan(i, 4);
  46. return vert[i];
  47. }
  48. static void setShowBoundingBox(bool s) { showBoundingBox = s; }
  49. static bool getShowBoundingBox() { return showBoundingBox; }
  50. private:
  51. int adjoiningRoom;
  52. glm::vec3 normal;
  53. glm::vec3 vert[4];
  54. BoundingBox bbox, bboxNormal;
  55. static bool showBoundingBox;
  56. };
  57. // --------------------------------------
  58. class Sector {
  59. public:
  60. Sector(float f, float c, bool w) : floor(f), ceiling(c), wall(w) { }
  61. float getFloor();
  62. float getCeiling();
  63. bool isWall();
  64. private:
  65. float floor;
  66. float ceiling;
  67. bool wall;
  68. };
  69. #endif