Wraith  0.1.5
Basic 3D game engine in C++
CollisionVolumeOBB Class Reference

An OBB Collision volume More...

#include <CollisionVolumeOBB.h>

Inheritance diagram for CollisionVolumeOBB:
Inheritance graph
Collaboration diagram for CollisionVolumeOBB:
Collaboration graph

Public Member Functions

 CollisionVolumeOBB (const CollisionVolumeOBB &)=default
 
CollisionVolumeOBBoperator= (const CollisionVolumeOBB &)=default
 
 CollisionVolumeOBB (CollisionVolumeOBB &&)=default
 
CollisionVolumeOBBoperator= (CollisionVolumeOBB &&)=default
 
virtual void computeData (Model *pModel, const Matrix &worldMatrix) override
 Calculates the data for OBB. In this case the center. More...
 
void computeData (const Vect &minWorldVertex, const Vect &maxWorldVertex, const Matrix &worldMatrix)
 Calculates the data for OBB. In this case the center. More...
 
virtual bool intersectAccept (const CollisionVolume &collisionVolume) const override
 Accepts a collision volume to perform intersect test. More...
 
virtual bool intersectVisitor (const CollisionVolumeBSphere &collisionBSphere) const override
 Visits a collision volume BSphere to perform intersect test. More...
 
virtual bool intersectVisitor (const CollisionVolumeAABB &AABB) const override
 Visits a collision volume AABB to perform intersect test. More...
 
virtual bool intersectVisitor (const CollisionVolumeOBB &OBB) const override
 Visits a collision volume OBB to perform intersect test. More...
 
virtual bool intersectVisitor (const CollisionVolumeOctree &Octree) const override
 Visits a collision volume Octree to perform intersect test. More...
 
void setMinMaxLocalVertex (const Vect &minlocalVertex, const Vect &maxlocalVertex)
 Sets the minimum and maximum vertex in local space. More...
 
void setWorldMatrix (const Matrix &worldMatrix)
 Sets the world matrix. More...
 
const Matrix & getWorldMatrix () const
 Gets the world matrix of OBB. More...
 
const Matrix & getInverseWorldMatrix () const
 Gets the inverse world matrix of OBB. More...
 
const Vect & getMinLocalVertex () const
 Gets the minimum vertex in local space. More...
 
const Vect & getMaxLocalVertex () const
 Gets the maximum vertex in local space. More...
 
const Vect & getLocalHalfDiagonal () const
 Gets the half diagonal of OBB in local space. More...
 
const Vect & getWorldCenter () const
 Gets the center position of OBB in world space. More...
 
float getScalingFactorSquared () const
 Gets scaling factor sqaured of OBB. More...
 
virtual int getMaxDepth () const override
 
- Public Member Functions inherited from CollisionVolume
 CollisionVolume (const CollisionVolume &)=default
 
CollisionVolumeoperator= (const CollisionVolume &)=default
 
 CollisionVolume (CollisionVolume &&)=default
 
CollisionVolumeoperator= (CollisionVolume &&)=default
 

Private Member Functions

virtual void debugDraw (const Vect &color, int depth) const override
 Draws it collision volume. More...
 

Private Attributes

Matrix _worldMatrix
 
Matrix _inverseWorldMatrix
 
Vect _minLocalVertex
 
Vect _maxLocalVertex
 
Vect _localHalfDiagonal
 
Vect _worldCenter
 
float _scalingFactorSqaured
 

Detailed Description

An OBB Collision volume

Member Function Documentation

◆ computeData() [1/2]

void CollisionVolumeOBB::computeData ( const Vect &  minWorldVertex,
const Vect &  maxWorldVertex,
const Matrix &  worldMatrix 
)

Calculates the data for OBB. In this case the center.

Parameters
minWorldVertexThe min local vertex.
maxWorldVertexThe max local vertex.
worldMatrixThe world matrix.

◆ computeData() [2/2]

void CollisionVolumeOBB::computeData ( Model *  pModel,
const Matrix &  worldMatrix 
)
overridevirtual

Calculates the data for OBB. In this case the center.

