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 --- .../SolidBlockHandler.h | 62 ---------------------- 1 file changed, 62 deletions(-) delete mode 100644 src/Simulator/IncrementalRedstoneSimulator/SolidBlockHandler.h (limited to 'src/Simulator/IncrementalRedstoneSimulator/SolidBlockHandler.h') diff --git a/src/Simulator/IncrementalRedstoneSimulator/SolidBlockHandler.h b/src/Simulator/IncrementalRedstoneSimulator/SolidBlockHandler.h deleted file mode 100644 index abf8dc63b..000000000 --- a/src/Simulator/IncrementalRedstoneSimulator/SolidBlockHandler.h +++ /dev/null @@ -1,62 +0,0 @@ - -#pragma once - -#include "RedstoneHandler.h" - - - - - -class cSolidBlockHandler: - public cRedstoneHandler -{ - using Super = cRedstoneHandler; - -public: - - virtual unsigned char GetPowerDeliveredToPosition(cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, Vector3i a_QueryPosition, BLOCKTYPE a_QueryBlockType) const override - { - const auto SolidBlock = DataForChunk(a_Chunk).GetCachedPowerData(a_Position); - return ( - !cIncrementalRedstoneSimulator::IsRedstone(a_QueryBlockType) || - ( - (a_QueryBlockType == E_BLOCK_REDSTONE_WIRE) && - (SolidBlock.PoweringBlock == E_BLOCK_REDSTONE_WIRE) - ) - ) ? 0 : SolidBlock.PowerLevel; - } - - virtual void Update(cChunk & a_Chunk, cChunk & CurrentlyTicking, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, PoweringData a_PoweringData) const override - { - UNUSED(a_BlockType); - UNUSED(a_Meta); - // LOGD("Evaluating blocky the generic block (%d %d %d)", a_Position.x, a_Position.y, a_Position.z); - - auto PreviousPower = DataForChunk(a_Chunk).ExchangeUpdateOncePowerData(a_Position, a_PoweringData); - if ((a_PoweringData != PreviousPower) || (a_PoweringData.PoweringBlock != PreviousPower.PoweringBlock)) - { - UpdateAdjustedRelatives(a_Chunk, CurrentlyTicking, a_Position, RelativeAdjacents); - } - } - - virtual void ForValidSourcePositions(cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, SourceCallback Callback) const override - { - UNUSED(a_Chunk); - UNUSED(a_BlockType); - UNUSED(a_Meta); - - /* TODO: is this more performant? - cVector3iArray Adjacents; - for (const auto Offset : GetRelativeAdjacents()) - { - auto Position = Offset + a_Position; - auto Block = m_World.GetBlock(Position); - if ((Block == E_BLOCK_REDSTONE_REPEATER_ON) || (Block == E_BLOCK_REDSTONE_WIRE) || (Block == E_BLOCK_TRIPWIRE_HOOK)) - { - Adjacents.emplace_back(Position); - } - } - */ - InvokeForAdjustedRelatives(Callback, a_Position, RelativeAdjacents); - } -}; -- cgit v1.2.3