From 7dced5f9d54bb4b846d36263fed8df965eab9e38 Mon Sep 17 00:00:00 2001 From: LJW-Dev Date: Wed, 8 Oct 2025 21:10:07 +0800 Subject: [PATCH] Update T6 json material loading to include JSON being passed directy instead of a stream. --- .../Material/JsonMaterialLoader.cpp.template | 39 +++++++++++-------- .../Material/JsonMaterialLoader.h.template | 6 +++ 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/ObjLoading/Material/JsonMaterialLoader.cpp.template b/src/ObjLoading/Material/JsonMaterialLoader.cpp.template index 65687955..9ff75e42 100644 --- a/src/ObjLoading/Material/JsonMaterialLoader.cpp.template +++ b/src/ObjLoading/Material/JsonMaterialLoader.cpp.template @@ -32,9 +32,7 @@ #include #include -#include -using namespace nlohmann; using namespace GAME; namespace @@ -42,19 +40,17 @@ namespace class JsonLoader { public: - JsonLoader(std::istream& stream, MemoryManager& memory, AssetCreationContext& context, AssetRegistration& registration) - : m_stream(stream), - m_memory(memory), + JsonLoader(MemoryManager& memory, AssetCreationContext& context, AssetRegistration& registration) + : m_memory(memory), m_context(context), m_registration(registration) { } - bool Load(Material& material) const - { - const auto jRoot = json::parse(m_stream); - std::string type; - unsigned version; + bool Load(json& jRoot, Material& material) const + { + std::string type; + unsigned version; jRoot.at("_type").get_to(type); jRoot.at("_version").get_to(version); @@ -505,7 +501,6 @@ namespace return true; } - std::istream& m_stream; MemoryManager& m_memory; AssetCreationContext& m_context; AssetRegistration& m_registration; @@ -515,10 +510,20 @@ namespace namespace GAME { bool LoadMaterialAsJson( - std::istream& stream, Material& material, MemoryManager& memory, AssetCreationContext& context, AssetRegistration& registration) - { - const JsonLoader loader(stream, memory, context, registration); - - return loader.Load(material); - } + std::istream& stream, Material& material, MemoryManager& memory, AssetCreationContext& context, AssetRegistration& registration) + { + const JsonLoader loader(memory, context, registration); + + auto jRoot = json::parse(stream); + + return loader.Load(jRoot, material); + } + + bool LoadMaterialAsJson( + json& json, Material& material, MemoryManager& memory, AssetCreationContext& context, AssetRegistration& registration) + { + const JsonLoader loader(memory, context, registration); + + return loader.Load(json, material); + } } // namespace GAME diff --git a/src/ObjLoading/Material/JsonMaterialLoader.h.template b/src/ObjLoading/Material/JsonMaterialLoader.h.template index ae57b3b6..8a9dd63e 100644 --- a/src/ObjLoading/Material/JsonMaterialLoader.h.template +++ b/src/ObjLoading/Material/JsonMaterialLoader.h.template @@ -15,9 +15,15 @@ #include "Utils/MemoryManager.h" #include +#include + +using namespace nlohmann; namespace GAME { bool LoadMaterialAsJson( std::istream& stream, Material& material, MemoryManager& memory, AssetCreationContext& context, AssetRegistration& registration); + + bool LoadMaterialAsJson( + json& json, Material& material, MemoryManager& memory, AssetCreationContext& context, AssetRegistration& registration); } // namespace GAME