Slippers Engine
 
Loading...
Searching...
No Matches
Collidable Class Reference

Responsible for Collision functions. More...

#include <Collidable.h>

Collaboration diagram for Collidable:
Collaboration graph

Protected Member Functions

void SubmitRegistration ()
 Called when wanting to check for collisions.
 
void SubmitDeregistration ()
 Called when wanting to stop checking for collisions.
 
void SetColliderModel (Model *mod)
 Stores an Objects Collision Model for calculating collisions.
 
void UpdateCollisionData (const Matrix &mat)
 Updates Objects Collision Model for proper scaling and positioning.
 
template<typename C>
void SetCollidableGroup ()
 Registers a DemoObject to be part of a Collision Group.
 

Private Member Functions

const CollisionVolumeBSphere & GetBSphere ()
 Retrieves the Collider Model's BSphere.
 

Detailed Description

Responsible for Collision functions.

Collisions are reliant on Game Objects having their own Collision Functions to call to.

Example:
SceneDemo.h

#include "Scene.h"
class DemoObjOne;
class DemoObjTwo;
class SceneDemo : public Scene {
public:
SceneDemo() = default;
SceneDemo(const SceneDemo&) = default;
SceneDemo& operator=(const SceneDemo&) = default;
~SceneDemo() = default;
private:
DemoObjOne* objOne;
DemoObjTwo* objTwo;
virtual void Initialize();
virtual void SceneEnd();
};
Responsible for Scene functions.
Definition Scene.h:85
virtual void Initialize()
Function automatically called on scene starting.
Definition Scene.h:132
virtual void SceneEnd()
Function automatically called on scene ending.
Definition Scene.h:138

SceneDemo.cpp

#include "SceneDemo.h"
#include "DemoObjOne.h"
#include "DemoObjTwo.h"
void SceneDemo::Initialize() {
objOne = new DemoObjOne();
objTwo = new DemoObjTwo();
SetCollisionPair<DemoObjOne, DemoObjTwo>();
SetCollisionSelf<DemoObjOne>();
}
void SceneDemo::SceneEnd() {
delete objOne;
delete objTwo;
}

DemoObjOne.h

#include "GameObject.h"
#include "AzulCore.h"
class DemoObjTwo;
class DemoObjOne : public GameObject {
public:
DemoObjOne();
DemoObjOne(const DemoObjOne&) = default;
DemoObjOne& operator=(const DemoObjOne&) = default;
~DemoObjOne();
void Collision(DemoObjOne*);
void Collision(DemoObjTwo*);
private:
GraphicObject_TextureFlat* demoGraphicsObj;
virtual void Update();
};
Responsible for GameObject centralization.
Definition GameObject.h:179
virtual void Update()
Fill this with code that occurs during the Update phase.
Definition Updatable.h:54

DemoObjOne.cpp

#include "DemoObjOne.h"
#include "ModelManager.h"
#include "ShaderManager.h"
#include "TextureManager.h"
#include "SceneManager.h"
#include "Scene.h"
DemoObjOne::DemoObjOne() {
demoGraphicsObj = new GraphicsObject_TextureFlat(ModelManager::GetModel("Demo Model One"), ShaderManager::GetShader(ShaderManager::DefaultShaders::TEXTUREFLAT), TextureManager::GetTexture("Demo Texture One"));
Collidable::SetColliderModel(demoGraphicsObj->getModel());
}
DemoObjOne::~DemoObjOne(){
delete demoGraphicsObj;
}
void DemoObjOne::Update(){
Collidable::UpdateCollisionData(demoGraphicsObj->getWorld());
}
void DemoObjOne::Collision(DemoObjOne*){
//Do Collision Stuff with other Obj Ones
}
void DemoObjOne::Collision(DemoObjTwo*){
//Do Collision Stuff with Obj Twos
}
void SetColliderModel(Model *mod)
Stores an Objects Collision Model for calculating collisions.
Definition Collidable.cpp:61
void UpdateCollisionData(const Matrix &mat)
Updates Objects Collision Model for proper scaling and positioning.
Definition Collidable.cpp:65
void SetCollidableGroup()
Registers a DemoObject to be part of a Collision Group.
Definition Collidable.h:281
static Model * GetModel(const MapKey &key)
Returns model pointer with given KEY.
Definition ModelManager.h:98
static ShaderObject * GetShader(const MapKey &key)
Returns shader object pointer with given KEY.
Definition ShaderManager.h:71
@ TEXTUREFLAT
Definition ShaderManager.h:20
static Texture * GetTexture(const MapKey &key)
Returns texture pointer with given KEY.
Definition TextureManager.h:134

