Made suggested changes
This commit is contained in:
parent
30906a597c
commit
efae54db0a
@ -94,9 +94,7 @@ void cFireSimulator::SimulateChunk(float a_Dt, int a_ChunkX, int a_ChunkZ, cChun
|
|||||||
for (cCoordWithIntList::iterator itr = Data.begin(); itr != Data.end();)
|
for (cCoordWithIntList::iterator itr = Data.begin(); itr != Data.end();)
|
||||||
{
|
{
|
||||||
int idx = cChunkDef::MakeIndexNoCheck(itr->x, itr->y, itr->z);
|
int idx = cChunkDef::MakeIndexNoCheck(itr->x, itr->y, itr->z);
|
||||||
int idb = cChunkDef::MakeIndexNoCheck(itr->x, itr->y - 1, itr->z);
|
|
||||||
BLOCKTYPE BlockType = a_Chunk->GetBlock(idx);
|
BLOCKTYPE BlockType = a_Chunk->GetBlock(idx);
|
||||||
BLOCKTYPE Burnee = a_Chunk->GetBlock(idb);
|
|
||||||
|
|
||||||
if (!IsAllowedBlock(BlockType))
|
if (!IsAllowedBlock(BlockType))
|
||||||
{
|
{
|
||||||
@ -137,7 +135,14 @@ void cFireSimulator::SimulateChunk(float a_Dt, int a_ChunkX, int a_ChunkZ, cChun
|
|||||||
itr = Data.erase(itr);
|
itr = Data.erase(itr);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(Burnee != E_BLOCK_NETHERRACK)
|
|
||||||
|
BLOCKTYPE Burnee = E_BLOCK_AIR;
|
||||||
|
if (itr->y > 0)
|
||||||
|
{
|
||||||
|
Burnee = a_Chunk->GetBlock(itr->x, itr->y - 1, itr->z);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!DoesBurnForever(Burnee))
|
||||||
{
|
{
|
||||||
a_Chunk->SetMeta(idx, BlockMeta + 1);
|
a_Chunk->SetMeta(idx, BlockMeta + 1);
|
||||||
}
|
}
|
||||||
@ -181,7 +186,7 @@ bool cFireSimulator::IsFuel(BLOCKTYPE a_BlockType)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cFireSimulator::IsForever(BLOCKTYPE a_BlockType)
|
bool cFireSimulator::DoesBurnForever(BLOCKTYPE a_BlockType)
|
||||||
{
|
{
|
||||||
return (a_BlockType == E_BLOCK_NETHERRACK);
|
return (a_BlockType == E_BLOCK_NETHERRACK);
|
||||||
}
|
}
|
||||||
@ -230,7 +235,7 @@ int cFireSimulator::GetBurnStepTime(cChunk * a_Chunk, int a_RelX, int a_RelY, in
|
|||||||
if (a_RelY > 0)
|
if (a_RelY > 0)
|
||||||
{
|
{
|
||||||
BLOCKTYPE BlockBelow = a_Chunk->GetBlock(a_RelX, a_RelY - 1, a_RelZ);
|
BLOCKTYPE BlockBelow = a_Chunk->GetBlock(a_RelX, a_RelY - 1, a_RelZ);
|
||||||
if (IsForever(BlockBelow))
|
if (DoesBurnForever(BlockBelow))
|
||||||
{
|
{
|
||||||
// Is burning atop of netherrack, burn forever (re-check in 10 sec)
|
// Is burning atop of netherrack, burn forever (re-check in 10 sec)
|
||||||
return 10000;
|
return 10000;
|
||||||
|
@ -28,7 +28,7 @@ public:
|
|||||||
virtual bool IsAllowedBlock(BLOCKTYPE a_BlockType) override;
|
virtual bool IsAllowedBlock(BLOCKTYPE a_BlockType) override;
|
||||||
|
|
||||||
bool IsFuel (BLOCKTYPE a_BlockType);
|
bool IsFuel (BLOCKTYPE a_BlockType);
|
||||||
bool IsForever(BLOCKTYPE a_BlockType);
|
bool DoesBurnForever(BLOCKTYPE a_BlockType);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/// Time (in msec) that a fire block takes to burn with a fuel block into the next step
|
/// Time (in msec) that a fire block takes to burn with a fuel block into the next step
|
||||||
|
Loading…
Reference in New Issue
Block a user