2#include <core/core.hpp>
4#include <drivers/jolt-cpp/jolt_components.hpp>
5#include <drivers/jolt-cpp/jolt-imports.hpp>
6#include <physics/components.hpp>
7#include <core/scene/components.hpp>
9#include <core/event/event_bus.hpp>
25 void destroy() {
return destroy_bodies(); }
30 return update_simulation(p_delta_time);
39 void prepare() {
return prepare_and_finalize(); }
54 p_entity_id, p_transform, p_body, p_collider);
69 return emplace_sphere_collider(
70 p_entity_id, p_transform, p_body, p_collider);
85 return emplace_capsule_collider(
86 p_entity_id, p_transform, p_body, p_collider);
95 return context_read_transform(p_id);
104 return context_read_physics_body(p_id);
107 void set_linear_velocity(uint64_t p_id,
108 const glm::vec3& p_linear_velocity) {
109 return linear_velocity(p_id, p_linear_velocity);
112 void set_angular_velocity(uint64_t p_id,
113 const glm::vec3& p_angular_velocity) {
114 return angular_velocity(p_id, p_angular_velocity);
117 void set_force(uint64_t p_id,
const glm::vec3& p_force) {
118 return force(p_id, p_force);
121 void set_force_and_torque(uint64_t p_id,
122 const glm::vec3& p_force,
123 const glm::vec3& p_torque) {
124 add_force_and_torque(p_id, p_force, p_torque);
127 void set_impulse(uint64_t p_id,
const glm::vec3& p_impulse) {
128 add_impulse(p_id, p_impulse);
132 virtual void destroy_bodies() = 0;
148 virtual void emplace_sphere_collider(
149 uint32_t p_entity_id,
154 virtual void emplace_capsule_collider(
155 uint32_t p_entity_id,
160 virtual transform context_read_transform(uint32_t p_id) = 0;
162 virtual physics_body context_read_physics_body(uint32_t p_id) = 0;
164 virtual void prepare_and_finalize() = 0;
166 virtual void update_simulation(
float p_delta_time) = 0;
168 virtual void linear_velocity(uint64_t p_id,
const glm::vec3&) = 0;
170 virtual void angular_velocity(uint64_t p_id,
const glm::vec3&) = 0;
172 virtual void force(uint64_t p_id,
173 const glm::vec3& p_cumulative_force) = 0;
175 virtual void add_force_and_torque(uint64_t p_id,
176 const glm::vec3& p_force,
177 const glm::vec3& p_torque) = 0;
179 virtual void add_impulse(uint64_t p_id,
const glm::vec3& p_impulse) = 0;
Event bus that holds the responsibility to reroute events to the subscribers of those particular even...
Definition event_bus.hpp:13
The context is the way to interact with specific backend context implementation such as JoltPhysics a...
Definition physics_context.hpp:20
virtual void emplace_box_collider(uint32_t p_entity_id, const transform *p_transform, const physics_body *p_body, const box_collider *p_collider)=0
Any emplace_* specific function are specific collider implementation-specific to the backend (context...
void add_sphere_collider(uint32_t p_entity_id, const transform *p_transform, const physics_body *p_body, const sphere_collider *p_collider)
Definition physics_context.hpp:65
physics_body read_physics_body(uint32_t p_id)
Definition physics_context.hpp:103
transform read_transform(uint32_t p_id)
Definition physics_context.hpp:94
void add_box_collider(uint32_t p_entity_id, const transform *p_transform, const physics_body *p_body, const box_collider *p_collider)
Definition physics_context.hpp:49
void add_capsule_collider(uint32_t p_entity_id, const transform *p_transform, const physics_body *p_body, const capsule_collider *p_collider)
Definition physics_context.hpp:81
void prepare()
As soon all physics bodies/colliders are created.
Definition physics_context.hpp:39
void update(float p_delta_time)
updates our simulation using delta time and works with a fixed timestep
Definition physics_context.hpp:29
void destroy()
Performs cleanup when simulation stops.
Definition physics_context.hpp:25
Types are still be filled out. When this is completed to_jph() can be removed.
Definition jolt_broad_phase.hpp:5
ref< physics_context > initialize_physics_context(const jolt_settings &p_settings, event::event_bus &p_bus)
initializes the physics backend. SHOULD have an API associated with but for now, we assume we only ha...
Definition components.hpp:59
Definition components.hpp:63
Jolt-specific context configurations These are going to be internally integrated to jolt_context.
Definition jolt_components.hpp:53
physics body data-driven representative
Definition components.hpp:34
Definition components.hpp:68