From 40eba5244ddd7045a9c3539c5f46c9921301ed90 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sat, 8 Aug 2020 18:22:16 +0100 Subject: Remove the redstone solid block handler - Remove cSolidBlockHandler * Functionality now integrated into simulator dispatcher * Fix door double open/close issues, arisen due to the top/bottom halves getting different power + Small migration to block states for redstone wire --- .../IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h') diff --git a/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h b/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h index eb5dfc92d..f8e7eb466 100644 --- a/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h +++ b/src/Simulator/IncrementalRedstoneSimulator/RedstoneSimulatorChunkData.h @@ -4,6 +4,7 @@ #include #include "../RedstoneSimulator.h" +#include "../../Chunk.h" @@ -53,7 +54,7 @@ public: -class cIncrementalRedstoneSimulatorChunkData : public cRedstoneSimulatorChunkData +class cIncrementalRedstoneSimulatorChunkData final : public cRedstoneSimulatorChunkData { public: @@ -90,6 +91,7 @@ public: m_CachedPowerLevels.erase(Position); m_MechanismDelays.erase(Position); AlwaysTickedPositions.erase(Position); + WireStates.erase(Position); } PoweringData ExchangeUpdateOncePowerData(const Vector3i & a_Position, PoweringData a_PoweringData) @@ -105,7 +107,7 @@ public: } /** Adjust From-relative coordinates into To-relative coordinates. */ - inline static Vector3i RebaseRelativePosition(cChunk & From, cChunk & To, const Vector3i Position) + inline static Vector3i RebaseRelativePosition(const cChunk & From, const cChunk & To, const Vector3i Position) { return { @@ -115,9 +117,12 @@ public: }; } + /** Temporary, should be chunk data: wire block store, to avoid recomputing states every time. */ + std::unordered_map> WireStates; + std::unordered_set> AlwaysTickedPositions; - /** Structure storing position of mechanism + it's delay ticks (countdown) & if to power on */ + /** Structure storing position of mechanism + it's delay ticks (countdown) & if to power on. */ std::unordered_map, VectorHasher> m_MechanismDelays; private: -- cgit v1.2.3