#include "PhysicsManager.h" #include "PhysicsShapes.h" #include "../Core/Core.h" #include #include #include #include namespace Nuake { PhysicsManager* PhysicsManager::m_Instance; void PhysicsManager::RegisterBody(Ref rb) { m_World->AddRigidbody(rb); } void PhysicsManager::RegisterGhostBody(Ref rb) { m_World->AddGhostbody(rb); } void PhysicsManager::RegisterCharacterController(Ref cc) { m_World->AddCharacterController(cc); } void PhysicsManager::SetBodyTransform(const Entity& entity, const Vector3& position, const Quat& rotation) { m_World->SetBodyPosition(entity, position, rotation); } void PhysicsManager::SetCharacterControllerPosition(const Entity& entity, const Vector3& position) { m_World->SetCharacterControllerPosition(entity, position); } void PhysicsManager::Step(Timestep ts) { m_World->StepSimulation(ts); } void PhysicsManager::Reset() { m_World->Clear(); } std::vector PhysicsManager::Raycast(const Vector3& from, const Vector3& to) { return m_World->Raycast(from, to); } const std::vector& PhysicsManager::GetCollisions() { return m_World->GetCollisionsData(); } void PhysicsManager::DrawDebug() { if (m_DrawDebug) m_World->DrawDebug(); } void PhysicsManager::Init() { JPH::RegisterDefaultAllocator(); JPH::Factory::sInstance = new JPH::Factory(); JPH::RegisterTypes(); m_World = CreateRef(); m_World->SetGravity(Vector3(0, -3, 0)); m_IsRunning = false; } }