#ifndef PhysicsSystem_h__ #define PhysicsSystem_h__ #include "System.h" #include "Components/Transform.h" #include "Components/Physics.h" #include "Components/Sphere.h" #include "Components/Box.h" // Math and base include #include #include #include #include #include #include #include #include // Dynamics includes #include #include #include #include #include #include #include #include // Visual Debugger includes #include #include #include namespace Systems { class PhysicsSystem : public System { public: PhysicsSystem(World* world); void RegisterComponents(ComponentFactory* cf) override; void Update(double dt) override; void UpdateEntity(double dt, EntityID entity, EntityID parent) override; void OnComponentCreated(std::string type, std::shared_ptr component) override; void OnComponentRemoved(std::string type, Component* component) override; private: hkpWorld* m_PhysicsWorld; void SetUpPhysicsState(EntityID entity, EntityID parent); void TearDownPhysicsState(EntityID entity, EntityID parent); hkVisualDebugger* m_VisualDebugger; void SetupVisualDebugger(hkpPhysicsContext* worlds); void StepVisualDebugger(); static void HK_CALL HavokErrorReport(const char* msg, void*); void SetupPhysics(hkpWorld* physicsWorld); std::unordered_map m_RigidBodies; }; } #endif // PhysicsSystem_h__