Game Development Reference

In-Depth Information

BoundingBoxCoords[6] =

Canvas.Project(BoundingBoxCoords[6]);

/** X2, Y2 */

BoundingBoxCoords[7].X = CompBBox.Max.X;

BoundingBoxCoords[7].Y = CompBBox.Max.Y;

BoundingBoxCoords[7].Z = CompBBox.Max.Z;

oundingBoxCoords[7] =

Canvas.Project(BoundingBoxCoords[7]);

The
CompBBox
variable is a box that grabs the actor's bounding box, as definied

at the beginning of the function with the line
Actor.GetComponentsBoundingBox

(CompBBox);
.

The next step has us creating an array for each corner of our box. We need a

vector for our rectangle in the previous function to draw at. We get this vector,

BoundingBoxCoordinates
by using the values of our actor's bounding box. The

first array sets
BoundingBoxCoords.X
to be equal to the minimum
X
value for

our pawn's bounding box, as found in the
Object
class. We do this for the
Y
and
Z

variables as well, before finally combining them all and using
Canvas.Project

to convert the 3D coordinates to 2D ones.

8.

Now we have to locate the top, bottom, left, and right coordinates for the pawn's

bounding box. Using the edge of the canvas we find the minimum values for

our
X
and
Y
variables, and set the max values to be zero.

/* Locates left, top, right & bottom coords */

OutBox.Min.X = Canvas.ClipX;

OutBox.Min.Y = Canvas.ClipY;

OutBox.Max.X = 0;

OutBox.Max.Y = 0;

9. The final step has us iterating through our outside box coordinates to detect the

smallest and largest coordinates. We do this by comparing the
X
and
Y
values

of our pawn's bounding box. We return the value of
Outbox
, which is what we

used in our
RenderBoundingBox()
function.

/** Iterate though bounding box coordinates */

for (i = 0; i < ArrayCount(BoundingBoxCoords); ++i)

{

/** Detect the smallest X coords */

if (OutBox.Min.X > BoundingBoxCoords[i].X)

{

OutBox.Min.X = BoundingBoxCoords[i].X;

}

/** Detect the smallest Y coords */