#include "SHpch.h" #include "SHSerialization.h" #include #include "Scene/SHSceneManager.h" #include "Tools/SHException.h" #include "SHSerializationHelper.hpp" #include "Math/Transform/SHTransformComponent.h" namespace SHADE { namespace SHSerialization { void SerializeSceneToFile(std::filesystem::path const& path) { } std::string SerializeSceneToString() { YAML::Emitter out; SerializeSceneToEmitter(out); return std::string(out.c_str()); } void SerializeSceneToEmitter(YAML::Emitter& out) { auto const& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); auto root = sceneGraph.GetRoot(); SHASSERT(root != nullptr, "Root is null. Failed to serialize scene to node."); auto const& children = root->GetChildren(); out << YAML::BeginDoc; for (auto child : children) { out << YAML::BeginSeq; out << SerializeEntityToNode(child); out << YAML::EndSeq; } out << YAML::EndDoc; } std::string SerializeEntityToString() { return std::string(); } void SerializeEntityToFile(std::filesystem::path const& path) { } YAML::Node SerializeEntityToNode(SHSceneNode* sceneNode) { YAML::Node node; if(!sceneNode) { node = YAML::Null; return node; } auto eid = sceneNode->GetEntityID(); node["EID"] = eid; node["isActive"] = sceneNode->IsActive(); auto const& children = sceneNode->GetChildren(); node["NumberOfChildren"] = children.size(); YAML::Node components; if(const auto transform = SHComponentManager::GetComponent_s(eid)) { components[rttr::type::get().get_name().data()] = SerializeComponentToNode(transform); } node["Components"] = components; return node; } } }