Tramway SDK
physics.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H
4#define TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H
5
6#include <physics/physics.h>
9
10namespace tram {
11
13public:
14 PhysicsComponent() : collision_model(this) {}
16 void EventHandler(Event &event) {}
17 void Start();
18
20 void SetModel(name_t model);
21
22 void SetMass(float mass);
24
25 void Push(vec3 direction);
26 void Push(vec3 direction, vec3 local_position);
27 void Spin(vec3 direction);
28
29 void SetCollisionMask(uint32_t flags);
30 void SetCollisionGroup(uint32_t flags);
31
32 uint32_t GetCollisionMask();
33 uint32_t GetCollisionGroup();
34
35 void SetDebugDrawing(bool drawing);
36 void SetKinematic(bool kinematic);
37 void SetUpdateParentTransform(bool update);
38
39 void SetRotation(quat rotation);
40 void SetLocation(vec3 location);
41
43
44 void Awaken();
45 void Sleep();
46
47 void SetAngularFactor(vec3 factor);
48 void SetLinearFactor(vec3 factor);
49
50 void SetVelocity(const vec3& velocity);
52private:
54 Physics::collisionshape_t collision_shape = {nullptr};
55 Physics::rigidbody_t rigidbody = {nullptr};
56
57 float rigidbody_mass = 1.0f;
58
59 bool rigidbody_should_sleep = true;
60 bool rigidbody_should_awake = false;
61 bool update_parent_transform = true;
62 bool rigidbody_kinematic = false;
63 bool rigidbody_debug_draw = true;
64
65 vec3 rigidbody_position = {0.0f, 0.0f, 0.0f};
66 quat rigidbody_rotation = {1.0f, 0.0f, 0.0f, 0.0f};
67
68 vec3 rigidbody_offset = {0.0f, 0.0f, 0.0f};
69 vec3 rigidbody_angular_factor = {1.0f, 1.0f, 1.0f};
70 vec3 rigidbody_linear_factor = {1.0f, 1.0f, 1.0f};
71
72 uint32_t rigidbody_collision_mask = -1;
73 uint32_t rigidbody_collision_group = -1;
74};
75
76}
77
78#endif // TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H
Component base class.
Definition: entitycomponent.h:16
Rigidbody wrapper.
Definition: physics.h:12
void SetRotation(quat rotation)
Sets the rotation of the physics object.
Definition: physics.cpp:262
void SetCollisionMask(uint32_t flags)
Sets the collision mask of the physics object.
Definition: physics.cpp:110
void Push(vec3 direction)
Pushes the physics object.
Definition: physics.cpp:156
void SetShape(Physics::CollisionShape shape)
Sets the collision shape of the physics object.
Definition: physics.cpp:136
void SetUpdateParentTransform(bool update)
Sets whether the movement of the rigibody should update parent Entity's transform.
Definition: physics.cpp:245
void Spin(vec3 direction)
Definition: physics.cpp:173
~PhysicsComponent()
Definition: physics.cpp:72
void SetAngularFactor(vec3 factor)
Sets the angular factor of the physics object.
Definition: physics.cpp:276
void EventHandler(Event &event)
Definition: physics.h:16
void SetLocation(vec3 location)
Sets the position of the physics object.
Definition: physics.cpp:250
vec3 GetVelocity()
Returns the velocity of the physics object.
Definition: physics.cpp:326
void SetCollisionGroup(uint32_t flags)
Sets the collision group of the physics object.
Definition: physics.cpp:125
uint32_t GetCollisionMask()
Returns the collision mask.
Definition: physics.cpp:95
void Start()
Definition: physics.cpp:25
void SetKinematic(bool kinematic)
Sets the physics object to kinematic.
Definition: physics.cpp:225
void SetVelocity(const vec3 &velocity)
Sets the velocity of the physics object.
Definition: physics.cpp:310
void Sleep()
Puts the object to sleep.
Definition: physics.cpp:193
void Awaken()
Awakens the object.
Definition: physics.cpp:183
uint32_t GetCollisionGroup()
Returns the collision group.
Definition: physics.cpp:101
void SetDebugDrawing(bool drawing)
Sets the debug drawing of a physics object.
Definition: physics.cpp:205
void SetLinearFactor(vec3 factor)
Sets the angular factor of the physics object.
Definition: physics.cpp:288
void DisableDeactivation()
Disables deactivation of the object.
Definition: physics.cpp:299
void SetModel(name_t model)
Sets the collision model.
Definition: physics.cpp:89
void SetMass(float mass)
Sets the mass of the physics object.
Definition: physics.cpp:144
PhysicsComponent()
Definition: physics.h:14
name_t GetModel()
Returns the name of the collision model.
Definition: physics.cpp:84
Definition: resource.h:46
Serialization, i.e.
glm::vec3 vec3
Definition: math.h:11
glm::quat quat
Definition: math.h:12
Event data.
Definition: event.h:24
Shape for a collider.
Definition: collisionshape.h:32
Definition: physics.h:43
Interned string type.
Definition: uid.h:10