From 68cced73afe546328cf94ed07c57deee47bfadec Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sun, 20 Sep 2020 14:50:52 +0100 Subject: BlockHandler initialisation is a constant expression (#4891) * BlockHandler initialisation is a constant expression If we can't make it all namespaces, this is the next best I guess. + Tag handlers constexpr, const as needed + Inherit constructors * Privatise handler functions * More constexpr Co-authored-by: Alexander Harkness --- src/Entities/Player.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/Entities/Player.cpp') diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index d9353f67f..95b231d04 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -2849,11 +2849,10 @@ bool cPlayer::DoesPlacingBlocksIntersectEntity(const sSetBlockVector & a_Blocks) bool HasInitializedBounds = false; for (auto blk: a_Blocks) { - cBlockHandler * BlockHandler = cBlockInfo::GetHandler(blk.m_BlockType); int x = blk.GetX(); int y = blk.GetY(); int z = blk.GetZ(); - cBoundingBox BlockBox = BlockHandler->GetPlacementCollisionBox( + cBoundingBox BlockBox = cBlockHandler::For(blk.m_BlockType).GetPlacementCollisionBox( m_World->GetBlock(x - 1, y, z), m_World->GetBlock(x + 1, y, z), (y == 0) ? E_BLOCK_AIR : m_World->GetBlock(x, y - 1, z), @@ -2941,8 +2940,7 @@ bool cPlayer::PlaceBlocks(const sSetBlockVector & a_Blocks) m_World->PlaceBlock(blk.GetAbsolutePos(), blk.m_BlockType, blk.m_BlockMeta); // Notify the blockhandlers: - cBlockHandler * newBlock = BlockHandler(blk.m_BlockType); - newBlock->OnPlacedByPlayer(ChunkInterface, *m_World, *this, blk); + cBlockHandler::For(blk.m_BlockType).OnPlacedByPlayer(ChunkInterface, *m_World, *this, blk); // Call the "placed" hooks: pm->CallHookPlayerPlacedBlock(*this, blk); -- cgit v1.2.3