From 7c55d50507387f86c3a07caf1a9530fb23f9616e Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 9 Jun 2023 23:26:37 +0200 Subject: [PATCH] Various minor code cleanup tweaks --- Source/Engine/Level/Prefabs/Prefab.cpp | 2 -- Source/Engine/Level/Prefabs/PrefabManager.cpp | 32 ++++--------------- .../Localization/LocalizedStringTable.cpp | 4 +-- Source/Engine/Scripting/ScriptingObject.h | 2 +- 4 files changed, 9 insertions(+), 31 deletions(-) diff --git a/Source/Engine/Level/Prefabs/Prefab.cpp b/Source/Engine/Level/Prefabs/Prefab.cpp index 1c0d422a9..9c1060c0f 100644 --- a/Source/Engine/Level/Prefabs/Prefab.cpp +++ b/Source/Engine/Level/Prefabs/Prefab.cpp @@ -105,7 +105,6 @@ Asset::LoadResult Prefab::loadAsset() // Allocate memory for objects ObjectsIds.EnsureCapacity(objectsCount * 2); - NestedPrefabs.EnsureCapacity(objectsCount); ObjectsDataCache.EnsureCapacity(objectsCount * 3); // Find serialized object ids (actors and scripts), they are used later for IDs mapping on prefab spawning via PrefabManager @@ -122,7 +121,6 @@ Asset::LoadResult Prefab::loadAsset() } ObjectsIds.Add(objectId); - ASSERT(!ObjectsDataCache.ContainsKey(objectId)); ObjectsDataCache.Add(objectId, &objData); ObjectsCount++; diff --git a/Source/Engine/Level/Prefabs/PrefabManager.cpp b/Source/Engine/Level/Prefabs/PrefabManager.cpp index 700c86408..4c91bae25 100644 --- a/Source/Engine/Level/Prefabs/PrefabManager.cpp +++ b/Source/Engine/Level/Prefabs/PrefabManager.cpp @@ -38,7 +38,7 @@ PrefabManagerService PrefabManagerServiceInstance; Actor* PrefabManager::SpawnPrefab(Prefab* prefab) { - Actor* parent = Level::Scenes.Count() != 0 ? Level::Scenes[0] : nullptr; + Actor* parent = Level::Scenes.Count() != 0 ? Level::Scenes.Get()[0] : nullptr; return SpawnPrefab(prefab, parent, nullptr); } @@ -46,9 +46,7 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, const Vector3& position) { auto instance = SpawnPrefab(prefab); if (instance) - { instance->SetPosition(position); - } return instance; } @@ -56,12 +54,7 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, const Vector3& position, const { auto instance = SpawnPrefab(prefab); if (instance) - { - auto transform = instance->GetTransform(); - transform.Translation = position; - transform.Orientation = rotation; - instance->SetTransform(transform); - } + instance->SetTransform(Transform(position, rotation, instance->GetScale())); return instance; } @@ -69,13 +62,7 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, const Vector3& position, const { auto instance = SpawnPrefab(prefab); if (instance) - { - Transform transform; - transform.Translation = position; - transform.Orientation = rotation; - transform.Scale = scale; - instance->SetTransform(transform); - } + instance->SetTransform(Transform(position, rotation, scale)); return instance; } @@ -83,17 +70,13 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, const Transform& transform) { auto instance = SpawnPrefab(prefab); if (instance) - { instance->SetTransform(transform); - } return instance; } Actor* PrefabManager::SpawnPrefab(Prefab* prefab, Actor* parent, Dictionary* objectsCache, bool withSynchronization) { PROFILE_CPU_NAMED("Prefab.Spawn"); - - // Validate input if (prefab == nullptr) { Log::ArgumentNullException(); @@ -110,12 +93,11 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, Actor* parent, DictionaryToString()); return nullptr; } + const Guid prefabId = prefab->GetID(); // Note: we need to generate unique Ids for the deserialized objects (actors and scripts) to prevent Ids collisions // Prefab asset during loading caches the object Ids stored inside the file - const Guid prefabId = prefab->GetID(); - // Prepare CollectionPoolCache::ScopeCache sceneObjects = ActorsCache::SceneObjectsListCache.Get(); sceneObjects->Resize(objectsCount); @@ -255,11 +237,11 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, Actor* parent, DictionaryAdd(prefabObjectId, obj); - obj->LinkPrefab(prefabId, prefabObjectId); + obj->_prefabID = prefabId; + obj->_prefabObjectID = prefabObjectId; } // Update transformations diff --git a/Source/Engine/Localization/LocalizedStringTable.cpp b/Source/Engine/Localization/LocalizedStringTable.cpp index e14328f89..578077076 100644 --- a/Source/Engine/Localization/LocalizedStringTable.cpp +++ b/Source/Engine/Localization/LocalizedStringTable.cpp @@ -63,9 +63,7 @@ Asset::LoadResult LocalizedStringTable::loadAsset() return result; JsonTools::GetString(Locale, *Data, "Locale"); - Guid fallbackTable = Guid::Empty; - JsonTools::GetGuid(fallbackTable, *Data, "FallbackTable"); - FallbackTable = fallbackTable; + JsonTools::GetReference(FallbackTable, *Data, "FallbackTable"); const auto entriesMember = SERIALIZE_FIND_MEMBER((*Data), "Entries"); if (entriesMember != Data->MemberEnd() && entriesMember->value.IsObject()) { diff --git a/Source/Engine/Scripting/ScriptingObject.h b/Source/Engine/Scripting/ScriptingObject.h index 183e23297..860226986 100644 --- a/Source/Engine/Scripting/ScriptingObject.h +++ b/Source/Engine/Scripting/ScriptingObject.h @@ -160,7 +160,7 @@ public: template static T* Cast(ScriptingObject* obj) { - return obj && CanCast(obj->GetClass(), T::GetStaticClass()) ? (T*)obj : nullptr; + return obj && CanCast(obj->GetClass(), T::GetStaticClass()) ? static_cast(obj) : nullptr; } bool Is(const ScriptingTypeHandle& type) const;