summaryrefslogtreecommitdiffstats
path: root/source/BoundingBox.h
blob: 5a07df20ed9f020cc9978310865350a9efc29929 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

// BoundingBox.h

// Declares the cBoundingBox class representing an axis-aligned bounding box with floatingpoint coords




#pragma once

#include "Vector3d.h"





// tolua_begin

class cBoundingBox
{
public:
	cBoundingBox(double a_MinX, double a_MaxX, double a_MinY, double a_MaxY, double a_MinZ, double a_MaxZ);
	cBoundingBox(const Vector3d & a_Min, const Vector3d & a_Max);
	cBoundingBox(const Vector3d & a_Pos, double a_Radius, double a_Height);
	cBoundingBox(const cBoundingBox & a_Orig);
	
	/// Moves the entire boundingbox by the specified offset
	void Move(double a_OffX, double a_OffY, double a_OffZ);
	
	/// Moves the entire boundingbox by the specified offset
	void Move(const Vector3d & a_Off);
	
	/// Expands the bounding box by the specified amount in each direction (so the box becomes larger by 2 * Expand in each direction)
	void Expand(double a_ExpandX, double a_ExpandY, double a_ExpandZ);
	
	/// Returns true if the two bounding boxes intersect
	bool DoesIntersect(const cBoundingBox & a_Other);
	
	/// Returns the union of the two bounding boxes
	cBoundingBox Union(const cBoundingBox & a_Other);
	
	/// Returns true if the point is inside the bounding box
	bool IsInside(const Vector3d & a_Point);
	
	/// Returns true if the point is inside the bounding box
	bool IsInside(double a_X, double a_Y,double a_Z);
	
	/// Returns true if a_Other is inside this bounding box
	bool IsInside(cBoundingBox & a_Other);
	
	/// Returns true if a boundingbox specified by a_Min and a_Max is inside this bounding box
	bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max);
	
	// tolua_end
	
	/// Calculates the intersection of the two bounding boxes; returns true if nonempty
	bool Intersect(const cBoundingBox & a_Other, cBoundingBox & a_Intersection);
	
protected:
	Vector3d m_Min;
	Vector3d m_Max;
	
} ;  // tolua_export