From 5402b214b31af60bc96cd4e47e9211715c3e99f5 Mon Sep 17 00:00:00 2001 From: Lane Kolbly Date: Fri, 28 Jul 2017 11:59:21 -0500 Subject: Check for intersection between placed blocks and entities. (#3850) * Check for intersection between placed blocks and entities. + Implemented GetPlacementCollisionBox, to permit custom placement collision boxes for blocks. * Factored block-entity placement checking into another function in cPlayer. - Removed vector min/max functions * Use GetWorld to get the world in DoesPlacingBlocksIntersectEntity. + Added block height checks, allow different cEntity subclasses to decide whether they will prevent block placement. --- src/BoundingBox.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/BoundingBox.cpp') diff --git a/src/BoundingBox.cpp b/src/BoundingBox.cpp index ecf810fa8..3e32fd3ef 100644 --- a/src/BoundingBox.cpp +++ b/src/BoundingBox.cpp @@ -60,6 +60,17 @@ cBoundingBox::cBoundingBox(const cBoundingBox & a_Orig) : +cBoundingBox & cBoundingBox::operator=(const cBoundingBox & a_Other) +{ + m_Min = a_Other.m_Min; + m_Max = a_Other.m_Max; + return *this; +} + + + + + void cBoundingBox::Move(double a_OffX, double a_OffY, double a_OffZ) { m_Min.x += a_OffX; @@ -119,10 +130,10 @@ cBoundingBox cBoundingBox::Union(const cBoundingBox & a_Other) { return cBoundingBox( std::min(m_Min.x, a_Other.m_Min.x), - std::min(m_Min.y, a_Other.m_Min.y), - std::min(m_Min.z, a_Other.m_Min.z), std::max(m_Max.x, a_Other.m_Max.x), + std::min(m_Min.y, a_Other.m_Min.y), std::max(m_Max.y, a_Other.m_Max.y), + std::min(m_Min.z, a_Other.m_Min.z), std::max(m_Max.z, a_Other.m_Max.z) ); } -- cgit v1.2.3