World.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include <Camera3D.h>
  3. #include <Screen.h>
  4. #include <Thread.h>
  5. #include <World3D.h>
  6. #include "Dimension.h"
  7. #include "FactoryClient.h"
  8. #include "PlayerKam.h"
  9. class World : public Framework::Thread
  10. {
  11. public:
  12. static World* INSTANCE;
  13. private:
  14. Dimension* currentDimension;
  15. Framework::World3D* renderedWorld;
  16. Framework::Screen3D* zScreenPtr;
  17. PlayerKam* kam;
  18. bool firstMessage;
  19. int ownEntityId;
  20. Framework::Model3D* currentTarget;
  21. Array<Point> subscriptions;
  22. FactoryClient* client;
  23. FactoryCraftModel* selectionModel;
  24. ReadWriteLock subLock;
  25. Critical targetLock;
  26. float dayLightFactor;
  27. double time;
  28. double dayLength;
  29. double transitionLength;
  30. double nightLength;
  31. public:
  32. World(Framework::Screen3D* zScreen, FactoryClient* client);
  33. ~World();
  34. int update(bool background);
  35. void onTick(double time);
  36. void setChunk(Chunk* chunk);
  37. void thread() override;
  38. Block* zBlockAt(Framework::Vec3<int> location) const;
  39. Block* getBlockAt(Framework::Vec3<int> location) const;
  40. Dimension* zDimension() const;
  41. void setVisibility(Entity* zEntity, bool visible);
  42. Framework::Point getChunkCenter(int x, int y) const;
  43. Entity* zEntity(int id) const;
  44. Entity* getEntity(int id) const;
  45. void removeEntity(int id);
  46. PlayerKam* zKamera() const;
  47. int getCurrentPlayerId() const;
  48. Entity* getCurrentPlayerEntity() const;
  49. void setTarget(Framework::Model3D* zTarget);
  50. void onChunkAdded(Point pos);
  51. Chunk* zChunk(Point center);
  52. Lock& getChunkReadLock();
  53. Framework::Model3D* getCurrentTarget() const;
  54. FactoryCraftModel* zSelectedEffectModel() const;
  55. FactoryClient* zClient() const;
  56. float getDayLightFactor() const;
  57. };