From 87b0cc705e11ccf8a001b0fe33dbd3c13756230e Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 19 Sep 2024 10:49:26 +0200 Subject: [PATCH] Add logging missing object reference context when spawning prefab #2414 --- Source/Engine/Core/LogContext.cpp | 5 +++++ Source/Engine/Level/Prefabs/PrefabManager.cpp | 2 ++ 2 files changed, 7 insertions(+) diff --git a/Source/Engine/Core/LogContext.cpp b/Source/Engine/Core/LogContext.cpp index 4264d8759..9df4bce99 100644 --- a/Source/Engine/Core/LogContext.cpp +++ b/Source/Engine/Core/LogContext.cpp @@ -9,6 +9,7 @@ #include "Engine/Scripting/Scripting.h" #include "Engine/Scripting/Script.h" #include "Engine/Content/Asset.h" +#include "Engine/Content/Content.h" #include "Engine/Level/Actor.h" #include "Engine/Threading/ThreadLocal.h" @@ -83,6 +84,10 @@ void LogContext::Print(LogType verbosity) msg.AppendFormat(TEXT("object {} ({})"), String(typeName), context.ObjectID); } } + else if (Asset* asset = Content::GetAsset(context.ObjectID)) + { + msg.AppendFormat(TEXT("asset '{}' ({}, {})"), asset->GetPath(), asset->GetTypeName(), context.ObjectID); + } else { msg.AppendFormat(TEXT("object {}"), context.ObjectID); diff --git a/Source/Engine/Level/Prefabs/PrefabManager.cpp b/Source/Engine/Level/Prefabs/PrefabManager.cpp index 6f89073b1..99fd7d674 100644 --- a/Source/Engine/Level/Prefabs/PrefabManager.cpp +++ b/Source/Engine/Level/Prefabs/PrefabManager.cpp @@ -14,6 +14,7 @@ #include "Engine/Core/Collections/CollectionPoolCache.h" #include "Engine/Profiler/ProfilerCPU.h" #include "Engine/Core/Cache.h" +#include "Engine/Core/LogContext.h" #include "Engine/Debug/Exceptions/ArgumentException.h" #include "Engine/Engine/EngineService.h" #include "Engine/Scripting/Script.h" @@ -122,6 +123,7 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, const Transform& transform, Ac } auto& data = *prefab->Data; SceneObjectsFactory::Context context(modifier.Value); + LogContextScope logContext(prefabId); // Deserialize prefab objects auto prevIdMapping = Scripting::ObjectsLookupIdMapping.Get();