Skip to content

File physics_api.hpp

File List > atlas > physics > physics_3d > physics_api.hpp

Go to the documentation of this file

#pragma once
#include <physics/jolt-cpp/jolt_components.hpp>

namespace atlas::physics {

    class physics_api {
    public:
        void update_jolt_values();

        void update_atlas_values();

        void add_force_by_body(const glm::vec3& p_force,
                               const physics_body& p_body);

        // void add_force_by_world_point();

        void add_linear_velocity_by_body(const glm::vec3& p_velocity,
                                         const physics_body& p_body);

        void add_angular_velocity_by_body(const glm::vec3& p_angular_velocity,
                                          const physics_body& p_body);

        void set_linear_velocity_by_body(const glm::vec3& p_velocity,
                                         const physics_body& p_body);

        void set_angular_velocity_by_body(const glm::vec3& p_angular_velocity,
                                          const physics_body& p_body);

        virtual ~physics_api() = default;

    private:
        virtual void retrieve_values() = 0;

        virtual void return_values() = 0;

        virtual void add_force(const glm::vec3& p_force,
                               const uint32_t& p_body_id) = 0;

        // virtual void add_force_world_point(const glm::vec3& force,
        //                                    const glm::vec3& position,
        //                                    const uint32_t& body_id) = 0;

        virtual void add_linear_velocity(const glm::vec3& p_velocity,
                                         const uint32_t& p_body_id) = 0;

        virtual void add_angular_velocity(const glm::vec3& angular_velocity,
                                          const uint32_t& body_id) = 0;

        virtual void set_linear_velocity(const glm::vec3& p_velocity,
                                         const uint32_t& p_body_id) = 0;

        virtual void set_angular_velocity(const glm::vec3& angular_velocity,
                                          const uint32_t& body_id) = 0;
    };
};