1
0

Simulators: Added area-based wakeup.

This commit is contained in:
Mattes D
2017-07-14 16:18:33 +02:00
committed by Lukas Pioch
parent 41d016cf5b
commit 167c4bf2e6
9 changed files with 93 additions and 56 deletions

View File

@@ -35,8 +35,16 @@ public:
void SimulateChunk(std::chrono::milliseconds a_DT, int a_ChunkX, int a_ChunkZ, cChunk * a_Chunk);
/* Called when a single block changes, wakes all simulators up for the block and its face-neighbors. */
void WakeUp(int a_BlockX, int a_BlockY, int a_BlockZ, cChunk * a_Chunk);
/** Does the same processing as WakeUp, but for all blocks within the specified area.
Has better performance than calling WakeUp for each block individually, due to neighbor-checking.
All chunks intersected by the area should be valid (outputs a warning if not).
Note that, unlike WakeUp(), this call adds blocks not only face-neighboring, but also edge-neighboring and
corner-neighboring the specified area. So far none of the simulators care about that. */
void WakeUpArea(const cCuboid & a_Area);
void RegisterSimulator(cSimulator * a_Simulator, int a_Rate); // Takes ownership of the simulator object!
protected: