❖
Monad Engine
da02fba2
>
Undercity Codex
_
Loading...
Searching...
No Matches
CollisionObject.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <vector>
4
5
#include "Common.h"
6
#include "
Types.h
"
7
8
namespace
mnd
9
{
10
11
class
IContactListener;
12
class
GameObject;
13
14
enum class
CollisionObjectType
15
{
16
RigidBody
,
17
KinematicCharacterController
18
};
19
20
class
CollisionObject
21
{
22
public
:
23
CollisionObjectType
GetCollisionObjectType
();
24
25
void
AddContactListener
(
IContactListener
*listener);
26
void
RemoveContactListener
(
IContactListener
*listener);
27
28
/// Backref to the owning GameObject so raycast hits can resolve to scene
29
/// objects without a separate map. Set by PhysicsComponent / KCC owner.
30
void
SetOwner
(
GameObject
*owner) {
m_owner
= owner; }
31
[[nodiscard]]
GameObject
*
GetOwner
()
const
{
return
m_owner
; }
32
33
protected
:
34
void
DispatchContactEvent
(
CollisionObject
*obj,
const
vec3
&pos,
const
vec3
&norm);
35
36
CollisionObjectType
m_collisionObjType
;
37
std::vector<IContactListener *>
m_contactListeners
;
38
GameObject
*
m_owner
=
nullptr
;
39
40
friend
class
PhysicsManager
;
41
};
42
43
class
IContactListener
44
{
45
public
:
46
virtual
void
OnContact
(
CollisionObject
*obj,
const
vec3
&pos,
const
vec3
&norm) = 0;
47
};
48
49
}
// namespace mnd
Types.h
Engine-wide primitive type aliases and GLM math imports.
mnd::CollisionObject
Definition
CollisionObject.h:21
mnd::CollisionObject::m_collisionObjType
CollisionObjectType m_collisionObjType
Definition
CollisionObject.h:36
mnd::CollisionObject::SetOwner
void SetOwner(GameObject *owner)
Definition
CollisionObject.h:30
mnd::CollisionObject::RemoveContactListener
void RemoveContactListener(IContactListener *listener)
Definition
CollisionObject.cpp:26
mnd::CollisionObject::GetCollisionObjectType
CollisionObjectType GetCollisionObjectType()
Definition
CollisionObject.cpp:8
mnd::CollisionObject::m_contactListeners
std::vector< IContactListener * > m_contactListeners
Definition
CollisionObject.h:37
mnd::CollisionObject::GetOwner
GameObject * GetOwner() const
Definition
CollisionObject.h:31
mnd::CollisionObject::AddContactListener
void AddContactListener(IContactListener *listener)
Definition
CollisionObject.cpp:13
mnd::CollisionObject::m_owner
GameObject * m_owner
Definition
CollisionObject.h:38
mnd::CollisionObject::DispatchContactEvent
void DispatchContactEvent(CollisionObject *obj, const vec3 &pos, const vec3 &norm)
Definition
CollisionObject.cpp:35
mnd::GameObject
Node in the scene graph: a named transform that owns components and children.
Definition
GameObject.h:91
mnd::IContactListener
Definition
CollisionObject.h:44
mnd::IContactListener::OnContact
virtual void OnContact(CollisionObject *obj, const vec3 &pos, const vec3 &norm)=0
mnd::KinematicCharacterController
High-level capsule character controller: walks, jumps, detects ground.
Definition
KinematicCharacterController.h:30
mnd::PhysicsManager
Owns the Bullet btDiscreteDynamicsWorld and all auxiliary collision structures (broadphase,...
Definition
PhysicsManager.h:34
mnd::RigidBody
Owning wrapper around btRigidBody; holds a shared Collider, mass, friction, and body type.
Definition
RigidBody.h:41
mnd::vec3
glm::vec3 vec3
3-component float vector (e.g. world position, RGB colour, normals).
Definition
Types.h:51
mnd
Definition
IdleClip.cpp:13
mnd::CollisionObjectType
CollisionObjectType
Definition
CollisionObject.h:15
engine
source
physics
CollisionObject.h
Generated by
1.9.8