Tramway SDK
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
tram::FPSControllerComponent Class Reference

Implementation of an FPS-style character controller. More...

#include <components/controller.h>

Inheritance diagram for tram::FPSControllerComponent:
tram::ControllerComponent tram::EntityComponent

Public Member Functions

void Start () override
 
void EventHandler (Event &event) override
 
void Move (vec3 local_direction) override
 
void Run () override
 
void Crouch () override
 
void Fly () override
 
void Jump () override
 
void TurnLeft () override
 
void TurnRight () override
 
void Push (vec3 direction) override
 
void SetCollisionSize (float width, float height, float crouch_height)
 
void SetStepHeight (float height, float crouch_height)
 
void SetWallCollisionCallback (void(*callback)(ControllerComponent *, Physics::Collision))
 
void SetWalkSpeed (float speed)
 
void SetRunSpeed (float speed)
 
void SetCrouchSpeed (float speed)
 
void SetFlySpeed (float speed)
 
void SetFriction (float friction)
 
void SetCollisionGroup (uint32_t group)
 
- Public Member Functions inherited from tram::ControllerComponent
void SetCollisions (bool collide)
 
void SetLookDirection (quat direction)
 
quat GetLookDirection () const
 
- Public Member Functions inherited from tram::EntityComponent
 EntityComponent ()=default
 
virtual ~EntityComponent ()=default
 
virtual void Init ()
 Initializes an entity component. More...
 
bool IsReady ()
 Returns the component's readiness. More...
 
bool IsInit ()
 Returns the component's init status. More...
 
EntityGetParent ()
 
void SetParent (Entity *parent)
 

Protected Member Functions

 FPSControllerComponent ()=default
 
 ~FPSControllerComponent ()=default
 
void ApplyDynamics ()
 
void RecoverFromCollisions ()
 
void ResetMove ()
 
- Protected Member Functions inherited from tram::EntityComponent
void ResourceReady ()
 Notifies the component of a streamed-in resource. More...
 

Protected Attributes

Component< TriggerComponentwalk_collision
 
Component< TriggerComponentcrouch_collision
 
vec3 velocity = {0.0f, 0.0f, 0.0f}
 
vec3 move_direction = {0.0f, 0.0f, 0.0f}
 
bool is_in_air = false
 
float collision_width = 0.35f
 
float collision_height = 1.85f
 
float collision_height_crouch = 0.5f
 
float step_height = 0.35f
 
float step_height_crouch = 0.15f
 
float walk_speed = 0.1f
 
float run_speed = 0.2f
 
float crouch_speed = 0.05f
 
float fly_speed = 0.2f
 
float friction = 0.89f
 
bool crouching = false
 
bool running = false
 
bool flying = false
 
id_t standing_on = 0
 
id_t standing_on_prev = 0
 
vec3 standing_pos
 
uint32_t collision_group = Physics::COLL_PLAYER
 
void(* wallbonk_callback )(ControllerComponent *, Physics::Collision) = nullptr
 
- Protected Attributes inherited from tram::ControllerComponent
quat look_direction = {1.0f, 0.0f, 0.0f, 0.0f}
 
bool collide = true
 
- Protected Attributes inherited from tram::EntityComponent
size_t resources_waiting = 0
 
bool is_ready = false
 
bool is_init = false
 
Entityparent = nullptr
 

Friends

class ControllerComponent
 
template<typename >
class Pool
 

Additional Inherited Members

- Static Public Member Functions inherited from tram::ControllerComponent
static bool IsDebugInfoDraw ()
 
static void SetDebugInfoDraw (bool)
 
static void Update ()
 Updates the ControllerComponents. More...
 

Detailed Description

Implementation of an FPS-style character controller.

It is relatively slow, due to the use of Shapecasts, which makes it suitable only for player characters. Consider useing a RaycastControllerComponent for other uses.

See also
ControllerComponent

Constructor & Destructor Documentation

◆ FPSControllerComponent()

tram::FPSControllerComponent::FPSControllerComponent ( )
protecteddefault

◆ ~FPSControllerComponent()

tram::FPSControllerComponent::~FPSControllerComponent ( )
protecteddefault

Member Function Documentation

◆ ApplyDynamics()

void tram::FPSControllerComponent::ApplyDynamics ( )
protected

◆ Crouch()

void tram::FPSControllerComponent::Crouch ( )
overridevirtual

◆ EventHandler()

void tram::FPSControllerComponent::EventHandler ( Event event)
inlineoverridevirtual

Implements tram::EntityComponent.

◆ Fly()

void tram::FPSControllerComponent::Fly ( )
overridevirtual

