From e8aa03f8df037f60e4f9e6a34ac05f21bfe3c2cd Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Wed, 20 Mar 2013 20:45:52 +0000 Subject: DelayedFluidSimulator: optimized block storage for large amounts of blocks. Speeds up chunk generation by 15 %. Expected to speed up fluid simulation, unmeasured. git-svn-id: http://mc-server.googlecode.com/svn/trunk@1293 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/Simulator/DelayedFluidSimulator.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'source/Simulator/DelayedFluidSimulator.h') diff --git a/source/Simulator/DelayedFluidSimulator.h b/source/Simulator/DelayedFluidSimulator.h index 5f8c6e073..6f7433877 100644 --- a/source/Simulator/DelayedFluidSimulator.h +++ b/source/Simulator/DelayedFluidSimulator.h @@ -19,13 +19,26 @@ class cDelayedFluidSimulatorChunkData : public cFluidSimulatorData { public: + class cSlot + { + public: + /// Returns true if the specified block is stored + bool HasBlock(int a_RelX, int a_RelY, int a_RelZ); + + /// Adds the specified block unless already present; returns true if added, false if the block was already present + bool Add(int a_RelX, int a_RelY, int a_RelZ); + + /** Array of block containers, each item stores blocks for one Z coord + Int param is the block index (for faster duplicate comparison in Add()) + */ + cCoordWithIntVector m_Blocks[16]; + } ; + cDelayedFluidSimulatorChunkData(int a_TickDelay); virtual ~cDelayedFluidSimulatorChunkData(); - /** 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; + /// Slots, one for each delay tick, each containing the blocks to simulate + cSlot * m_Slots; } ; -- cgit v1.2.3