Implemented Chunk Sparsing with segments
This commit is contained in:
@@ -95,8 +95,10 @@ void cFireSimulator::SimulateChunk(float a_Dt, int a_ChunkX, int a_ChunkZ, cChun
|
||||
int NumMSecs = (int)a_Dt;
|
||||
for (cCoordWithIntList::iterator itr = Data.begin(); itr != Data.end();)
|
||||
{
|
||||
int idx = cChunkDef::MakeIndexNoCheck(itr->x, itr->y, itr->z);
|
||||
BLOCKTYPE BlockType = a_Chunk->GetBlock(idx);
|
||||
int x = itr->x;
|
||||
int y = itr->y;
|
||||
int z = itr->z;
|
||||
BLOCKTYPE BlockType = a_Chunk->GetBlock(x,y,z);
|
||||
|
||||
if (!IsAllowedBlock(BlockType))
|
||||
{
|
||||
@@ -125,7 +127,7 @@ void cFireSimulator::SimulateChunk(float a_Dt, int a_ChunkX, int a_ChunkZ, cChun
|
||||
itr->x + a_ChunkX * cChunkDef::Width, itr->y, itr->z + a_ChunkZ * cChunkDef::Width
|
||||
);
|
||||
*/
|
||||
NIBBLETYPE BlockMeta = a_Chunk->GetMeta(idx);
|
||||
NIBBLETYPE BlockMeta = a_Chunk->GetMeta(x, y, z);
|
||||
if (BlockMeta == 0x0f)
|
||||
{
|
||||
// The fire burnt out completely
|
||||
@@ -140,7 +142,7 @@ void cFireSimulator::SimulateChunk(float a_Dt, int a_ChunkX, int a_ChunkZ, cChun
|
||||
|
||||
if((itr->y > 0) && (!DoesBurnForever(a_Chunk->GetBlock(itr->x, itr->y - 1, itr->z))))
|
||||
{
|
||||
a_Chunk->SetMeta(idx, BlockMeta + 1);
|
||||
a_Chunk->SetMeta(x, y, z, BlockMeta + 1);
|
||||
}
|
||||
itr->Data = GetBurnStepTime(a_Chunk, itr->x, itr->y, itr->z); // TODO: Add some randomness into this
|
||||
} // for itr - Data[]
|
||||
|
||||
Reference in New Issue
Block a user