Monad Engine da02fba2
> Undercity Codex_
Loading...
Searching...
No Matches
mnd::RigidBody Class Reference

Owning wrapper around btRigidBody; holds a shared Collider, mass, friction, and body type. More...

#include <RigidBody.h>

+ Inheritance diagram for mnd::RigidBody:
+ Collaboration diagram for mnd::RigidBody:

Public Member Functions

 RigidBody (BodyType type, const std::shared_ptr< Collider > &collider, float mass, float friction)
 
 ~RigidBody ()
 
btRigidBody * GetBody ()
 Underlying Bullet body (borrowed, do not delete).
 
void SetAddedToWorld (bool added)
 Track whether this body is currently registered with a PhysicsManager.
 
bool IsAddedToWorld () const
 
BodyType GetType () const
 
void SetPosition (const glm::vec3 &pos)
 Teleport the body (bypasses the solver — use sparingly on Dynamic bodies).
 
glm::vec3 GetPosition () const
 
void SetRotation (const glm::quat &rot)
 
glm::quat GetRotation () const
 
void ApplyImpulse (const vec3 &impulse)
 
void EnableCcd (float motionThreshold, float sweptRadius)
 
CollisionObjectType GetCollisionObjectType ()
 
void AddContactListener (IContactListener *listener)
 
void RemoveContactListener (IContactListener *listener)
 
void SetOwner (GameObject *owner)
 
GameObjectGetOwner () const
 

Protected Member Functions

void DispatchContactEvent (CollisionObject *obj, const vec3 &pos, const vec3 &norm)
 

Protected Attributes

CollisionObjectType m_collisionObjType
 
std::vector< IContactListener * > m_contactListeners
 
GameObjectm_owner = nullptr
 

Detailed Description

Owning wrapper around btRigidBody; holds a shared Collider, mass, friction, and body type.

Definition at line 40 of file RigidBody.h.

Constructor & Destructor Documentation

◆ RigidBody()

mnd::RigidBody::RigidBody ( BodyType  type,
const std::shared_ptr< Collider > &  collider,
float  mass,
float  friction 
)
Parameters
typeSimulation category.
colliderShape used for collision (shared — the same Collider may back several bodies).
massKilograms; ignored for Static bodies.
frictionBullet friction coefficient in [0, 1].

Definition at line 12 of file RigidBody.cpp.

References mnd::Dynamic, mnd::Kinematic, mnd::CollisionObject::m_collisionObjType, and mnd::RigidBody.

◆ ~RigidBody()

mnd::RigidBody::~RigidBody ( )

Member Function Documentation

◆ AddContactListener()

void mnd::CollisionObject::AddContactListener ( IContactListener listener)
inherited

Definition at line 13 of file CollisionObject.cpp.

References mnd::CollisionObject::m_contactListeners.

◆ ApplyImpulse()

void mnd::RigidBody::ApplyImpulse ( const vec3 impulse)

Definition at line 130 of file RigidBody.cpp.

◆ DispatchContactEvent()

void mnd::CollisionObject::DispatchContactEvent ( CollisionObject obj,
const vec3 pos,
const vec3 norm 
)
protectedinherited

Definition at line 35 of file CollisionObject.cpp.

References mnd::CollisionObject::m_contactListeners.

◆ EnableCcd()

void mnd::RigidBody::EnableCcd ( float  motionThreshold,
float  sweptRadius 
)

Enable continuous collision detection (prevents tunneling for fast bodies). motionThreshold: velocity per step above which CCD kicks in (set < expected step distance). sweptRadius: embedded sphere radius used for the swept test (typically ~0.2× shape radius).

Definition at line 139 of file RigidBody.cpp.

◆ GetBody()

btRigidBody * mnd::RigidBody::GetBody ( )

Underlying Bullet body (borrowed, do not delete).

Definition at line 58 of file RigidBody.cpp.

Referenced by mnd::PhysicsManager::AddRigidBody(), and mnd::PhysicsManager::RemoveRigidBody().

◆ GetCollisionObjectType()

CollisionObjectType mnd::CollisionObject::GetCollisionObjectType ( )
inherited

Definition at line 8 of file CollisionObject.cpp.

References mnd::CollisionObject::m_collisionObjType.

◆ GetOwner()

GameObject * mnd::CollisionObject::GetOwner ( ) const
inlineinherited

Definition at line 31 of file CollisionObject.h.

References mnd::CollisionObject::m_owner.

◆ GetPosition()

glm::vec3 mnd::RigidBody::GetPosition ( ) const

Definition at line 94 of file RigidBody.cpp.

◆ GetRotation()

glm::quat mnd::RigidBody::GetRotation ( ) const

Definition at line 120 of file RigidBody.cpp.

◆ GetType()

BodyType mnd::RigidBody::GetType ( ) const

Definition at line 73 of file RigidBody.cpp.

◆ IsAddedToWorld()

bool mnd::RigidBody::IsAddedToWorld ( ) const

Definition at line 68 of file RigidBody.cpp.

◆ RemoveContactListener()

void mnd::CollisionObject::RemoveContactListener ( IContactListener listener)
inherited

Definition at line 26 of file CollisionObject.cpp.

References mnd::CollisionObject::m_contactListeners.

◆ SetAddedToWorld()

void mnd::RigidBody::SetAddedToWorld ( bool  added)

Track whether this body is currently registered with a PhysicsManager.

Definition at line 63 of file RigidBody.cpp.

Referenced by mnd::PhysicsManager::AddRigidBody(), and mnd::PhysicsManager::RemoveRigidBody().

◆ SetOwner()

void mnd::CollisionObject::SetOwner ( GameObject owner)
inlineinherited

Backref to the owning GameObject so raycast hits can resolve to scene objects without a separate map. Set by PhysicsComponent / KCC owner.

Definition at line 30 of file CollisionObject.h.

References mnd::CollisionObject::m_owner.

◆ SetPosition()

void mnd::RigidBody::SetPosition ( const glm::vec3 &  pos)

Teleport the body (bypasses the solver — use sparingly on Dynamic bodies).

Definition at line 78 of file RigidBody.cpp.

◆ SetRotation()

void mnd::RigidBody::SetRotation ( const glm::quat &  rot)

Definition at line 104 of file RigidBody.cpp.

Member Data Documentation

◆ m_collisionObjType

CollisionObjectType mnd::CollisionObject::m_collisionObjType
protectedinherited

◆ m_contactListeners

std::vector<IContactListener *> mnd::CollisionObject::m_contactListeners
protectedinherited

◆ m_owner

GameObject* mnd::CollisionObject::m_owner = nullptr
protectedinherited

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