#pragma once #include #include "vector.hpp" #include "object.hpp" class btBroadphaseInterface; class btDefaultCollisionConfiguration; class btCollisionDispatcher; class btSequentialImpulseConstraintSolver; class btDiscreteDynamicsWorld; class Physics { public: Physics(); ~Physics(); void update(float deltaTime); void reset(); void remove_object(prism::Object obj); struct RayResult { bool hasHit; prism::float3 location; }; RayResult raycast(prism::float3 from, prism::float3 to); private: std::unique_ptr broadphase; std::unique_ptr collisionConfiguration; std::unique_ptr dispatcher; std::unique_ptr solver; std::unique_ptr world; };