BSP.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include <vector>
  3. #include <map>
  4. #include <memory>
  5. namespace kapusha {
  6. class StreamSeekable;
  7. class Camera;
  8. class Object;
  9. class Texture;
  10. class Batch;
  11. }
  12. using kapusha::StreamSeekable;
  13. using kapusha::Object;
  14. using kapusha::Texture;
  15. class Materializer;
  16. class BSP
  17. {
  18. public:
  19. BSP(void);
  20. ~BSP(void);
  21. bool load(StreamSeekable *stream, Materializer* materializer);
  22. void setParent(const BSP* parent, kapusha::vec3f relative);
  23. void updateShift(kapusha::vec3f shift);
  24. const kapusha::vec3f& shift() const { return shift_; }
  25. const kapusha::vec3f& translation() const { return translation_; }
  26. void draw(const kapusha::Camera&) const;
  27. void drawContours(const kapusha::Camera&) const;
  28. public:
  29. struct MapLink {
  30. std::map<std::string, kapusha::vec3f> landmarks;
  31. std::map<std::string, std::string> maps;
  32. };
  33. const MapLink& getMapLinks() const { return links_; }
  34. private:
  35. const BSP *parent_;
  36. kapusha::vec3f relative_;
  37. kapusha::vec3f translation_;
  38. kapusha::vec3f shift_;
  39. MapLink links_;
  40. std::vector<Object*> objects_;
  41. Texture *lightmap_;
  42. Object *contours_;
  43. //kapusha::Batch *tstmp;
  44. };