#pragma once #include #include #include "Rigibody.h" #include "../Timestep.h" #include "../Core/Core.h" #include #include "RaycastResult.h" #include #include "CharacterController.h" namespace Physics { class DynamicWorld { private: btDiscreteDynamicsWorld* dynamicsWorld; std::map> m_Bodies; public: DynamicWorld(); void DrawDebug(); void SetGravity(glm::vec3 g); void AddRigidbody(Ref rb); void AddGhostbody(Ref gb); void AddCharacterController(Ref < CharacterController> cc); RaycastResult Raycast(glm::vec3 from, glm::vec3 to); void StepSimulation(Timestep ts); void Clear(); btDiscreteDynamicsWorld* GetDynamicWorld() { return dynamicsWorld; } }; }