3#ifndef TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H
4#define TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H
12class PhysicsComponent;
13class TriggerComponent;
19 virtual void Run() = 0;
21 virtual void Fly() = 0;
44 void Start()
override;
47 void Move(
vec3 local_direction)
override;
123 template <
typename>
friend class Pool;
128 void Start()
override;
131 void Move(
vec3 local_direction)
override;
136 void Jump()
override;
207 template <
typename>
friend class Pool;
Wrapper for an EntityComponent pointer.
Definition: entitycomponent.h:51
Provides an API for character controllers.
Definition: controller.h:15
void SetCollisions(bool collide)
Definition: controller.h:28
virtual void TurnRight()=0
virtual void Move(vec3 local_direction)=0
static bool IsDebugInfoDraw()
Definition: controller.cpp:120
virtual void Push(vec3 direction)=0
void SetLookDirection(quat direction)
Definition: controller.h:30
bool collide
Definition: controller.h:39
quat GetLookDirection() const
Definition: controller.h:31
quat look_direction
Definition: controller.h:38
virtual void TurnLeft()=0
static void Update()
Updates the ControllerComponents.
Definition: controller.cpp:61
static void SetDebugInfoDraw(bool)
Definition: controller.cpp:124
Component base class.
Definition: entitycomponent.h:16
Implementation of an FPS-style character controller.
Definition: controller.h:42
float collision_width
Definition: controller.h:96
void Jump() override
Definition: controller.cpp:173
float walk_speed
Definition: controller.h:103
void RecoverFromCollisions()
Definition: controller.cpp:234
void Push(vec3 direction) override
Definition: controller.cpp:153
void(* wallbonk_callback)(ControllerComponent *, Physics::Collision)
Definition: controller.h:120
void SetCollisionGroup(uint32_t group)
Definition: controller.h:78
id_t standing_on
Definition: controller.h:114
bool crouching
Definition: controller.h:110
void TurnLeft() override
Definition: controller.cpp:180
void SetWallCollisionCallback(void(*callback)(ControllerComponent *, Physics::Collision))
Definition: controller.h:69
uint32_t collision_group
Definition: controller.h:118
void SetRunSpeed(float speed)
Definition: controller.h:74
vec3 standing_pos
Definition: controller.h:116
void ApplyDynamics()
Definition: controller.cpp:189
float step_height_crouch
Definition: controller.h:101
void Crouch() override
Definition: controller.cpp:165
float friction
Definition: controller.h:108
void SetFriction(float friction)
Definition: controller.h:77
float step_height
Definition: controller.h:100
~FPSControllerComponent()=default
void ResetMove()
Definition: controller.cpp:371
void SetCrouchSpeed(float speed)
Definition: controller.h:75
float fly_speed
Definition: controller.h:106
void SetWalkSpeed(float speed)
Definition: controller.h:73
void EventHandler(Event &event) override
Definition: controller.h:45
float run_speed
Definition: controller.h:104
FPSControllerComponent()=default
void SetStepHeight(float height, float crouch_height)
Definition: controller.h:64
vec3 velocity
Definition: controller.h:90
void SetCollisionSize(float width, float height, float crouch_height)
Definition: controller.h:58
vec3 move_direction
Definition: controller.h:91
bool is_in_air
Definition: controller.h:94
float collision_height
Definition: controller.h:97
bool running
Definition: controller.h:111
void Run() override
Definition: controller.cpp:161
void TurnRight() override
Definition: controller.cpp:184
void Start() override
Definition: controller.cpp:135
void SetFlySpeed(float speed)
Definition: controller.h:76
void Fly() override
Definition: controller.cpp:169
void Move(vec3 local_direction) override
Definition: controller.cpp:157
float collision_height_crouch
Definition: controller.h:98
bool flying
Definition: controller.h:112
id_t standing_on_prev
Definition: controller.h:115
float crouch_speed
Definition: controller.h:105
Component< TriggerComponent > crouch_collision
Definition: controller.h:84
Component< TriggerComponent > walk_collision
Definition: controller.h:83
Implementation of a simple character controller.
Definition: controller.h:126
vec3 move_direction
Definition: controller.h:174
bool running
Definition: controller.h:193
vec3 move_magnitude
Definition: controller.h:173
void EventHandler(Event &event) override
Definition: controller.h:129
id_t standing_on
Definition: controller.h:198
Component< TriggerComponent > wall_collision
Definition: controller.h:167
void Move(vec3 local_direction) override
Definition: controller.cpp:401
bool flying
Definition: controller.h:194
RaycastControllerComponent()=default
void Run() override
Definition: controller.cpp:405
uint32_t collision_group
Definition: controller.h:202
void Start() override
Definition: controller.cpp:386
vec3 standing_pos
Definition: controller.h:200
void ApplyDynamics()
Definition: controller.cpp:440
void SetCollisionGroup(uint32_t group)
Definition: controller.h:162
float collision_width
Definition: controller.h:182
void Crouch() override
Definition: controller.cpp:409
vec3 air_velocity
Definition: controller.h:176
float collision_height
Definition: controller.h:183
void Fly() override
Definition: controller.cpp:413
void TurnRight() override
Definition: controller.cpp:435
void SetStepHeight(float height, float crouch_height)
Definition: controller.h:148
void SetCollisionSize(float width, float height, float crouch_height)
Definition: controller.h:142
void TurnLeft() override
Definition: controller.cpp:431
void Jump() override
Definition: controller.cpp:417
void Push(vec3 direction) override
Definition: controller.cpp:397
int jump_frames
Definition: controller.h:196
void SetFriction(float speed)
Definition: controller.h:161
void ResetMove()
Definition: controller.cpp:548
void(* wallbonk_callback)(ControllerComponent *, Physics::Collision)
Definition: controller.h:204
bool enabled
Definition: controller.h:178
bool crouching
Definition: controller.h:192
bool is_in_air
Definition: controller.h:180
void SetFlySpeed(float speed)
Definition: controller.h:160
void SetCrouchSpeed(float speed)
Definition: controller.h:159
float fly_speed
Definition: controller.h:190
float crouch_speed
Definition: controller.h:189
float run_speed
Definition: controller.h:188
float walk_speed
Definition: controller.h:187
~RaycastControllerComponent()=default
void RecoverFromCollisions()
Definition: controller.cpp:479
float step_height
Definition: controller.h:185
void SetWalkSpeed(float speed)
Definition: controller.h:157
id_t standing_on_prev
Definition: controller.h:199
void SetWallCollisionCallback(void(*callback)(ControllerComponent *, Physics::Collision))
Definition: controller.h:153
void SetRunSpeed(float speed)
Definition: controller.h:158
@ COLL_PLAYER
Definition: physics.h:29
uint32_t id_t
Definition: core.h:10
glm::vec3 vec3
Definition: math.h:11
glm::quat quat
Definition: math.h:12
Event data.
Definition: event.h:24
Physics collision data.
Definition: physics.h:34