DemoObjTwo.h

#include "GameObject.h"
#include "AzulCore.h"
class DemoObjOne;
class DemoObjTwo : public GameObject {
public:
DemoObjTwo();
DemoObjTwo(const DemoObjTwo&) = default;
DemoObjTwo& operator=(const DemoObjTwo&) = default;
~DemoObjTwo();
void Collision(DemoObjOne*);
private:
GraphicObject_TextureFlat* demoGraphicsObj;
virtual void Update();
};

DemoObjTwo.cpp

#include "DemoObjTwo.h"
#include "ModelManager.h"
#include "ShaderManager.h"
#include "TextureManager.h"
#include "SceneManager.h"
#include "Scene.h"
DemoObjTwo::DemoObjTwo() {
demoGraphicsObj = new GraphicsObject_TextureFlat(ModelManager::GetModel("Demo Model Two"), ShaderManager::GetShader(ShaderManager::DefaultShaders::TEXTUREFLAT), TextureManager::GetTexture("Demo Texture Two"));
Collidable::SetColliderModel(demoGraphicsObj->getModel());
}
DemoObjTwo::~DemoObjTwo(){
delete demoGraphicsObj;
}
void DemoObjTwo::Update(){
Collidable::UpdateCollisionData(demoGraphicsObj->getWorld());
}
void DemoObjOne::Collision(DemoObjOne*){
//Do Collision Stuff with Obj Ones
}

Member Function Documentation

◆ GetBSphere()

const CollisionVolumeBSphere & Collidable::GetBSphere ( )
private

Retrieves the Collider Model's BSphere.

This will mainly be used when needing to visualize an object's BSphere.

Example:

const CollisionVolumeBSphere & GetBSphere()
Retrieves the Collider Model's BSphere.
Definition Collidable.cpp:57
static void ShowBSphere(const CollisionVolumeBSphere &S, const Vect &col=DEFAULT_COLOR)
Shows B Sphere of an object using a given color.
Definition Visualizer.cpp:41
static const Vect Red
Definition ColorsCommon.h:132
Returns
const CollisionVolumeBSphere&

◆ SetCollidableGroup()

template<typename C>
void Collidable::SetCollidableGroup ( )
protected

Registers a DemoObject to be part of a Collision Group.

The have any collision testing, an object must be registered for a Collidable Group.

Example:

Template Parameters
C

◆ SetColliderModel()

void Collidable::SetColliderModel ( Model * mod)
protected

Stores an Objects Collision Model for calculating collisions.

This will normally be either the graphics object currently in use, or a low poly version of the same model.

Example:

Collidable::SetColliderModel(demoGraphicsObj->getModel());
Collidable::SetColliderModel(demoGraphicsObjLowPoly->getModel());
Parameters
mod

◆ SubmitDeregistration()

void Collidable::SubmitDeregistration ( )
protected

Called when wanting to stop checking for collisions.

Example:

void SubmitDeregistration()
Called when wanting to stop checking for collisions.
Definition Collidable.cpp:49

◆ SubmitRegistration()

void Collidable::SubmitRegistration ( )
protected

Called when wanting to check for collisions.

Example:

void SubmitRegistration()
Called when wanting to check for collisions.
Definition Collidable.cpp:41

◆ UpdateCollisionData()

void Collidable::UpdateCollisionData ( const Matrix & mat)
protected

Updates Objects Collision Model for proper scaling and positioning.

Warning
An object must have SetColliderModel() prior to calling this function

Example:

Collidable::UpdateCollisionData(demoGraphicsObj->getWorld());
Parameters
mat