World.h 2.1 KB

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