Small performance improvements in fluid simulator.
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1276 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
@@ -76,18 +76,19 @@ void cDelayedFluidSimulator::AddBlock(int a_BlockX, int a_BlockY, int a_BlockZ,
|
||||
void * ChunkDataRaw = (m_FluidBlock == E_BLOCK_WATER) ? a_Chunk->GetWaterSimulatorData() : a_Chunk->GetLavaSimulatorData();
|
||||
cDelayedFluidSimulatorChunkData * ChunkData = (cDelayedFluidSimulatorChunkData *)ChunkDataRaw;
|
||||
cCoordWithIntVector & Blocks = ChunkData->m_Slots[m_AddSlotNum];
|
||||
|
||||
|
||||
// Check for duplicates:
|
||||
int Index = cChunkDef::MakeIndexNoCheck(RelX, a_BlockY, RelZ);
|
||||
for (cCoordWithIntVector::iterator itr = Blocks.begin(), end = Blocks.end(); itr != end; ++itr)
|
||||
{
|
||||
if ((itr->x == RelX) && (itr->y == a_BlockY) && (itr->z == RelZ))
|
||||
if ((itr->Data == Index))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
++m_TotalBlocks;
|
||||
Blocks.push_back(cCoordWithInt(RelX, a_BlockY, RelZ));
|
||||
Blocks.push_back(cCoordWithInt(RelX, a_BlockY, RelZ, Index));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,9 @@ public:
|
||||
cDelayedFluidSimulatorChunkData(int a_TickDelay);
|
||||
virtual ~cDelayedFluidSimulatorChunkData();
|
||||
|
||||
/// Slots, one for each delay tick, each containing the blocks to simulate; relative coords. Int param not used.
|
||||
/** Slots, one for each delay tick, each containing the blocks to simulate; relative coords.
|
||||
Int param is the block index (for faster duplicate comparison in cDelayedFluidSimulator::AddBlock())
|
||||
*/
|
||||
cCoordWithIntVector * m_Slots;
|
||||
} ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user