◆ Jump()

void tram::FPSControllerComponent::Jump ( )
overridevirtual

◆ Move()

void tram::FPSControllerComponent::Move ( vec3  local_direction)
overridevirtual

◆ Push()

void tram::FPSControllerComponent::Push ( vec3  direction)
overridevirtual

◆ RecoverFromCollisions()

void tram::FPSControllerComponent::RecoverFromCollisions ( )
protected

◆ ResetMove()

void tram::FPSControllerComponent::ResetMove ( )
protected

◆ Run()

void tram::FPSControllerComponent::Run ( )
overridevirtual

◆ SetCollisionGroup()

void tram::FPSControllerComponent::SetCollisionGroup ( uint32_t  group)
inline

◆ SetCollisionSize()

void tram::FPSControllerComponent::SetCollisionSize ( float  width,
float  height,
float  crouch_height 
)
inline

◆ SetCrouchSpeed()

void tram::FPSControllerComponent::SetCrouchSpeed ( float  speed)
inline

◆ SetFlySpeed()

void tram::FPSControllerComponent::SetFlySpeed ( float  speed)
inline

◆ SetFriction()

void tram::FPSControllerComponent::SetFriction ( float  friction)
inline

◆ SetRunSpeed()

void tram::FPSControllerComponent::SetRunSpeed ( float  speed)
inline

◆ SetStepHeight()

void tram::FPSControllerComponent::SetStepHeight ( float  height,
float  crouch_height 
)
inline

◆ SetWalkSpeed()

void tram::FPSControllerComponent::SetWalkSpeed ( float  speed)
inline

◆ SetWallCollisionCallback()

void tram::FPSControllerComponent::SetWallCollisionCallback ( void(*)(ControllerComponent *, Physics::Collision callback)
inline

◆ Start()

void tram::FPSControllerComponent::Start ( )
overridevirtual

Implements tram::EntityComponent.

◆ TurnLeft()

void tram::FPSControllerComponent::TurnLeft ( )
overridevirtual

◆ TurnRight()

void tram::FPSControllerComponent::TurnRight ( )
overridevirtual

Friends And Related Function Documentation

◆ ControllerComponent

friend class ControllerComponent
friend

◆ Pool

template<typename >
friend class Pool
friend

Member Data Documentation

◆ collision_group

uint32_t tram::FPSControllerComponent::collision_group = Physics::COLL_PLAYER
protected

◆ collision_height

float tram::FPSControllerComponent::collision_height = 1.85f
protected

◆ collision_height_crouch

float tram::FPSControllerComponent::collision_height_crouch = 0.5f
protected

◆ collision_width

float tram::FPSControllerComponent::collision_width = 0.35f
protected

◆ crouch_collision

Component<TriggerComponent> tram::FPSControllerComponent::crouch_collision
protected

◆ crouch_speed

float tram::FPSControllerComponent::crouch_speed = 0.05f
protected

◆ crouching

bool tram::FPSControllerComponent::crouching = false
protected

◆ fly_speed

float tram::FPSControllerComponent::fly_speed = 0.2f
protected

◆ flying

bool tram::FPSControllerComponent::flying = false
protected

◆ friction

float tram::FPSControllerComponent::friction = 0.89f
protected

◆ is_in_air

bool tram::FPSControllerComponent::is_in_air = false
protected

◆ move_direction

vec3 tram::FPSControllerComponent::move_direction = {0.0f, 0.0f, 0.0f}
protected

◆ run_speed

float tram::FPSControllerComponent::run_speed = 0.2f
protected

◆ running

bool tram::FPSControllerComponent::running = false
protected

◆ standing_on

id_t tram::FPSControllerComponent::standing_on = 0
protected

◆ standing_on_prev

id_t tram::FPSControllerComponent::standing_on_prev = 0
protected

◆ standing_pos

vec3 tram::FPSControllerComponent::standing_pos
protected

◆ step_height

float tram::FPSControllerComponent::step_height = 0.35f
protected

◆ step_height_crouch

float tram::FPSControllerComponent::step_height_crouch = 0.15f
protected

◆ velocity

vec3 tram::FPSControllerComponent::velocity = {0.0f, 0.0f, 0.0f}
protected

◆ walk_collision

Component<TriggerComponent> tram::FPSControllerComponent::walk_collision
protected

◆ walk_speed

float tram::FPSControllerComponent::walk_speed = 0.1f
protected

◆ wallbonk_callback

void(* tram::FPSControllerComponent::wallbonk_callback) (ControllerComponent *, Physics::Collision) = nullptr
protected

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