3 #include "BlockCommon.h" 4 #include "BlockConfig.h" 5 #include "IAttributeFields.h" 21 :blockId(0,0,0),brightness(0)
25 LightBlock(uint16_t x,uint16_t y,uint16_t z,uint8_t lightValue)
26 :blockId(x,y,z),brightness(lightValue)
31 :blockId(pos),brightness(lightValue)
45 int8_t sunlightUpdateRange;
46 int8_t pointLightUpdateRange;
48 Light(
Uint16x3& blockId_ws, uint8_t sunValue, uint8_t pointValue)
49 :blockId(blockId_ws), sunlightUpdateRange(sunValue), pointLightUpdateRange(pointValue)
68 ATTRIBUTE_METHOD1(
CBlockLightGridBase, GetDirtyColumnCount_s,
int*) { *p1 = cls->GetDirtyColumnCount();
return S_OK; }
69 ATTRIBUTE_METHOD1(
CBlockLightGridBase, GetDirtyBlockCount_s,
int*) { *p1 = cls->GetDirtyBlockCount();
return S_OK; }
70 ATTRIBUTE_METHOD1(
CBlockLightGridBase, GetLightGridSize_s,
int*) { *p1 = cls->GetLightGridSize();
return S_OK; }
72 ATTRIBUTE_METHOD1(
CBlockLightGridBase, GetLightCalculationStep_s,
int*) { *p1 = cls->GetLightCalculationStep();
return S_OK; }
73 ATTRIBUTE_METHOD1(
CBlockLightGridBase, SetLightCalculationStep_s,
int) { cls->SetLightCalculationStep(p1);
return S_OK; }
76 virtual void OnEnterWorld();
77 virtual void OnLeaveWorld();
78 virtual void OnWorldMove(uint16_t centerChunkX, uint16_t centerChunkZ);
79 virtual void UpdateLighting();
86 virtual bool GetBrightness(
Uint16x3& blockId, uint8_t* brightness,
int nSize = 27,
int nLightType = -1);
91 virtual void SetLightDirty(
Uint16x3& blockId_ws,
bool isSunLight, int8 nUpdateRange = 0);
93 virtual void NotifyBlockHeightChanged(uint16_t blockIdX_ws, uint16_t blockIdZ_ws,
ChunkMaxHeight& prevBlockHeight);
96 virtual void AddDirtyColumn(uint16_t chunkX_ws,uint16_t chunkZ_ws);
98 virtual void SetColumnPreloaded(uint16_t chunkX_ws, uint16_t chunkZ_ws);
100 virtual void SetColumnUnloaded(uint16_t chunkX_ws, uint16_t chunkZ_ws);
103 virtual int GetDirtyColumnCount();
105 virtual int GetDirtyBlockCount();
108 virtual int GetLightGridSize();
111 virtual void SetLightGridSize(
int nSize);
117 virtual void SetLightCalculationStep(uint32 nTicks);
118 virtual uint32 GetLightCalculationStep()
const;
126 virtual int ForceAddChunkColumn(
int nChunkWX,
int nChunkWZ);
128 virtual int GetForcedChunkColumnCount();
132 void SuspendLightUpdate();
134 void ResumeLightUpdate();
136 bool IsLightUpdateSuspended();
138 BlockIndex CalcLightDataIndex(
const Uint16x3& blockId,
bool bCreateIfNotExist =
true);
140 LightData* GetLightData(uint16_t x, uint16_t y, uint16_t z,
bool bCreateIfNotExist =
true);
141 BlockChunk* GetChunk(uint16_t x, uint16_t y, uint16_t z,
bool bCreateIfNotExist =
true);
144 bool m_suspendLightUpdate;
146 int32 m_nLightGridChunkSize;
147 uint32 m_nLightCalculationStep;
data structure used when resolving light
Definition: BlockLightGridBase.h:14
an attribute class is a collection of attribute fields.
Definition: AttributeClass.h:10
different physics engine has different winding order.
Definition: EventBinding.h:32
basic block world coordinate
Definition: BlockCoordinate.h:72
base class for an instance of block world
Definition: BlockWorld.h:35
Chunk is a 16*16*16 inside a region.
Definition: BlockChunk.h:138
Definition: BlockIndex.h:7
A common interface for all classes implementing IAttributeFields By implementing this class's virtual...
Definition: IAttributeFields.h:59
per block light data
Definition: BlockLightGridBase.h:41
Block Light Data.
Definition: BlockChunk.h:110
base class for block light grid.
Definition: BlockLightGridBase.h:37
chunk column's height map data
Definition: ChunkMaxHeight.h:6