From 4e5ab02a589582e2fa908909e3ee30360dd08be5 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sun, 26 Jul 2020 14:15:00 +0100 Subject: Use SimulateChunk in redstone simulator + Improved performance, reduces bottleneck in chunkmap lookup * Stop allocating and throwing away lots of small vectors in Update/GetValidSourcePositions return values - Remove unused GetPowerLevel virtual --- src/Blocks/BlockComparator.h | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'src/Blocks/BlockComparator.h') diff --git a/src/Blocks/BlockComparator.h b/src/Blocks/BlockComparator.h index a2f2d430d..ba939b41f 100644 --- a/src/Blocks/BlockComparator.h +++ b/src/Blocks/BlockComparator.h @@ -34,10 +34,13 @@ public: const Vector3i a_CursorPos ) override { + const auto Meta = a_ChunkInterface.GetBlockMeta(a_BlockPos); + // Toggle the 3rd bit (addition / subtraction): - NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockPos); - Meta ^= 0x04; - a_ChunkInterface.SetBlockMeta(a_BlockPos, Meta); + a_ChunkInterface.SetBlockMeta(a_BlockPos, Meta ^ 0x04); + + // Update simulators: + a_WorldInterface.WakeUpSimulators(a_BlockPos); return true; } @@ -56,6 +59,7 @@ public: UNUSED(a_ChunkInterface); UNUSED(a_BlockFace); + a_WorldInterface.WakeUpSimulators(a_BlockPos); a_WorldInterface.SendBlockTo(a_BlockPos, a_Player); } @@ -120,15 +124,6 @@ public: - inline static bool IsOn(NIBBLETYPE a_Meta) - { - return ((a_Meta & 0x8) == 0x8); - } - - - - - inline static Vector3i GetSideCoordinate(Vector3i a_Position, NIBBLETYPE a_Meta, bool a_bInverse) { if (!a_bInverse) -- cgit v1.2.3