Dimension.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <Array.h>
  3. #include <Trie.h>
  4. #include <Critical.h>
  5. #include "Chunk.h"
  6. #include "Entity.h"
  7. class World;
  8. class Dimension : public virtual Framework::ReferenceCounter
  9. {
  10. private:
  11. int dimensionId;
  12. Framework::Trie<Chunk>* chunks;
  13. Framework::Array<Chunk*> chunkList;
  14. Framework::RCArray<Entity>* entities;
  15. Framework::Critical cs;
  16. void getAddrOf( Framework::Punkt cPos, char* addr ) const;
  17. void getAddrOfWorld( Framework::Punkt wPos, char* addr ) const;
  18. public:
  19. Dimension( int id );
  20. ~Dimension();
  21. Block* zBlock( Framework::Vec3<int> location );
  22. Block* getBlock( Framework::Vec3<int> location );
  23. void addEntity( Entity* entity );
  24. void setChunk( Chunk* chunk, Framework::Punkt center, World* zWorld );
  25. int getDimensionId() const;
  26. bool hasChunck( int x, int y ) const;
  27. Chunk* zChunk( Framework::Punkt wPos ) const;
  28. void removeDistantChunks( Framework::Punkt wPos, World* zWorld );
  29. void setBlock( Block* block );
  30. void removeBlock( Block* zBlock );
  31. Entity* zEntity( int id );
  32. Entity* getEntity( int id );
  33. void removeEntity( int id );
  34. };