#pragma once #include #include #include "Chunk.h" #include "NetworkResponse.h" class Dimension : public virtual Framework::ReferenceCounter { private: int dimensionId; float gravity; Framework::Trie* chunks; Framework::Array chunkList; Framework::RCArray* entities; void getAddrOf(Framework::Punkt cPos, char* addr) const; void getAddrOfWorld(Framework::Punkt wPos, char* addr) const; public: Dimension(int id); ~Dimension(); void api(Framework::StreamReader* zRequest, NetworkResponse* zResponse); void tickEntities(); Framework::Either zBlock(Framework::Vec3 location); Block* zRealBlockInstance(Framework::Vec3 location); void placeBlock(Framework::Vec3 location, Framework::Either block); void addEntity(Entity* entity); void setChunk(Chunk* chunk, Framework::Punkt center); void save(Framework::Text worldDir) const; int getDimensionId() const; bool hasChunck(int x, int y) const; Chunk* zChunk(Framework::Punkt wPos) const; float getGravity() const; void removeOldChunks(); Entity* zEntity(int id); Entity* zNearestEntity(Framework::Vec3 pos, std::function filter); void removeEntity(int id); };