From e7fba08e6cbba1801dd45ad4c14ea743b7743e84 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Fri, 10 Jan 2014 20:31:05 +0000 Subject: Major refactoring of redstone This commit is a refactoring of the redstone code, mainly the functions handling the removal of invalid blocks from power supplier data structures. Its aim is to improve performance and potentially reduce the memory footprint of the data structures. It works to reduce the amount of GetBlock()s triggered every tick. Before, a GetBlock() was requested for every single item in the data lists, as well as for every single redstone block in a chunk. Following these changes, the AddBlock() event is utilised more effectively to only update the lists when needed (a block is changed), as well as to insert the block type (and update it when needed) alongside the coordinates into the main redstone simulator chunkdata list. In short, a single GetBlock() is now cached, with this cache being updated when the simulator is awoken due to a block change. At least, I *hope* that this is what it does :P --- src/ChunkDef.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/ChunkDef.h') diff --git a/src/ChunkDef.h b/src/ChunkDef.h index 7d727a4d4..3df575732 100644 --- a/src/ChunkDef.h +++ b/src/ChunkDef.h @@ -610,8 +610,10 @@ public: // Illegal in C++03: typedef std::list< cCoordWithData > cCoordWithDataList; typedef cCoordWithData cCoordWithInt; +typedef cCoordWithData cCoordWithBlock; typedef std::list cCoordWithIntList; typedef std::vector cCoordWithIntVector; +typedef std::vector cCoordWithBlockVector; -- cgit v1.2.3