Changed DelayedFluidSimulatorData to be a vector rather than a list, performance doubled :)
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1268 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
cf3f09e9c1
commit
e18e539ad2
@ -540,6 +540,7 @@ public:
|
||||
// Illegal in C++03: typedef std::list< cCoordWithData<X> > cCoordWithDataList<X>;
|
||||
typedef cCoordWithData<int> cCoordWithInt;
|
||||
typedef std::list<cCoordWithInt> cCoordWithIntList;
|
||||
typedef std::vector<cCoordWithInt> cCoordWithIntVector;
|
||||
|
||||
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
// cDelayedFluidSimulatorChunkData:
|
||||
|
||||
cDelayedFluidSimulatorChunkData::cDelayedFluidSimulatorChunkData(int a_TickDelay) :
|
||||
m_Slots(new cCoordWithIntList[a_TickDelay])
|
||||
m_Slots(new cCoordWithIntVector[a_TickDelay])
|
||||
{
|
||||
}
|
||||
|
||||
@ -75,10 +75,10 @@ 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;
|
||||
cCoordWithIntList & Blocks = ChunkData->m_Slots[m_AddSlotNum];
|
||||
cCoordWithIntVector & Blocks = ChunkData->m_Slots[m_AddSlotNum];
|
||||
|
||||
// Check for duplicates:
|
||||
for (cCoordWithIntList::iterator itr = Blocks.begin(), end = Blocks.end(); itr != end; ++itr)
|
||||
for (cCoordWithIntVector::iterator itr = Blocks.begin(), end = Blocks.end(); itr != end; ++itr)
|
||||
{
|
||||
if ((itr->x == RelX) && (itr->y == a_BlockY) && (itr->z == RelZ))
|
||||
{
|
||||
@ -112,10 +112,10 @@ void cDelayedFluidSimulator::SimulateChunk(float a_Dt, int a_ChunkX, int a_Chunk
|
||||
{
|
||||
void * ChunkDataRaw = (m_FluidBlock == E_BLOCK_WATER) ? a_Chunk->GetWaterSimulatorData() : a_Chunk->GetLavaSimulatorData();
|
||||
cDelayedFluidSimulatorChunkData * ChunkData = (cDelayedFluidSimulatorChunkData *)ChunkDataRaw;
|
||||
cCoordWithIntList & Blocks = ChunkData->m_Slots[m_SimSlotNum];
|
||||
cCoordWithIntVector & Blocks = ChunkData->m_Slots[m_SimSlotNum];
|
||||
|
||||
// Simulate the blocks in the scheduled slot:
|
||||
for (cCoordWithIntList::iterator itr = Blocks.begin(), end = Blocks.end(); itr != end; ++itr)
|
||||
for (cCoordWithIntVector::iterator itr = Blocks.begin(), end = Blocks.end(); itr != end; ++itr)
|
||||
{
|
||||
SimulateBlock(a_Chunk, itr->x, itr->y, itr->z);
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
virtual ~cDelayedFluidSimulatorChunkData();
|
||||
|
||||
/// Slots, one for each delay tick, each containing the blocks to simulate; relative coords. Int param not used.
|
||||
cCoordWithIntList * m_Slots;
|
||||
cCoordWithIntVector * m_Slots;
|
||||
} ;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user