summaryrefslogtreecommitdiffstats
path: root/src/Simulator/SimulatorManager.h
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@outlook.com>2020-07-29 01:12:45 +0200
committerTiger Wang <ziwei.tiger@outlook.com>2020-08-02 16:52:06 +0200
commit99856df6869d32731e6fdcfeb1460297410f5820 (patch)
treec93afdb7dac377ff6c04732190a3efbe3a091c4b /src/Simulator/SimulatorManager.h
parentDo not impose redstone wakup penalty for all blocks (diff)
downloadcuberite-99856df6869d32731e6fdcfeb1460297410f5820.tar
cuberite-99856df6869d32731e6fdcfeb1460297410f5820.tar.gz
cuberite-99856df6869d32731e6fdcfeb1460297410f5820.tar.bz2
cuberite-99856df6869d32731e6fdcfeb1460297410f5820.tar.lz
cuberite-99856df6869d32731e6fdcfeb1460297410f5820.tar.xz
cuberite-99856df6869d32731e6fdcfeb1460297410f5820.tar.zst
cuberite-99856df6869d32731e6fdcfeb1460297410f5820.zip
Diffstat (limited to 'src/Simulator/SimulatorManager.h')
-rw-r--r--src/Simulator/SimulatorManager.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Simulator/SimulatorManager.h b/src/Simulator/SimulatorManager.h
index 98a60b4ee..b5f54381c 100644
--- a/src/Simulator/SimulatorManager.h
+++ b/src/Simulator/SimulatorManager.h
@@ -28,26 +28,30 @@ class cWorld;
class cSimulatorManager
{
public:
+
cSimulatorManager(cWorld & a_World);
~cSimulatorManager();
+ /** Called in each tick, a_Dt is the time passed since the last tick, in msec. */
void Simulate(float a_Dt);
+ /** Called in each tick for each chunk, a_Dt is the time passed since the last tick, in msec; direct access to chunk data available. */
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(Vector3i a_Block, cChunk * a_Chunk);
+ /* Called when a single block changes, wakes all simulators up for the block.
+ The simulator implementation may also decide to wake the block's face-neighbors or blocks farther away. */
+ void WakeUp(cChunk & a_Chunk, Vector3i a_Position);
/** 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);
+ Note that, unlike WakeUp(), this call adds blocks not only face-neighboring, but also edge-neighboring and corner-neighboring the specified area. */
+ void WakeUp(const cCuboid & a_Area);
void RegisterSimulator(cSimulator * a_Simulator, int a_Rate); // Takes ownership of the simulator object!
protected:
+
typedef std::vector <std::pair<cSimulator *, int> > cSimulators;
cWorld & m_World;