#pragma once #include #include #include #include #include "Dimension.h" #include "PlayerKam.h" class World : public Framework::Thread { private: Dimension* currentDimension; Framework::Welt3D* renderedWorld; Framework::Bildschirm3D* zScreenPtr; PlayerKam* kam; Framework::Vec3 target; int entityTarget; bool hasTarget; bool firstMessage; int ownEntityId; Framework::Model3D* currentTarget; Array subscriptions; Critical subLock; public: World(Framework::Bildschirm3D* zScreen); ~World(); void update(bool background); void setChunk(Chunk* chunk); void thread() override; Block* zBlockAt(Framework::Vec3 location) const; Block* getBlockAt(Framework::Vec3 location) const; Dimension* zDimension() const; void setVisibility(Chunk* zChunk, bool visible); void setVisibility(Entity* zEntity, bool visible); Framework::Punkt getChunkCenter(int x, int y) const; Entity* zEntity(int id) const; Entity* getEntity(int id) const; void removeEntity(int id); PlayerKam* zKamera() const; int getCurrentPlayerId() const; Entity* getCurrentPlayerEntity() const; void setTarget(Framework::Model3D* zTarget); void lockWorld(); void unlockWorld(); void onChunkAdded(Punkt pos); };