CloudAtlas.h 703 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <kapusha/core/Core.h>
  3. #include <kapusha/math/types.h>
  4. namespace kapusha {
  5. class Texture;
  6. }
  7. #if LIGHTMAP_FORMAT == 1
  8. typedef kapusha::u16 lmap_texel_t;
  9. #else
  10. typedef kapusha::u32 lmap_texel_t;
  11. #endif
  12. class CloudAtlas
  13. {
  14. public:
  15. CloudAtlas(kapusha::vec2i size);
  16. ~CloudAtlas(void);
  17. kapusha::rect2f addImage(kapusha::vec2i size, const void *p);
  18. kapusha::Texture *texture() const;
  19. private:
  20. kapusha::vec2i size_;
  21. kapusha::vec2f pix2tex_;
  22. lmap_texel_t *pixels_;
  23. struct Node {
  24. kapusha::rect2i rect;
  25. Node *next, *prev;
  26. Node(kapusha::rect2i _rect)
  27. : rect(_rect)
  28. { next = prev = 0; }
  29. bool insert(kapusha::vec2i size);
  30. };
  31. Node *root_;
  32. };