From 830c5fddf4c340ec588af60726e8b5184430f4c1 Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Mon, 17 Jul 2023 02:46:19 -0400 Subject: [PATCH] Can now add rigidbodies at runtime --- Nuake/src/Scene/Components/RigidbodyComponent.cpp | 6 +++--- Nuake/src/Scene/Components/RigidbodyComponent.h | 2 +- Nuake/src/Scene/Systems/PhysicsSystem.cpp | 10 ++++++++++ Nuake/src/Scene/Systems/PhysicsSystem.h | 1 - 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Nuake/src/Scene/Components/RigidbodyComponent.cpp b/Nuake/src/Scene/Components/RigidbodyComponent.cpp index 4dd4c3e7..39862b53 100644 --- a/Nuake/src/Scene/Components/RigidbodyComponent.cpp +++ b/Nuake/src/Scene/Components/RigidbodyComponent.cpp @@ -13,18 +13,18 @@ namespace Nuake { Ref RigidBodyComponent::GetRigidBody() const { - return m_Rigidbody; + return Rigidbody; } void RigidBodyComponent::SyncTransformComponent(TransformComponent* tc) { - if (!m_Rigidbody) + if (!GetRigidBody()) return; } void RigidBodyComponent::SyncWithTransform(TransformComponent* tc) { - if (!m_Rigidbody) + if (!GetRigidBody()) return; } diff --git a/Nuake/src/Scene/Components/RigidbodyComponent.h b/Nuake/src/Scene/Components/RigidbodyComponent.h index 7fae80fb..85a54a89 100644 --- a/Nuake/src/Scene/Components/RigidbodyComponent.h +++ b/Nuake/src/Scene/Components/RigidbodyComponent.h @@ -13,7 +13,7 @@ namespace Nuake { { public: float Mass; - Ref m_Rigidbody; + Ref Rigidbody; RigidBodyComponent(); Ref GetRigidBody() const; diff --git a/Nuake/src/Scene/Systems/PhysicsSystem.cpp b/Nuake/src/Scene/Systems/PhysicsSystem.cpp index 2f5e0ff7..6a5839bc 100644 --- a/Nuake/src/Scene/Systems/PhysicsSystem.cpp +++ b/Nuake/src/Scene/Systems/PhysicsSystem.cpp @@ -120,6 +120,8 @@ namespace Nuake if (!Engine::IsPlayMode()) return; + InitializeRigidbodies(); + PhysicsManager::Get().Step(ts); } @@ -227,6 +229,11 @@ namespace Nuake Entity ent = Entity({ e, m_Scene }); Ref rigidBody; + if (rigidBodyComponent.GetRigidBody()) + { + continue; + } + if (ent.HasComponent()) { float mass = rigidBodyComponent.Mass; @@ -276,6 +283,7 @@ namespace Nuake { Logger::Log("Cannot use mesh collider without model component", WARNING); } + const auto& modelComponent = ent.GetComponent(); const auto& component = ent.GetComponent(); @@ -293,6 +301,8 @@ namespace Nuake PhysicsManager::Get().RegisterBody(rigidBody); } } + + rigidBodyComponent.Rigidbody = rigidBody; } } diff --git a/Nuake/src/Scene/Systems/PhysicsSystem.h b/Nuake/src/Scene/Systems/PhysicsSystem.h index 5c14c303..7b639e65 100644 --- a/Nuake/src/Scene/Systems/PhysicsSystem.h +++ b/Nuake/src/Scene/Systems/PhysicsSystem.h @@ -14,7 +14,6 @@ namespace Nuake void Exit() override; private: - void InitializeShapes(); void InitializeQuakeMap(); void InitializeRigidbodies();