Block.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <Model3D.h>
  3. #include "Area.h"
  4. #include "BlockType.h"
  5. #include "Registries.h"
  6. using namespace Framework;
  7. class BasicBlockItemType;
  8. class Chunk;
  9. class Block : public Model3D
  10. {
  11. protected:
  12. float hp;
  13. float maxHP;
  14. const BlockType* zType;
  15. bool sideVisible[6];
  16. Vec3<int> location;
  17. Framework::Textur* breakTextur;
  18. unsigned char lightData[6 * 6];
  19. char lightBuffer[24 * 4];
  20. char needRequestModelInfo;
  21. void beforeRender(
  22. GraphicsApi* api, Shader* zVertexShader, Shader* zPixelShader) override;
  23. void afterRender(
  24. GraphicsApi* api, Shader* zVertexShader, Shader* zPixelShader) override;
  25. public:
  26. Block(const BlockType* zType,
  27. Vec3<int> position,
  28. Model3DData* model,
  29. Model3DTextur* texture,
  30. int maxHp,
  31. bool transparent,
  32. bool needRequestModelInfo);
  33. virtual ~Block();
  34. void api(char* message);
  35. void copyLightTo(Block* zB);
  36. void setLightData(Direction dir, unsigned char* data);
  37. bool isVisible() const;
  38. Vec3<int> getLocation() const;
  39. const BlockType* zBlockType() const;
  40. Textur* zEffectTextur() override;
  41. float getEffectPercentage() override;
  42. friend Chunk;
  43. Text printLightInfo();
  44. };