Parameters
pModelthe pointer to a model.
worldMatrixThe world matrix.

Implements CollisionVolume.

◆ debugDraw()

void CollisionVolumeOBB::debugDraw ( const Vect &  color,
int  depth 
) const
overrideprivatevirtual

Draws it collision volume.

Used for debuggin purposes. Depth value is used only for Octree collision value. All other collision volumes ignore it.

Parameters
colorthe color to render the collision volume.
depththe depth to render collision volume.

Implements CollisionVolume.

◆ getInverseWorldMatrix()

const Matrix & CollisionVolumeOBB::getInverseWorldMatrix ( ) const

Gets the inverse world matrix of OBB.

Returns
The world matrix.

◆ getLocalHalfDiagonal()

const Vect & CollisionVolumeOBB::getLocalHalfDiagonal ( ) const

Gets the half diagonal of OBB in local space.

Returns
The half diagonal.

◆ getMaxLocalVertex()

const Vect & CollisionVolumeOBB::getMaxLocalVertex ( ) const

Gets the maximum vertex in local space.

Returns
The maximum vertex.

◆ getMinLocalVertex()

const Vect & CollisionVolumeOBB::getMinLocalVertex ( ) const

Gets the minimum vertex in local space.

Returns
The minimum vertex.

◆ getScalingFactorSquared()

float CollisionVolumeOBB::getScalingFactorSquared ( ) const

Gets scaling factor sqaured of OBB.

Returns
The scaling factor squared.

◆ getWorldCenter()

const Vect & CollisionVolumeOBB::getWorldCenter ( ) const

Gets the center position of OBB in world space.

Returns
The center.

◆ getWorldMatrix()

const Matrix & CollisionVolumeOBB::getWorldMatrix ( ) const

Gets the world matrix of OBB.

Returns
The world matrix.

◆ intersectAccept()

bool CollisionVolumeOBB::intersectAccept ( const CollisionVolume collisionVolume) const
overridevirtual

Accepts a collision volume to perform intersect test.

Uses Visitor Pattern. This is the first step of the process. Then calls on intersectVisitor().

Parameters
collisionVolumea collision volume.

Implements CollisionVolume.

◆ intersectVisitor() [1/4]

bool CollisionVolumeOBB::intersectVisitor ( const CollisionVolumeAABB AABB) const
overridevirtual

Visits a collision volume AABB to perform intersect test.

Uses Visitor Pattern. This is the second step of the process.

Parameters
AABBa collision volume AABB.

Implements CollisionVolume.

◆ intersectVisitor() [2/4]

bool CollisionVolumeOBB::intersectVisitor ( const CollisionVolumeBSphere collisionBSphere) const
overridevirtual

Visits a collision volume BSphere to perform intersect test.

Uses Visitor Pattern. This is the second step of the process.

Parameters
collisionBSpherea collision volume BSphere.

Implements CollisionVolume.

◆ intersectVisitor() [3/4]

bool CollisionVolumeOBB::intersectVisitor ( const CollisionVolumeOBB OBB) const
overridevirtual

Visits a collision volume OBB to perform intersect test.

Uses Visitor Pattern. This is the second step of the process.

Parameters
OBBa collision volume OBB.

Implements CollisionVolume.

◆ intersectVisitor() [4/4]

bool CollisionVolumeOBB::intersectVisitor ( const CollisionVolumeOctree Octree) const
overridevirtual

Visits a collision volume Octree to perform intersect test.

Uses Visitor Pattern. This is the second step of the process.

Parameters
Octreea collision volume Octree.

Implements CollisionVolume.

◆ setMinMaxLocalVertex()

void CollisionVolumeOBB::setMinMaxLocalVertex ( const Vect &  minlocalVertex,
const Vect &  maxlocalVertex 
)

Sets the minimum and maximum vertex in local space.

Parameters
minWorldVertexThe min local vertex.
maxWorldVertexThe max local vertex.

◆ setWorldMatrix()

void CollisionVolumeOBB::setWorldMatrix ( const Matrix &  worldMatrix)

Sets the world matrix.

Parameters
worldMatrixThe world matrix.

The documentation for this class was generated from the following files: