1
0

Merge pull request #2985 from marvinkopf/poweredrail

Update RedstoneSimulator to delete unused cached PowerData
This commit is contained in:
Tiger Wang 2016-02-09 22:02:50 +00:00
commit 3c272b55ea
2 changed files with 10 additions and 1 deletions

View File

@ -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;
}

View File

@ -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);