Various minor code cleanup tweaks

This commit is contained in:
Wojtek Figat
2023-06-09 23:26:37 +02:00
parent d798b10d4c
commit 7c55d50507
4 changed files with 9 additions and 31 deletions

View File

@@ -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++;

View File

@@ -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<Guid, const void*>* 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, Dictionary<Guid
LOG(Warning, "Prefab has no objects. {0}", prefab->ToString());
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<ActorsCache::SceneObjectsListType>::ScopeCache sceneObjects = ActorsCache::SceneObjectsListCache.Get();
sceneObjects->Resize(objectsCount);
@@ -255,11 +237,11 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, Actor* parent, Dictionary<Guid
if (!obj)
continue;
const auto prefabObjectId = JsonTools::GetGuid(stream, "ID");
const Guid prefabObjectId = JsonTools::GetGuid(stream, "ID");
if (objectsCache)
objectsCache->Add(prefabObjectId, obj);
obj->LinkPrefab(prefabId, prefabObjectId);
obj->_prefabID = prefabId;
obj->_prefabObjectID = prefabObjectId;
}
// Update transformations

View File

@@ -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())
{

View File

@@ -160,7 +160,7 @@ public:
template<typename T>
static T* Cast(ScriptingObject* obj)
{
return obj && CanCast(obj->GetClass(), T::GetStaticClass()) ? (T*)obj : nullptr;
return obj && CanCast(obj->GetClass(), T::GetStaticClass()) ? static_cast<T*>(obj) : nullptr;
}
bool Is(const ScriptingTypeHandle& type) const;