diff --git a/Editor/src/Windows/WelcomeWindow.cpp b/Editor/src/Windows/WelcomeWindow.cpp index 927a4728..0ebd2ca3 100644 --- a/Editor/src/Windows/WelcomeWindow.cpp +++ b/Editor/src/Windows/WelcomeWindow.cpp @@ -60,10 +60,8 @@ namespace Nuake END_SERIALIZE(); } - bool ProjectPreview::Deserialize(const std::string& str) + bool ProjectPreview::Deserialize(const json& j) { - BEGIN_DESERIALIZE(str); - if (!j.contains("Path")) return false; @@ -89,7 +87,7 @@ namespace Nuake auto projectFileData = FileSystem::ReadFile(queuedProjectPath, true); try { - project->Deserialize(projectFileData); + project->Deserialize(nlohmann::json::parse(projectFileData)); project->FullPath = queuedProjectPath; Engine::LoadProject(project); @@ -302,7 +300,7 @@ namespace Nuake for (auto& project : j["Projects"]) { auto projectPreview = ProjectPreview(); - projectPreview.Deserialize(project.dump()); + projectPreview.Deserialize(project); _Projects.push_back(projectPreview); } } diff --git a/Editor/src/Windows/WelcomeWindow.h b/Editor/src/Windows/WelcomeWindow.h index 6594f560..325bbbe3 100644 --- a/Editor/src/Windows/WelcomeWindow.h +++ b/Editor/src/Windows/WelcomeWindow.h @@ -22,7 +22,7 @@ namespace Nuake ~ProjectPreview() = default; json Serialize() override; - bool Deserialize(const std::string& data) override; + bool Deserialize(const json& j) override; private: void ReadProjectFile(); diff --git a/Nuake/src/Rendering/Camera.cpp b/Nuake/src/Rendering/Camera.cpp index 7b60d972..c3a16dea 100644 --- a/Nuake/src/Rendering/Camera.cpp +++ b/Nuake/src/Rendering/Camera.cpp @@ -111,21 +111,20 @@ namespace Nuake END_SERIALIZE(); } - bool Camera::Deserialize(const std::string& str) + bool Camera::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - j = j["CameraInstance"]; - this->m_Type = (CAMERA_TYPE)j["m_Type"]; - if(j.contains("Translation")) - DESERIALIZE_VEC3(j["Translation"], Translation); + auto& camJson = j["CameraInstance"]; + this->m_Type = (CAMERA_TYPE)camJson["m_Type"]; + if(camJson.contains("Translation")) + DESERIALIZE_VEC3(camJson["Translation"], Translation); //if (j.contains("Direction")) // DESERIALIZE_VEC3(j["Direction"], Direction); - this->AspectRatio = j["AspectRatio"]; - this->Fov = j["Fov"]; - this->Exposure = j["Exposure"]; - this->Speed = j["Speed"]; + this->AspectRatio = camJson["AspectRatio"]; + this->Fov = camJson["Fov"]; + this->Exposure = camJson["Exposure"]; + this->Speed = camJson["Speed"]; return false; } } diff --git a/Nuake/src/Rendering/Camera.h b/Nuake/src/Rendering/Camera.h index a2e20590..9a9371be 100644 --- a/Nuake/src/Rendering/Camera.h +++ b/Nuake/src/Rendering/Camera.h @@ -59,7 +59,7 @@ namespace Nuake bool BoxFrustumCheck(const AABB& aabb); Frustum GetFrustum(); json Serialize() override; - bool Deserialize(const std::string& str) override; + bool Deserialize(const json& j) override; friend EditorCamera; }; diff --git a/Nuake/src/Rendering/Mesh/Mesh.cpp b/Nuake/src/Rendering/Mesh/Mesh.cpp index 944190d2..e5e31743 100644 --- a/Nuake/src/Rendering/Mesh/Mesh.cpp +++ b/Nuake/src/Rendering/Mesh/Mesh.cpp @@ -151,12 +151,10 @@ namespace Nuake END_SERIALIZE(); } - bool Mesh::Deserialize(const std::string& str) - { - BEGIN_DESERIALIZE(); - + bool Mesh::Deserialize(const json& j) + { m_Material = CreateRef(); - m_Material->Deserialize(j["Material"].dump()); + m_Material->Deserialize(j["Material"]); m_Indices.reserve(j["Indices"].size()); for (auto& i : j["Indices"]) diff --git a/Nuake/src/Rendering/Mesh/Mesh.h b/Nuake/src/Rendering/Mesh/Mesh.h index 5e6ecaf1..cbdaf289 100644 --- a/Nuake/src/Rendering/Mesh/Mesh.h +++ b/Nuake/src/Rendering/Mesh/Mesh.h @@ -32,7 +32,7 @@ namespace Nuake inline AABB GetAABB() const { return m_AABB; } json Serialize() override; - bool Deserialize(const std::string& str) override; + bool Deserialize(const json& j) override; private: Ref m_Material = nullptr; std::vector m_Indices; diff --git a/Nuake/src/Rendering/Textures/Material.h b/Nuake/src/Rendering/Textures/Material.h index 2d9986fc..2be3f4aa 100644 --- a/Nuake/src/Rendering/Textures/Material.h +++ b/Nuake/src/Rendering/Textures/Material.h @@ -128,10 +128,8 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(const std::string& str) override + bool Deserialize(const json& j) override { - BEGIN_DESERIALIZE(); - if (j.contains("Path")) { this->Path = j["Path"]; diff --git a/Nuake/src/Rendering/Textures/Texture.h b/Nuake/src/Rendering/Textures/Texture.h index 4510bcac..c24d7dfc 100644 --- a/Nuake/src/Rendering/Textures/Texture.h +++ b/Nuake/src/Rendering/Textures/Texture.h @@ -52,9 +52,8 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(const std::string& str) override + bool Deserialize(const json& j) override { - BEGIN_DESERIALIZE(); if (j.contains("Path")) return false; diff --git a/Nuake/src/Resource/FGD/FGDClass.h b/Nuake/src/Resource/FGD/FGDClass.h index 867f51d3..77e8a4c0 100644 --- a/Nuake/src/Resource/FGD/FGDClass.h +++ b/Nuake/src/Resource/FGD/FGDClass.h @@ -54,9 +54,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) override + bool Deserialize(const json& j) override { - BEGIN_DESERIALIZE(); Name = j["Name"]; Description = j["Description"]; Visible = j["Visible"]; @@ -101,9 +100,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) override + bool Deserialize(const json& j) override { - BEGIN_DESERIALIZE(); Name = j["Name"]; Description = j["Description"]; Prefab = j["Prefab"]; diff --git a/Nuake/src/Resource/FGD/FGDFile.h b/Nuake/src/Resource/FGD/FGDFile.h index 592983ef..f60d18f0 100644 --- a/Nuake/src/Resource/FGD/FGDFile.h +++ b/Nuake/src/Resource/FGD/FGDFile.h @@ -39,15 +39,14 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); if (j.contains("BrushEntities")) { for (auto& brush : j["BrushEntities"]) { FGDBrushEntity brushEntity = FGDBrushEntity(); - brushEntity.Deserialize(brush.dump()); + brushEntity.Deserialize(brush); BrushEntities.push_back(brushEntity); } } @@ -57,7 +56,7 @@ namespace Nuake { for (auto& point : j["PointEntities"]) { FGDPointEntity pointEntity = FGDPointEntity(); - pointEntity.Deserialize(point.dump()); + pointEntity.Deserialize(point); PointEntities.push_back(pointEntity); } } diff --git a/Nuake/src/Resource/Model.cpp b/Nuake/src/Resource/Model.cpp index e4ffbf14..37232d4b 100644 --- a/Nuake/src/Resource/Model.cpp +++ b/Nuake/src/Resource/Model.cpp @@ -45,9 +45,8 @@ namespace Nuake END_SERIALIZE(); } - bool Model::Deserialize(const std::string& str) + bool Model::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); if (j.contains("Path")) { this->IsEmbedded = true; @@ -63,7 +62,7 @@ namespace Nuake for (auto& m : j["Meshes"]) { Ref mesh = CreateRef(); - mesh->Deserialize(m.dump()); + mesh->Deserialize(m); m_Meshes.push_back(mesh); } diff --git a/Nuake/src/Resource/Model.h b/Nuake/src/Resource/Model.h index c0511fa6..e909fb15 100644 --- a/Nuake/src/Resource/Model.h +++ b/Nuake/src/Resource/Model.h @@ -20,7 +20,7 @@ namespace Nuake std::vector>& GetMeshes(); json Serialize() override; - bool Deserialize(const std::string& data) override; + bool Deserialize(const json& j) override; }; } \ No newline at end of file diff --git a/Nuake/src/Resource/Prefab.h b/Nuake/src/Resource/Prefab.h index 6e0241f2..f6de3fbf 100644 --- a/Nuake/src/Resource/Prefab.h +++ b/Nuake/src/Resource/Prefab.h @@ -60,22 +60,22 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) + bool Deserialize(const json& j) { - if (str == "") + if (j == "") return false; - BEGIN_DESERIALIZE(); Path = j["Path"]; if (j.contains("Entities")) { + return true; for (json e : j["Entities"]) { Entity entity = Engine::GetCurrentScene()->CreateEntity("-"); auto& nameComponent = entity.GetComponent(); int entityId = nameComponent.ID; - entity.Deserialize(e.dump()); + entity.Deserialize(e); nameComponent.ID = entityId; this->AddEntity(entity); diff --git a/Nuake/src/Resource/Project.cpp b/Nuake/src/Resource/Project.cpp index 09709e65..9dcec5ca 100644 --- a/Nuake/src/Resource/Project.cpp +++ b/Nuake/src/Resource/Project.cpp @@ -103,10 +103,8 @@ namespace Nuake END_SERIALIZE(); } - bool Project::Deserialize(const std::string& str) + bool Project::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - if (!j.contains("Name") || !j.contains("Description")) return false; @@ -118,7 +116,7 @@ namespace Nuake std::string path = j["EntityDefinition"]; EntityDefinitionsFile = CreateRef(path); std::string content = FileSystem::ReadFile(path, false); - EntityDefinitionsFile->Deserialize(content); + EntityDefinitionsFile->Deserialize(nlohmann::json::parse(content)); } if (j.contains("TrenchbroomPath")) @@ -140,7 +138,7 @@ namespace Nuake return true; std::string sceneContent = FileSystem::ReadFile(scenePath, false); - if (!DefaultScene->Deserialize(sceneContent)) + if (!DefaultScene->Deserialize(nlohmann::json::parse(sceneContent))) { Logger::Log("Error loading scene: " + scenePath, "project", CRITICAL); } diff --git a/Nuake/src/Resource/Project.h b/Nuake/src/Resource/Project.h index ee3fb232..d340058c 100644 --- a/Nuake/src/Resource/Project.h +++ b/Nuake/src/Resource/Project.h @@ -33,6 +33,6 @@ namespace Nuake static Ref Load(std::string& path); json Serialize() override; - bool Deserialize(const std::string& str) override; + bool Deserialize(const json& j) override; }; } diff --git a/Nuake/src/Resource/ResourceLoader.h b/Nuake/src/Resource/ResourceLoader.h index 0f7c2df0..1edc84bd 100644 --- a/Nuake/src/Resource/ResourceLoader.h +++ b/Nuake/src/Resource/ResourceLoader.h @@ -49,7 +49,7 @@ namespace Nuake Ref material = CreateRef(); material->ID = uuid; material->Path = path; - material->Deserialize(j.dump()); + material->Deserialize(j); ResourceManager::RegisterResource(material); return material; diff --git a/Nuake/src/Resource/Serializable.h b/Nuake/src/Resource/Serializable.h index d8ce5d2f..8402aaa4 100644 --- a/Nuake/src/Resource/Serializable.h +++ b/Nuake/src/Resource/Serializable.h @@ -38,11 +38,11 @@ using json = nlohmann::json; #define BEGIN_DESERIALIZE() json j = json::parse(str); #define DESERIALIZE_COMPONENT(c) \ if(j.contains(#c)) \ - AddComponent().Deserialize(j[#c].dump()); + AddComponent().Deserialize(j[#c]); class ISerializable { public: virtual json Serialize() = 0; - virtual bool Deserialize(const std::string& str) = 0; + virtual bool Deserialize(const json& j) = 0; }; diff --git a/Nuake/src/Scene/Components/BSPBrushComponent.h b/Nuake/src/Scene/Components/BSPBrushComponent.h index e937accf..efdf46ca 100644 --- a/Nuake/src/Scene/Components/BSPBrushComponent.h +++ b/Nuake/src/Scene/Components/BSPBrushComponent.h @@ -54,10 +54,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - if (j.contains("IsSolid")) { IsSolid = j["IsSolid"]; diff --git a/Nuake/src/Scene/Components/BaseComponent.h b/Nuake/src/Scene/Components/BaseComponent.h index 2e3681ad..97e38852 100644 --- a/Nuake/src/Scene/Components/BaseComponent.h +++ b/Nuake/src/Scene/Components/BaseComponent.h @@ -12,10 +12,8 @@ struct VisibilityComponent END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - if (j.contains("Visible")) { Visible = j["Visible"]; diff --git a/Nuake/src/Scene/Components/BoxCollider.cpp b/Nuake/src/Scene/Components/BoxCollider.cpp index 3456186b..f6f0292d 100644 --- a/Nuake/src/Scene/Components/BoxCollider.cpp +++ b/Nuake/src/Scene/Components/BoxCollider.cpp @@ -12,9 +12,8 @@ namespace Nuake END_SERIALIZE(); } - bool BoxColliderComponent::Deserialize(const std::string& str) + bool BoxColliderComponent::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); this->IsTrigger = j["IsTrigger"]; this->Size = Vector3(j["Size"]["x"], j["Size"]["y"], j["Size"]["z"]); return true; diff --git a/Nuake/src/Scene/Components/BoxCollider.h b/Nuake/src/Scene/Components/BoxCollider.h index 4cc88f8e..dd67bf08 100644 --- a/Nuake/src/Scene/Components/BoxCollider.h +++ b/Nuake/src/Scene/Components/BoxCollider.h @@ -11,7 +11,7 @@ namespace Nuake { bool IsTrigger = false; json Serialize(); - bool Deserialize(const std::string& str); + bool Deserialize(const json& j); }; } \ No newline at end of file diff --git a/Nuake/src/Scene/Components/CameraComponent.h b/Nuake/src/Scene/Components/CameraComponent.h index 93e1e7d1..9f9771de 100644 --- a/Nuake/src/Scene/Components/CameraComponent.h +++ b/Nuake/src/Scene/Components/CameraComponent.h @@ -23,11 +23,11 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { CameraInstance = CreateRef(); - return CameraInstance->Deserialize(str); + return CameraInstance->Deserialize(j); } }; } \ No newline at end of file diff --git a/Nuake/src/Scene/Components/CapsuleColliderComponent.cpp b/Nuake/src/Scene/Components/CapsuleColliderComponent.cpp index 535055e6..ce9b2458 100644 --- a/Nuake/src/Scene/Components/CapsuleColliderComponent.cpp +++ b/Nuake/src/Scene/Components/CapsuleColliderComponent.cpp @@ -13,9 +13,8 @@ namespace Nuake END_SERIALIZE() } - bool CapsuleColliderComponent::Deserialize(const std::string& str) + bool CapsuleColliderComponent::Deserialize(const json& j) { - BEGIN_DESERIALIZE() this->IsTrigger = j["IsTrigger"]; this->Radius = j["Radius"]; this->Height = j["Height"]; diff --git a/Nuake/src/Scene/Components/CapsuleColliderComponent.h b/Nuake/src/Scene/Components/CapsuleColliderComponent.h index 359bf02f..824cbfc9 100644 --- a/Nuake/src/Scene/Components/CapsuleColliderComponent.h +++ b/Nuake/src/Scene/Components/CapsuleColliderComponent.h @@ -15,6 +15,6 @@ namespace Nuake bool IsTrigger = false; json Serialize(); - bool Deserialize(const std::string& str); + bool Deserialize(const json& str); }; } diff --git a/Nuake/src/Scene/Components/CharacterControllerComponent.h b/Nuake/src/Scene/Components/CharacterControllerComponent.h index b7f3cfbd..b8e2ede6 100644 --- a/Nuake/src/Scene/Components/CharacterControllerComponent.h +++ b/Nuake/src/Scene/Components/CharacterControllerComponent.h @@ -23,10 +23,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - if (j.contains("Friction")) { Friction = j["Friction"]; diff --git a/Nuake/src/Scene/Components/CylinderColliderComponent.cpp b/Nuake/src/Scene/Components/CylinderColliderComponent.cpp index 58c905ed..012bd8c7 100644 --- a/Nuake/src/Scene/Components/CylinderColliderComponent.cpp +++ b/Nuake/src/Scene/Components/CylinderColliderComponent.cpp @@ -13,9 +13,8 @@ namespace Nuake END_SERIALIZE() } - bool CylinderColliderComponent::Deserialize(const std::string& str) + bool CylinderColliderComponent::Deserialize(const json& j) { - BEGIN_DESERIALIZE() this->IsTrigger = j["IsTrigger"]; this->Radius = j["Radius"]; this->Height = j["Height"]; diff --git a/Nuake/src/Scene/Components/CylinderColliderComponent.h b/Nuake/src/Scene/Components/CylinderColliderComponent.h index 54e9146e..df530f68 100644 --- a/Nuake/src/Scene/Components/CylinderColliderComponent.h +++ b/Nuake/src/Scene/Components/CylinderColliderComponent.h @@ -15,6 +15,6 @@ namespace Nuake bool IsTrigger = false; json Serialize(); - bool Deserialize(const std::string& str); + bool Deserialize(const json& j); }; } diff --git a/Nuake/src/Scene/Components/InterfaceComponent.h b/Nuake/src/Scene/Components/InterfaceComponent.h index bc0381d2..b0e93c25 100644 --- a/Nuake/src/Scene/Components/InterfaceComponent.h +++ b/Nuake/src/Scene/Components/InterfaceComponent.h @@ -17,10 +17,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - if (j.contains("Interface")) SetInterface(j["Interface"]); diff --git a/Nuake/src/Scene/Components/LightComponent.h b/Nuake/src/Scene/Components/LightComponent.h index 321fb07e..d1f88b32 100644 --- a/Nuake/src/Scene/Components/LightComponent.h +++ b/Nuake/src/Scene/Components/LightComponent.h @@ -168,9 +168,8 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); if (j.contains("Type")) Type = (LightType)j["Type"]; if (j.contains("IsVolumetric")) diff --git a/Nuake/src/Scene/Components/MeshCollider.h b/Nuake/src/Scene/Components/MeshCollider.h index eaca94cc..6d4d5338 100644 --- a/Nuake/src/Scene/Components/MeshCollider.h +++ b/Nuake/src/Scene/Components/MeshCollider.h @@ -18,9 +18,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); this->IsTrigger = j["IsTrigger"]; this->SubMesh = j["SubMesh"]; return true; diff --git a/Nuake/src/Scene/Components/ModelComponent.h b/Nuake/src/Scene/Components/ModelComponent.h index ea1083ca..c93e39d3 100644 --- a/Nuake/src/Scene/Components/ModelComponent.h +++ b/Nuake/src/Scene/Components/ModelComponent.h @@ -27,16 +27,15 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(const std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); ModelPath = j["ModelPath"]; ModelResource = CreateRef(); if (j.contains("ModelResource")) { auto& res = j["ModelResource"]; - ModelResource->Deserialize(res.dump()); + ModelResource->Deserialize(res); } return true; diff --git a/Nuake/src/Scene/Components/NameComponent.h b/Nuake/src/Scene/Components/NameComponent.h index fba2211a..ca091733 100644 --- a/Nuake/src/Scene/Components/NameComponent.h +++ b/Nuake/src/Scene/Components/NameComponent.h @@ -18,9 +18,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); Name = j["Name"]; if (j.contains("ID")) diff --git a/Nuake/src/Scene/Components/ParentComponent.h b/Nuake/src/Scene/Components/ParentComponent.h index 4fca341d..cd167a7b 100644 --- a/Nuake/src/Scene/Components/ParentComponent.h +++ b/Nuake/src/Scene/Components/ParentComponent.h @@ -41,9 +41,8 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); this->HasParent = j["HasParent"]; if (HasParent) { diff --git a/Nuake/src/Scene/Components/ParticleEmitterComponent.cpp b/Nuake/src/Scene/Components/ParticleEmitterComponent.cpp index 31cec4af..e89b1b9a 100644 --- a/Nuake/src/Scene/Components/ParticleEmitterComponent.cpp +++ b/Nuake/src/Scene/Components/ParticleEmitterComponent.cpp @@ -15,9 +15,8 @@ namespace Nuake END_SERIALIZE(); } - bool ParticleEmitterComponent::Deserialize(const std::string& str) + bool ParticleEmitterComponent::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); DESERIALIZE_VEC4(j["ParticleColor"], ParticleColor); Amount = j["Amount"]; Life = j["Life"]; diff --git a/Nuake/src/Scene/Components/ParticleEmitterComponent.h b/Nuake/src/Scene/Components/ParticleEmitterComponent.h index f4081ffa..1e9f3763 100644 --- a/Nuake/src/Scene/Components/ParticleEmitterComponent.h +++ b/Nuake/src/Scene/Components/ParticleEmitterComponent.h @@ -29,6 +29,6 @@ namespace Nuake public: json Serialize(); - bool Deserialize(const std::string& str); + bool Deserialize(const json& j); }; } \ No newline at end of file diff --git a/Nuake/src/Scene/Components/QuakeMap.h b/Nuake/src/Scene/Components/QuakeMap.h index d1624a3f..1dd9826a 100644 --- a/Nuake/src/Scene/Components/QuakeMap.h +++ b/Nuake/src/Scene/Components/QuakeMap.h @@ -30,9 +30,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); if (j.contains("AutoRebuild")) { this->AutoRebuild = j["AutoRebuild"]; diff --git a/Nuake/src/Scene/Components/RigidbodyComponent.h b/Nuake/src/Scene/Components/RigidbodyComponent.h index 508b6597..7a7c8442 100644 --- a/Nuake/src/Scene/Components/RigidbodyComponent.h +++ b/Nuake/src/Scene/Components/RigidbodyComponent.h @@ -32,9 +32,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); Mass = j["Mass"]; return true; } diff --git a/Nuake/src/Scene/Components/SphereCollider.h b/Nuake/src/Scene/Components/SphereCollider.h index 9550bd11..664080f9 100644 --- a/Nuake/src/Scene/Components/SphereCollider.h +++ b/Nuake/src/Scene/Components/SphereCollider.h @@ -19,9 +19,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Deserialize(const std::string& str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); this->Radius = j["Radius"]; this->IsTrigger = j["IsTrigger"]; return true; diff --git a/Nuake/src/Scene/Components/SpriteComponent.cpp b/Nuake/src/Scene/Components/SpriteComponent.cpp index db0fdad0..9a696646 100644 --- a/Nuake/src/Scene/Components/SpriteComponent.cpp +++ b/Nuake/src/Scene/Components/SpriteComponent.cpp @@ -45,10 +45,8 @@ namespace Nuake END_SERIALIZE(); } - bool SpriteComponent::Deserialize(const std::string& str) + bool SpriteComponent::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - if (j.contains("Billboard")) { Billboard = j["Billboard"]; diff --git a/Nuake/src/Scene/Components/SpriteComponent.h b/Nuake/src/Scene/Components/SpriteComponent.h index 465abd3e..36ee0fbe 100644 --- a/Nuake/src/Scene/Components/SpriteComponent.h +++ b/Nuake/src/Scene/Components/SpriteComponent.h @@ -20,6 +20,6 @@ namespace Nuake bool LoadSprite(); json Serialize(); - bool Deserialize(const std::string& str); + bool Deserialize(const json& j); }; } diff --git a/Nuake/src/Scene/Components/TransformComponent.h b/Nuake/src/Scene/Components/TransformComponent.h index dbc8062f..de35568b 100644 --- a/Nuake/src/Scene/Components/TransformComponent.h +++ b/Nuake/src/Scene/Components/TransformComponent.h @@ -57,9 +57,8 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); this->Translation = Vector3(j["Translation"]["x"], j["Translation"]["y"], j["Translation"]["z"]); if (j.contains("GlobalTranslation")) diff --git a/Nuake/src/Scene/Components/WrenScriptComponent.h b/Nuake/src/Scene/Components/WrenScriptComponent.h index 57bbf47c..754a9537 100644 --- a/Nuake/src/Scene/Components/WrenScriptComponent.h +++ b/Nuake/src/Scene/Components/WrenScriptComponent.h @@ -33,9 +33,8 @@ namespace Nuake END_SERIALIZE(); } - bool Deserialize(std::string str) + bool Deserialize(const json& j) { - BEGIN_DESERIALIZE(); if (j.contains("Script")) { Script = j["Script"]; diff --git a/Nuake/src/Scene/EditorCamera.cpp b/Nuake/src/Scene/EditorCamera.cpp index 79d0c177..a89576f0 100644 --- a/Nuake/src/Scene/EditorCamera.cpp +++ b/Nuake/src/Scene/EditorCamera.cpp @@ -222,10 +222,8 @@ namespace Nuake return j; } - bool EditorCamera::Deserialize(const std::string& str) + bool EditorCamera::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); - DESERIALIZE_VEC3(j["Translation"], Translation); SetYaw(j["Yaw"]); SetPitch(j["Pitch"]); diff --git a/Nuake/src/Scene/EditorCamera.h b/Nuake/src/Scene/EditorCamera.h index a3848a8b..d65d36bc 100644 --- a/Nuake/src/Scene/EditorCamera.h +++ b/Nuake/src/Scene/EditorCamera.h @@ -21,7 +21,7 @@ namespace Nuake Ref Copy(); json Serialize(); - bool Deserialize(const std::string& str); + bool Deserialize(const json& j); void SetYaw(float yaw); void SetPitch(float pitch); diff --git a/Nuake/src/Scene/Entities/Entity.cpp b/Nuake/src/Scene/Entities/Entity.cpp index 706616d0..2e1b4928 100644 --- a/Nuake/src/Scene/Entities/Entity.cpp +++ b/Nuake/src/Scene/Entities/Entity.cpp @@ -73,9 +73,8 @@ namespace Nuake END_SERIALIZE(); } - bool Entity::Deserialize(const std::string& str) + bool Entity::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); DESERIALIZE_COMPONENT(TransformComponent) DESERIALIZE_COMPONENT(VisibilityComponent) else diff --git a/Nuake/src/Scene/Entities/Entity.h b/Nuake/src/Scene/Entities/Entity.h index 2f197050..305034a4 100644 --- a/Nuake/src/Scene/Entities/Entity.h +++ b/Nuake/src/Scene/Entities/Entity.h @@ -64,7 +64,7 @@ namespace Nuake } json Serialize() override; - bool Deserialize(const std::string& str); + bool Deserialize(const json& str); Scene* GetScene() { return m_Scene; diff --git a/Nuake/src/Scene/Environment/ProceduralSky.cpp b/Nuake/src/Scene/Environment/ProceduralSky.cpp index ff45bd2c..b517e2ce 100644 --- a/Nuake/src/Scene/Environment/ProceduralSky.cpp +++ b/Nuake/src/Scene/Environment/ProceduralSky.cpp @@ -112,9 +112,8 @@ namespace Nuake END_SERIALIZE(); } - bool ProceduralSky::Deserialize(const std::string& str) + bool ProceduralSky::Deserialize(const json& j) { - BEGIN_DESERIALIZE() DESERIALIZE_VEC3(j["SunDirection"], SunDirection) DESERIALIZE_VEC3(j["RayleighScattering"], RayleighScattering) DESERIALIZE_VEC3(j["MieScattering"], MieScattering) diff --git a/Nuake/src/Scene/Environment/ProceduralSky.h b/Nuake/src/Scene/Environment/ProceduralSky.h index 9a1f4b73..334a8f0d 100644 --- a/Nuake/src/Scene/Environment/ProceduralSky.h +++ b/Nuake/src/Scene/Environment/ProceduralSky.h @@ -28,6 +28,6 @@ namespace Nuake Ref Copy(); json Serialize() override; - bool Deserialize(const std::string& str) override; + bool Deserialize(const json& j) override; }; } diff --git a/Nuake/src/Scene/Lighting/Environment.cpp b/Nuake/src/Scene/Lighting/Environment.cpp index 741753f1..282d4795 100644 --- a/Nuake/src/Scene/Lighting/Environment.cpp +++ b/Nuake/src/Scene/Lighting/Environment.cpp @@ -59,9 +59,8 @@ namespace Nuake { END_SERIALIZE(); } - bool Environment::Deserialize(const std::string& str) + bool Environment::Deserialize(const json& j) { - BEGIN_DESERIALIZE(); if (j.contains("CurrentSkyType")) CurrentSkyType = j["CurrentSkyType"]; if (j.contains("VolumetricFog")) @@ -70,7 +69,7 @@ namespace Nuake { VolumetricStepCount = j["VolumetricStepCount"]; if (j.contains("ProceduralSkybox")) { - ProceduralSkybox->Deserialize(j["ProceduralSkybox"].dump()); + ProceduralSkybox->Deserialize(j["ProceduralSkybox"]); } return false; diff --git a/Nuake/src/Scene/Lighting/Environment.h b/Nuake/src/Scene/Lighting/Environment.h index 2698edd9..33918997 100644 --- a/Nuake/src/Scene/Lighting/Environment.h +++ b/Nuake/src/Scene/Lighting/Environment.h @@ -53,6 +53,6 @@ namespace Nuake Ref Copy(); json Serialize() override; - bool Deserialize(const std::string& str) override; + bool Deserialize(const json& j) override; }; } diff --git a/Nuake/src/Scene/Scene.cpp b/Nuake/src/Scene/Scene.cpp index 60596d92..41e59297 100644 --- a/Nuake/src/Scene/Scene.cpp +++ b/Nuake/src/Scene/Scene.cpp @@ -367,7 +367,7 @@ namespace Nuake { json serializedScene = Serialize(); - sceneCopy->Deserialize(serializedScene.dump()); + sceneCopy->Deserialize(serializedScene); return sceneCopy; } @@ -392,12 +392,11 @@ namespace Nuake { END_SERIALIZE(); } - bool Scene::Deserialize(const std::string& str) + bool Scene::Deserialize(const json& j) { - if (str == "") + if (j == "") return false; - BEGIN_DESERIALIZE(); if (!j.contains("Name")) return false; @@ -413,8 +412,7 @@ namespace Nuake { if (j.contains("m_Environement")) { m_Environement = CreateRef(); - std::string env = j["m_Environement"].dump(); - m_Environement->Deserialize(env); + m_Environement->Deserialize(j["m_Environement"]); } // Parse entities @@ -427,12 +425,12 @@ namespace Nuake { { std::string name = e["NameComponent"]["Name"]; Entity ent = { m_Registry.create(), this }; - ent.Deserialize(e.dump()); + ent.Deserialize(e); } if (j.contains("m_EditorCamera")) { - m_EditorCamera->Deserialize(j["m_EditorCamera"].dump()); + m_EditorCamera->Deserialize(j["m_EditorCamera"]); } auto view = m_Registry.view(); diff --git a/Nuake/src/Scene/Scene.h b/Nuake/src/Scene/Scene.h index 75c7a325..af317caf 100644 --- a/Nuake/src/Scene/Scene.h +++ b/Nuake/src/Scene/Scene.h @@ -86,6 +86,6 @@ namespace Nuake Ref Copy(); json Serialize() override; - bool Deserialize(const std::string& str) override; + bool Deserialize(const json& j) override; }; }