Tramway SDK
trigger.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H
4#define TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H
5
6#include <physics/physics.h>
8
9#include <vector>
10
11namespace tram {
12
13class TriggerComponent;
14
17
19public:
20 TriggerComponent() : model(this){}
22 void EventHandler(Event &event){};
23 void Start();
24
25 Physics::CollisionModel* GetModel() { return model.get(); }
26 void SetModel(name_t model) { this->model = Physics::CollisionModel::Find(model); }
27 void SetModel(Physics::CollisionModel* model) { this->model = model; }
29
30 void SetActivationCallback(collision_callback activation) { this->activation = activation; }
31 void SetDectivationCallback(collision_callback deactivation) { this->deactivation = deactivation; }
32 void SetFilterCallback(filter_callback filter) { this->filter = filter; }
33
34 void SetCollisionMask(uint32_t flags);
35 void SetCollisionGroup(uint32_t flags);
36
37 void SetStoreCollisions(bool store_collisions) { this->store_collisions = store_collisions; }
38
39 uint32_t GetCollisionMask() { return collisionMask; }
40 uint32_t GetCollisionGroup() { return collisionGroup; }
41
42 void SetLocation(vec3 location);
43 void SetRotation(quat rotation);
44
45 const std::vector<Physics::Collision>& GetStoredCollisions() { return stored_collisions; }
46
47 // why are these not private/protected?
48 // TODO: fix
49 void Collision(const Physics::Collision& collision);
50 void ResetCollisions();
51
52 std::vector<Physics::Collision> Poll();
53private:
55
56 // TODO: why camelCase?
57 uint32_t collisionMask = -1;
58 uint32_t collisionGroup = -1;
59
60 // TODO: change to {} initialization?
61 vec3 location = vec3(0.0f, 0.0f, 0.0f);
62 quat rotation = vec3(0.0f, 0.0f, 0.0f);
63
64 Physics::collisionshape_t shape = {nullptr};
65 Physics::trigger_t trigger = {nullptr};
66
67 collision_callback activation = nullptr;
68 collision_callback deactivation = nullptr;
69 filter_callback filter = nullptr;
70
71 bool store_collisions = false;
72
73 std::vector<std::pair<uint32_t, Physics::Collision>> active_collisions;
74
75 std::vector<Physics::Collision> stored_collisions;
76};
77
78}
79
80#endif // TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H
Component base class.
Definition: entitycomponent.h:16
Physics CollisionShape model.
Definition: collisionmodel.h:11
static CollisionModel * Find(name_t model_name)
Finds a model.
Definition: collisionmodel.cpp:31
Rigidbody wrapper.
Definition: physics.h:12
Definition: resource.h:46
Trigger wrapper.
Definition: trigger.h:18
uint32_t GetCollisionMask()
Definition: trigger.h:39
void SetLocation(vec3 location)
Sets the location of the component.
Definition: trigger.cpp:79
void EventHandler(Event &event)
Definition: trigger.h:22
void SetModel(name_t model)
Definition: trigger.h:26
void SetDectivationCallback(collision_callback deactivation)
Definition: trigger.h:31
void Start()
Definition: trigger.cpp:23
void SetStoreCollisions(bool store_collisions)
Definition: trigger.h:37
void ResetCollisions()
Resets registered collisions.
Definition: trigger.cpp:126
void SetCollisionGroup(uint32_t flags)
Sets a collision group for the trigger.
Definition: trigger.cpp:70
uint32_t GetCollisionGroup()
Definition: trigger.h:40
~TriggerComponent()
Definition: trigger.cpp:45
void SetCollisionMask(uint32_t flags)
Sets a collision mask for the trigger.
Definition: trigger.cpp:59
Physics::CollisionModel * GetModel()
Definition: trigger.h:25
void SetFilterCallback(filter_callback filter)
Definition: trigger.h:32
TriggerComponent()
Definition: trigger.h:20
void SetActivationCallback(collision_callback activation)
Definition: trigger.h:30
void Collision(const Physics::Collision &collision)
Registers a collision.
Definition: trigger.cpp:98
std::vector< Physics::Collision > Poll()
Checks for collisions with the trigger.
Definition: trigger.cpp:145
void SetModel(Physics::CollisionModel *model)
Definition: trigger.h:27
void SetShape(Physics::CollisionShape shape)
Sets a collision shape for the trigger.
Definition: trigger.cpp:52
const std::vector< Physics::Collision > & GetStoredCollisions()
Definition: trigger.h:45
void SetRotation(quat rotation)
Sets the rotation of the component.
Definition: trigger.cpp:88
Serialization, i.e.
void(* collision_callback)(TriggerComponent *, Physics::Collision)
Definition: trigger.h:15
bool(* filter_callback)(TriggerComponent *, PhysicsComponent *)
Definition: trigger.h:16
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
Shape for a collider.
Definition: collisionshape.h:32
Definition: physics.h:43
Interned string type.
Definition: uid.h:10