diff options
author | Tiger Wang <ziwei.tiger@outlook.com> | 2016-02-09 23:02:50 +0100 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@outlook.com> | 2016-02-09 23:02:50 +0100 |
commit | 3c272b55ea1239238ad9726bba9f7dc8b130e545 (patch) | |
tree | 1132b156ca24e691a1c3306b8eb81ba296c6f2f6 | |
parent | Merge pull request #2996 from LogicParrot/message2 (diff) | |
parent | Update RedstoneSimulator to delete unused cached PowerData (diff) | |
download | cuberite-3c272b55ea1239238ad9726bba9f7dc8b130e545.tar cuberite-3c272b55ea1239238ad9726bba9f7dc8b130e545.tar.gz cuberite-3c272b55ea1239238ad9726bba9f7dc8b130e545.tar.bz2 cuberite-3c272b55ea1239238ad9726bba9f7dc8b130e545.tar.lz cuberite-3c272b55ea1239238ad9726bba9f7dc8b130e545.tar.xz cuberite-3c272b55ea1239238ad9726bba9f7dc8b130e545.tar.zst cuberite-3c272b55ea1239238ad9726bba9f7dc8b130e545.zip |
-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); |