#pragma once #include #include "Area.h" #include "BlockType.h" #include "Registries.h" using namespace Framework; class BasicBlockItemType; class Chunk; class Block : public Model3D { protected: float hp; float maxHP; const BlockType* zType; bool sideVisible[6]; Vec3 location; Framework::Textur* breakTextur; unsigned char lightData[6 * 6]; char lightBuffer[24 * 4]; char needRequestModelInfo; void beforeRender( GraphicsApi* api, Shader* zVertexShader, Shader* zPixelShader) override; void afterRender( GraphicsApi* api, Shader* zVertexShader, Shader* zPixelShader) override; public: Block(const BlockType* zType, Vec3 position, Model3DData* model, Model3DTextur* texture, int maxHp, bool transparent, bool needRequestModelInfo); virtual ~Block(); void api(char* message); void copyLightTo(Block* zB); void setLightData(Direction dir, unsigned char* data); bool isVisible() const; Vec3 getLocation() const; const BlockType* zBlockType() const; Skeleton* zSkeleton() const; Textur* zEffectTextur() override; float getEffectPercentage() override; friend Chunk; Text printLightInfo(); };