diff options
author | Marvin Kopf <marvinkopf@posteo.de> | 2016-02-07 15:27:24 +0100 |
---|---|---|
committer | Marvin Kopf <marvinkopf@posteo.de> | 2016-02-09 22:19:29 +0100 |
commit | af514acd8c4af3ed1fb03fae3c0c612d7e472a7c (patch) | |
tree | c4ebfd7a0b1bf673ae9b12b0efa308c8bdae7763 /src/Simulator/IncrementalRedstoneSimulator | |
parent | Merge pull request #2981 from Drahoslav7/master (diff) | |
download | cuberite-af514acd8c4af3ed1fb03fae3c0c612d7e472a7c.tar cuberite-af514acd8c4af3ed1fb03fae3c0c612d7e472a7c.tar.gz cuberite-af514acd8c4af3ed1fb03fae3c0c612d7e472a7c.tar.bz2 cuberite-af514acd8c4af3ed1fb03fae3c0c612d7e472a7c.tar.lz cuberite-af514acd8c4af3ed1fb03fae3c0c612d7e472a7c.tar.xz cuberite-af514acd8c4af3ed1fb03fae3c0c612d7e472a7c.tar.zst cuberite-af514acd8c4af3ed1fb03fae3c0c612d7e472a7c.zip |
Diffstat (limited to 'src/Simulator/IncrementalRedstoneSimulator')
-rw-r--r-- | src/Simulator/IncrementalRedstoneSimulator/IncrementalRedstoneSimulator.cpp | 5 | ||||
-rw-r--r-- | src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/Simulator/IncrementalRedstoneSimulator/IncrementalRedstoneSimulator.cpp b/src/Simulator/IncrementalRedstoneSimulator/IncrementalRedstoneSimulator.cpp index 3c79d152b..0e9621910 100644 --- a/src/Simulator/IncrementalRedstoneSimulator/IncrementalRedstoneSimulator.cpp +++ b/src/Simulator/IncrementalRedstoneSimulator/IncrementalRedstoneSimulator.cpp @@ -125,8 +125,11 @@ void cIncrementalRedstoneSimulator::Simulate(float a_dt) } auto CurrentHandler = cIncrementalRedstoneSimulator::CreateComponent(m_World, CurrentBlock, &m_Data); - if (CurrentHandler == nullptr) + if (CurrentHandler == nullptr) // Block at CurrentPosition doesn't have a corresponding redstone handler { + // Clean up cached PowerData for CurrentPosition + static_cast<cIncrementalRedstoneSimulator *>(m_World.GetRedstoneSimulator())->GetChunkData()->ErasePowerData(CurrentLocation); + continue; } diff --git a/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h b/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h index 8e025d154..b461512f0 100644 --- a/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h +++ b/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h @@ -41,6 +41,12 @@ public: return (Result == m_MechanismDelays.end()) ? nullptr : &Result->second; } + /** Erase cached PowerData for position */ + void ErasePowerData(const Vector3i & a_Position) + { + m_CachedPowerLevels.erase(a_Position); + } + cRedstoneHandler::PoweringData ExchangeUpdateOncePowerData(const Vector3i & a_Position, cRedstoneHandler::PoweringData a_PoweringData) { auto Result = m_CachedPowerLevels.find(a_Position); |