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

High-level capsule character controller: walks, jumps, detects ground. More...

#include <KinematicCharacterController.h>

+ Inheritance diagram for mnd::KinematicCharacterController:
+ Collaboration diagram for mnd::KinematicCharacterController:

Public Member Functions

 KinematicCharacterController (float radius, float height, const glm::vec3 &position)
 
 ~KinematicCharacterController ()
 
vec3 GetPosition () const
 
quat GetRotation () const
 
void Walk (const vec3 &direction)
 Apply a walk velocity in world space for this frame.
 
void Jump (const vec3 &direction)
 Apply an impulse-style jump in direction (typically {0, jumpSpeed, 0}).
 
bool OnGround () const
 True when the controller has a contact point beneath it.
 
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

High-level capsule character controller: walks, jumps, detects ground.

Unlike a RigidBody, this object is not force-driven. Game code calls Walk / Jump with desired directions and Bullet resolves the resulting motion against the collision world.

Definition at line 29 of file KinematicCharacterController.h.

Constructor & Destructor Documentation

◆ KinematicCharacterController()

mnd::KinematicCharacterController::KinematicCharacterController ( float  radius,
float  height,
const glm::vec3 &  position 
)
Parameters
radiusCapsule radius (metres).
heightCapsule height (metres, full — caps included).
positionInitial world position.

Definition at line 12 of file KinematicCharacterController.cpp.

References mnd::Engine::GetInstance(), mnd::Engine::GetPhysicsManager(), mnd::PhysicsManager::GetWorld(), kDefaultStepHeight, mnd::KinematicCharacterController, and mnd::CollisionObject::m_collisionObjType.

◆ ~KinematicCharacterController()

mnd::KinematicCharacterController::~KinematicCharacterController ( )

Member Function Documentation

◆ AddContactListener()

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

Definition at line 13 of file CollisionObject.cpp.

References mnd::CollisionObject::m_contactListeners.

◆ 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.

◆ 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::KinematicCharacterController::GetPosition ( ) const

Definition at line 60 of file KinematicCharacterController.cpp.

◆ GetRotation()

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

Definition at line 68 of file KinematicCharacterController.cpp.

◆ Jump()

void mnd::KinematicCharacterController::Jump ( const vec3 direction)

Apply an impulse-style jump in direction (typically {0, jumpSpeed, 0}).

Definition at line 79 of file KinematicCharacterController.cpp.

◆ OnGround()

bool mnd::KinematicCharacterController::OnGround ( ) const

True when the controller has a contact point beneath it.

Definition at line 87 of file KinematicCharacterController.cpp.

◆ RemoveContactListener()

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

Definition at line 26 of file CollisionObject.cpp.

References mnd::CollisionObject::m_contactListeners.

◆ 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.

◆ Walk()

void mnd::KinematicCharacterController::Walk ( const vec3 direction)

Apply a walk velocity in world space for this frame.

Definition at line 74 of file KinematicCharacterController.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: