aboutsummaryrefslogtreecommitdiff
path: root/mp/src/utils/vbsp/boundbox.cpp
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /mp/src/utils/vbsp/boundbox.cpp
parentMark some more files as text. (diff)
downloadsource-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz
source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/utils/vbsp/boundbox.cpp')
-rw-r--r--mp/src/utils/vbsp/boundbox.cpp570
1 files changed, 285 insertions, 285 deletions
diff --git a/mp/src/utils/vbsp/boundbox.cpp b/mp/src/utils/vbsp/boundbox.cpp
index d0366cfc..ecb8dfa0 100644
--- a/mp/src/utils/vbsp/boundbox.cpp
+++ b/mp/src/utils/vbsp/boundbox.cpp
@@ -1,285 +1,285 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-
-#include "vbsp.h"
-#include "BoundBox.h"
-//#include "hammer_mathlib.h"
-//#include "MapDefs.h"
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include "tier0/memdbgon.h"
-
-
-float rint(float f)
-{
- if (f > 0.0f) {
- return (float) floor(f + 0.5f);
- } else if (f < 0.0f) {
- return (float) ceil(f - 0.5f);
- } else
- return 0.0f;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-BoundBox::BoundBox(void)
-{
- ResetBounds();
-}
-
-BoundBox::BoundBox(const Vector &mins, const Vector &maxs)
-{
- bmins = mins;
- bmaxs = maxs;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Sets the box to an uninitialized state, so that calls to UpdateBounds
-// will properly set the mins and maxs.
-//-----------------------------------------------------------------------------
-void BoundBox::ResetBounds(void)
-{
- bmins[0] = bmins[1] = bmins[2] = COORD_NOTINIT;
- bmaxs[0] = bmaxs[1] = bmaxs[2] = -COORD_NOTINIT;
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : pt -
-//-----------------------------------------------------------------------------
-void BoundBox::UpdateBounds(const Vector& pt)
-{
- if(pt[0] < bmins[0])
- bmins[0] = pt[0];
- if(pt[1] < bmins[1])
- bmins[1] = pt[1];
- if(pt[2] < bmins[2])
- bmins[2] = pt[2];
-
- if(pt[0] > bmaxs[0])
- bmaxs[0] = pt[0];
- if(pt[1] > bmaxs[1])
- bmaxs[1] = pt[1];
- if(pt[2] > bmaxs[2])
- bmaxs[2] = pt[2];
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : bmins -
-// bmaxs -
-//-----------------------------------------------------------------------------
-void BoundBox::UpdateBounds(const Vector& mins, const Vector& maxs)
-{
- if(mins[0] < bmins[0])
- bmins[0] = mins[0];
- if(mins[1] < bmins[1])
- bmins[1] = mins[1];
- if(mins[2] < bmins[2])
- bmins[2] = mins[2];
-
- if(maxs[0] > bmaxs[0])
- bmaxs[0] = maxs[0];
- if(maxs[1] > bmaxs[1])
- bmaxs[1] = maxs[1];
- if(maxs[2] > bmaxs[2])
- bmaxs[2] = maxs[2];
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : pBox -
-//-----------------------------------------------------------------------------
-void BoundBox::UpdateBounds(const BoundBox *pBox)
-{
- UpdateBounds(pBox->bmins, pBox->bmaxs);
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : ptdest -
-//-----------------------------------------------------------------------------
-void BoundBox::GetBoundsCenter(Vector& ptdest)
-{
- ptdest = (bmins + bmaxs)/2.0f;
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : pt -
-// Output : Returns true on success, false on failure.
-//-----------------------------------------------------------------------------
-bool BoundBox::ContainsPoint(const Vector& pt) const
-{
- for (int i = 0; i < 3; i++)
- {
- if (pt[i] < bmins[i] || pt[i] > bmaxs[i])
- {
- return(false);
- }
- }
- return(true);
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : pfMins -
-// pfMaxs -
-// Output : Returns true on success, false on failure.
-//-----------------------------------------------------------------------------
-bool BoundBox::IsIntersectingBox(const Vector& pfMins, const Vector& pfMaxs) const
-{
- if ((bmins[0] >= pfMaxs[0]) || (bmaxs[0] <= pfMins[0]))
- {
- return(false);
-
- }
- if ((bmins[1] >= pfMaxs[1]) || (bmaxs[1] <= pfMins[1]))
- {
- return(false);
- }
-
- if ((bmins[2] >= pfMaxs[2]) || (bmaxs[2] <= pfMins[2]))
- {
- return(false);
- }
-
- return(true);
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : pfMins -
-// pfMaxs -
-// Output : Returns true on success, false on failure.
-//-----------------------------------------------------------------------------
-bool BoundBox::IsInsideBox(const Vector& pfMins, const Vector& pfMaxs) const
-{
- if ((bmins[0] < pfMins[0]) || (bmaxs[0] > pfMaxs[0]))
- {
- return(false);
- }
-
- if ((bmins[1] < pfMins[1]) || (bmaxs[1] > pfMaxs[1]))
- {
- return(false);
- }
-
- if ((bmins[2] < pfMins[2]) || (bmaxs[2] > pfMaxs[2]))
- {
- return(false);
- }
-
- return(true);
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Returns whether this bounding box is valid, ie maxs >= mins.
-//-----------------------------------------------------------------------------
-bool BoundBox::IsValidBox(void) const
-{
- for (int i = 0; i < 3; i++)
- {
- if (bmins[i] > bmaxs[i])
- {
- return(false);
- }
- }
-
- return(true);
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : size -
-//-----------------------------------------------------------------------------
-void BoundBox::GetBoundsSize(Vector& size)
-{
- size[0] = bmaxs[0] - bmins[0];
- size[1] = bmaxs[1] - bmins[1];
- size[2] = bmaxs[2] - bmins[2];
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : iValue -
-// iGridSize -
-// Output :
-//-----------------------------------------------------------------------------
-static int Snap(/*int*/ float iValue, int iGridSize)
-{
- return (int)(rint(iValue/iGridSize) * iGridSize);
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : iGridSize -
-//-----------------------------------------------------------------------------
-void BoundBox::SnapToGrid(int iGridSize)
-{
- // does not alter the size of the box .. snaps its minimal coordinates
- // to the grid size specified in iGridSize
- Vector size;
- GetBoundsSize(size);
-
- for(int i = 0; i < 3; i++)
- {
- bmins[i] = (float)Snap(/* YWB (int)*/bmins[i], iGridSize);
- bmaxs[i] = bmins[i] + size[i];
- }
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : axis -
-//-----------------------------------------------------------------------------
-void BoundBox::Rotate90(int axis)
-{
- int e1 = AXIS_X, e2 = AXIS_Y;
-
- // get bounds center first
- Vector center;
- GetBoundsCenter(center);
-
- switch(axis)
- {
- case AXIS_Z:
- e1 = AXIS_X;
- e2 = AXIS_Y;
- break;
- case AXIS_X:
- e1 = AXIS_Y;
- e2 = AXIS_Z;
- break;
- case AXIS_Y:
- e1 = AXIS_X;
- e2 = AXIS_Z;
- break;
- }
-
- float tmp1, tmp2;
- tmp1 = bmins[e1] - center[e1] + center[e2];
- tmp2 = bmaxs[e1] - center[e1] + center[e2];
- bmins[e1] = bmins[e2] - center[e2] + center[e1];
- bmaxs[e1] = bmaxs[e2] - center[e2] + center[e1];
- bmins[e2] = tmp1;
- bmaxs[e2] = tmp2;
-}
-
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "vbsp.h"
+#include "BoundBox.h"
+//#include "hammer_mathlib.h"
+//#include "MapDefs.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+
+float rint(float f)
+{
+ if (f > 0.0f) {
+ return (float) floor(f + 0.5f);
+ } else if (f < 0.0f) {
+ return (float) ceil(f - 0.5f);
+ } else
+ return 0.0f;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+BoundBox::BoundBox(void)
+{
+ ResetBounds();
+}
+
+BoundBox::BoundBox(const Vector &mins, const Vector &maxs)
+{
+ bmins = mins;
+ bmaxs = maxs;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Sets the box to an uninitialized state, so that calls to UpdateBounds
+// will properly set the mins and maxs.
+//-----------------------------------------------------------------------------
+void BoundBox::ResetBounds(void)
+{
+ bmins[0] = bmins[1] = bmins[2] = COORD_NOTINIT;
+ bmaxs[0] = bmaxs[1] = bmaxs[2] = -COORD_NOTINIT;
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : pt -
+//-----------------------------------------------------------------------------
+void BoundBox::UpdateBounds(const Vector& pt)
+{
+ if(pt[0] < bmins[0])
+ bmins[0] = pt[0];
+ if(pt[1] < bmins[1])
+ bmins[1] = pt[1];
+ if(pt[2] < bmins[2])
+ bmins[2] = pt[2];
+
+ if(pt[0] > bmaxs[0])
+ bmaxs[0] = pt[0];
+ if(pt[1] > bmaxs[1])
+ bmaxs[1] = pt[1];
+ if(pt[2] > bmaxs[2])
+ bmaxs[2] = pt[2];
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : bmins -
+// bmaxs -
+//-----------------------------------------------------------------------------
+void BoundBox::UpdateBounds(const Vector& mins, const Vector& maxs)
+{
+ if(mins[0] < bmins[0])
+ bmins[0] = mins[0];
+ if(mins[1] < bmins[1])
+ bmins[1] = mins[1];
+ if(mins[2] < bmins[2])
+ bmins[2] = mins[2];
+
+ if(maxs[0] > bmaxs[0])
+ bmaxs[0] = maxs[0];
+ if(maxs[1] > bmaxs[1])
+ bmaxs[1] = maxs[1];
+ if(maxs[2] > bmaxs[2])
+ bmaxs[2] = maxs[2];
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : pBox -
+//-----------------------------------------------------------------------------
+void BoundBox::UpdateBounds(const BoundBox *pBox)
+{
+ UpdateBounds(pBox->bmins, pBox->bmaxs);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : ptdest -
+//-----------------------------------------------------------------------------
+void BoundBox::GetBoundsCenter(Vector& ptdest)
+{
+ ptdest = (bmins + bmaxs)/2.0f;
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : pt -
+// Output : Returns true on success, false on failure.
+//-----------------------------------------------------------------------------
+bool BoundBox::ContainsPoint(const Vector& pt) const
+{
+ for (int i = 0; i < 3; i++)
+ {
+ if (pt[i] < bmins[i] || pt[i] > bmaxs[i])
+ {
+ return(false);
+ }
+ }
+ return(true);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : pfMins -
+// pfMaxs -
+// Output : Returns true on success, false on failure.
+//-----------------------------------------------------------------------------
+bool BoundBox::IsIntersectingBox(const Vector& pfMins, const Vector& pfMaxs) const
+{
+ if ((bmins[0] >= pfMaxs[0]) || (bmaxs[0] <= pfMins[0]))
+ {
+ return(false);
+
+ }
+ if ((bmins[1] >= pfMaxs[1]) || (bmaxs[1] <= pfMins[1]))
+ {
+ return(false);
+ }
+
+ if ((bmins[2] >= pfMaxs[2]) || (bmaxs[2] <= pfMins[2]))
+ {
+ return(false);
+ }
+
+ return(true);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : pfMins -
+// pfMaxs -
+// Output : Returns true on success, false on failure.
+//-----------------------------------------------------------------------------
+bool BoundBox::IsInsideBox(const Vector& pfMins, const Vector& pfMaxs) const
+{
+ if ((bmins[0] < pfMins[0]) || (bmaxs[0] > pfMaxs[0]))
+ {
+ return(false);
+ }
+
+ if ((bmins[1] < pfMins[1]) || (bmaxs[1] > pfMaxs[1]))
+ {
+ return(false);
+ }
+
+ if ((bmins[2] < pfMins[2]) || (bmaxs[2] > pfMaxs[2]))
+ {
+ return(false);
+ }
+
+ return(true);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Returns whether this bounding box is valid, ie maxs >= mins.
+//-----------------------------------------------------------------------------
+bool BoundBox::IsValidBox(void) const
+{
+ for (int i = 0; i < 3; i++)
+ {
+ if (bmins[i] > bmaxs[i])
+ {
+ return(false);
+ }
+ }
+
+ return(true);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : size -
+//-----------------------------------------------------------------------------
+void BoundBox::GetBoundsSize(Vector& size)
+{
+ size[0] = bmaxs[0] - bmins[0];
+ size[1] = bmaxs[1] - bmins[1];
+ size[2] = bmaxs[2] - bmins[2];
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : iValue -
+// iGridSize -
+// Output :
+//-----------------------------------------------------------------------------
+static int Snap(/*int*/ float iValue, int iGridSize)
+{
+ return (int)(rint(iValue/iGridSize) * iGridSize);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : iGridSize -
+//-----------------------------------------------------------------------------
+void BoundBox::SnapToGrid(int iGridSize)
+{
+ // does not alter the size of the box .. snaps its minimal coordinates
+ // to the grid size specified in iGridSize
+ Vector size;
+ GetBoundsSize(size);
+
+ for(int i = 0; i < 3; i++)
+ {
+ bmins[i] = (float)Snap(/* YWB (int)*/bmins[i], iGridSize);
+ bmaxs[i] = bmins[i] + size[i];
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : axis -
+//-----------------------------------------------------------------------------
+void BoundBox::Rotate90(int axis)
+{
+ int e1 = AXIS_X, e2 = AXIS_Y;
+
+ // get bounds center first
+ Vector center;
+ GetBoundsCenter(center);
+
+ switch(axis)
+ {
+ case AXIS_Z:
+ e1 = AXIS_X;
+ e2 = AXIS_Y;
+ break;
+ case AXIS_X:
+ e1 = AXIS_Y;
+ e2 = AXIS_Z;
+ break;
+ case AXIS_Y:
+ e1 = AXIS_X;
+ e2 = AXIS_Z;
+ break;
+ }
+
+ float tmp1, tmp2;
+ tmp1 = bmins[e1] - center[e1] + center[e2];
+ tmp2 = bmaxs[e1] - center[e1] + center[e2];
+ bmins[e1] = bmins[e2] - center[e2] + center[e1];
+ bmaxs[e1] = bmaxs[e2] - center[e2] + center[e1];
+ bmins[e2] = tmp1;
+ bmaxs[e2] = tmp2;
+}
+