From 0a6f7ad733c9e8fa696faaa3357905a1d73e02b6 Mon Sep 17 00:00:00 2001 From: antopilo Date: Wed, 8 Mar 2023 21:24:58 -0500 Subject: [PATCH] Added sphere collider + serialization --- Nuake/src/Scene/Components/SphereCollider.h | 19 ++++++++++++++++++- Nuake/src/Scene/Entities/Entity.cpp | 3 +++ Nuake/src/Scene/Systems/PhysicsSystem.cpp | 13 +++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Nuake/src/Scene/Components/SphereCollider.h b/Nuake/src/Scene/Components/SphereCollider.h index 6af49480..9550bd11 100644 --- a/Nuake/src/Scene/Components/SphereCollider.h +++ b/Nuake/src/Scene/Components/SphereCollider.h @@ -7,7 +7,24 @@ namespace Nuake { { public: Ref Sphere; + float Radius = 0.5f; - bool IsTrigger; + bool IsTrigger = false; + + json Serialize() + { + BEGIN_SERIALIZE(); + j["Radius"] = Radius; + j["IsTrigger"] = IsTrigger; + END_SERIALIZE(); + } + + bool Deserialize(const std::string& str) + { + BEGIN_DESERIALIZE(); + this->Radius = j["Radius"]; + this->IsTrigger = j["IsTrigger"]; + return true; + } }; } diff --git a/Nuake/src/Scene/Entities/Entity.cpp b/Nuake/src/Scene/Entities/Entity.cpp index c3045b7e..12405f29 100644 --- a/Nuake/src/Scene/Entities/Entity.cpp +++ b/Nuake/src/Scene/Entities/Entity.cpp @@ -46,6 +46,8 @@ namespace Nuake SERIALIZE_OBJECT_REF_LBL("CharacterControllerComponent", GetComponent()); if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("BoxColliderComponent", GetComponent()); + if (HasComponent()) + SERIALIZE_OBJECT_REF_LBL("SphereColliderComponent", GetComponent()); if (HasComponent()) SERIALIZE_OBJECT_REF_LBL("ModelComponent", GetComponent()); if (HasComponent()) @@ -76,6 +78,7 @@ namespace Nuake DESERIALIZE_COMPONENT(WrenScriptComponent); DESERIALIZE_COMPONENT(CharacterControllerComponent); DESERIALIZE_COMPONENT(BoxColliderComponent); + DESERIALIZE_COMPONENT(SphereColliderComponent); DESERIALIZE_COMPONENT(RigidBodyComponent); return true; } diff --git a/Nuake/src/Scene/Systems/PhysicsSystem.cpp b/Nuake/src/Scene/Systems/PhysicsSystem.cpp index c55592ab..b83d6d64 100644 --- a/Nuake/src/Scene/Systems/PhysicsSystem.cpp +++ b/Nuake/src/Scene/Systems/PhysicsSystem.cpp @@ -2,6 +2,7 @@ #include "src/Scene/Scene.h" #include "src/Scene/Components/BoxCollider.h" #include "src/Scene/Components/SphereCollider.h" +#include "src/Scene/Components/MeshCollider.h" #include #include "src/Scene/Entities/Entity.h" @@ -35,6 +36,18 @@ namespace Nuake Ref boxShape = CreateRef(boxComponent.Size); rigidBody = CreateRef(mass, transform.GetGlobalPosition(), boxShape, ent); + PhysicsManager::Get()->RegisterBody(rigidBody); + } + + if (ent.HasComponent()) + { + float mass = rigidbody.Mass; + + const auto& component = ent.GetComponent(); + auto shape = CreateRef(component.Radius); + + rigidBody = CreateRef(mass, transform.GetGlobalPosition(), shape, ent); + PhysicsManager::Get()->RegisterBody(rigidBody); } if (ent.HasComponent())