From 93adbdce9a769b42baeb70f9ead5c7c6a35834b5 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sat, 12 Sep 2020 19:57:44 +0100 Subject: Use tracing for explosions (#4845) * TNT: Implement tracing algorithm + Add intensity tracing * Fix iterating over all players to SendExplosion, even those not in range * Implemented TNT entity interaction * Fixed misaligned destruction tracing * Finalise TNT algorithm - Remove BlockArea and just use chunks Using SetBlock makes it so that we can update everything properly, and does appear to be faster. * BlockInfo learns about explosion attentuation * Rename Explodinator parameters * TNT: pull block destruction into common function Co-authored-by: Alexander Harkness --- src/Simulator/SandSimulator.cpp | 46 ++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'src/Simulator/SandSimulator.cpp') diff --git a/src/Simulator/SandSimulator.cpp b/src/Simulator/SandSimulator.cpp index 95f514cc9..72b1a8378 100644 --- a/src/Simulator/SandSimulator.cpp +++ b/src/Simulator/SandSimulator.cpp @@ -74,29 +74,6 @@ void cSandSimulator::SimulateChunk(std::chrono::milliseconds a_Dt, int a_ChunkX, -bool cSandSimulator::IsAllowedBlock(BLOCKTYPE a_BlockType) -{ - switch (a_BlockType) - { - case E_BLOCK_ANVIL: - case E_BLOCK_CONCRETE_POWDER: - case E_BLOCK_DRAGON_EGG: - case E_BLOCK_GRAVEL: - case E_BLOCK_SAND: - { - return true; - } - default: - { - return false; - } - } -} - - - - - void cSandSimulator::AddBlock(cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_Block) { if (!IsAllowedBlock(a_Block)) @@ -286,6 +263,29 @@ void cSandSimulator::FinishFalling( +bool cSandSimulator::IsAllowedBlock(BLOCKTYPE a_BlockType) +{ + switch (a_BlockType) + { + case E_BLOCK_ANVIL: + case E_BLOCK_CONCRETE_POWDER: + case E_BLOCK_DRAGON_EGG: + case E_BLOCK_GRAVEL: + case E_BLOCK_SAND: + { + return true; + } + default: + { + return false; + } + } +} + + + + + void cSandSimulator::DoInstantFall(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_RelZ) { // Remove the original block: -- cgit v1.2.3