File jolt_api.hpp
File List > atlas > physics > physics_3d > jolt > jolt_api.hpp
Go to the documentation of this file
#pragma once
#include <core/core.hpp>
#include <flecs.h>
#include <physics/physics_3d/physics_api.hpp>
#include <scene/components.hpp>
#include <physics/jolt-cpp/jolt_components.hpp>
namespace atlas::physics {
class jolt_api : public physics_api {
public:
jolt_api(const jolt_config& p_config,
const ref<JPH::PhysicsSystem>& p_physics_system,
const flecs::world& p_registery);
private:
void retrieve_values() override;
void return_values() override;
void add_force(const glm::vec3& p_force,
const uint32_t& p_body_id) override;
void add_linear_velocity(const glm::vec3& p_linear_velocity,
const uint32_t& p_body_id) override;
void add_angular_velocity(const glm::vec3& p_angular_velocity,
const uint32_t& p_body_id) override;
void set_linear_velocity(const glm::vec3& p_velocity,
const uint32_t& p_body_id) override;
void set_angular_velocity(const glm::vec3& p_angular_velocity,
const uint32_t& p_body_id) override;
jolt_config m_config;
ref<JPH::PhysicsSystem> m_physics_system;
flecs::world m_registery;
flecs::query<transform, collider_body> m_read_transform;
flecs::query<physics_body> m_read_body;
flecs::query<transform, collider_body> m_query_transform;
flecs::query<physics_body> m_query_body;
};
};