Fix error when spawning prefab with rigidbody

This commit is contained in:
Wojtek Figat
2021-02-14 16:50:35 +01:00
parent 6bdc31df5a
commit 3bbda838a2
3 changed files with 6 additions and 2 deletions

View File

@@ -43,6 +43,8 @@ Actor::Actor(const SpawnParams& params)
, _staticFlags(StaticFlags::FullyStatic) , _staticFlags(StaticFlags::FullyStatic)
, _localTransform(Transform::Identity) , _localTransform(Transform::Identity)
, _transform(Transform::Identity) , _transform(Transform::Identity)
, _sphere(BoundingSphere::Empty)
, _box(BoundingBox::Empty)
, HideFlags(HideFlags::None) , HideFlags(HideFlags::None)
{ {
} }

View File

@@ -973,7 +973,7 @@ bool Level::loadScene(rapidjson_flax::Value& data, int32 engineBuild, bool autoI
if (obj && obj->GetParent() == nullptr) if (obj && obj->GetParent() == nullptr)
{ {
sceneObjects->At(i) = nullptr; sceneObjects->At(i) = nullptr;
LOG(Warning, "Scene object {0} {1} has missing parent object after scene load. Removing it.", obj->GetID(), obj->ToString()); LOG(Warning, "Scene object {0} {1} has missing parent object after load. Removing it.", obj->GetID(), obj->ToString());
obj->DeleteObject(); obj->DeleteObject();
} }
} }

View File

@@ -181,6 +181,8 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, Actor* parent, Dictionary<Guid
// Prepare parent linkage for prefab root actor // Prepare parent linkage for prefab root actor
root->_parent = parent; root->_parent = parent;
if (parent)
parent->Children.Add(root);
// Link actors hierarchy // Link actors hierarchy
for (int32 i = 0; i < sceneObjects->Count(); i++) for (int32 i = 0; i < sceneObjects->Count(); i++)
@@ -226,7 +228,7 @@ Actor* PrefabManager::SpawnPrefab(Prefab* prefab, Actor* parent, Dictionary<Guid
if (obj && obj->GetParent() == nullptr) if (obj && obj->GetParent() == nullptr)
{ {
sceneObjects->At(i) = nullptr; sceneObjects->At(i) = nullptr;
LOG(Warning, "Scene object {0} {1} has missing parent objct after prefab spawn. Removing it.", obj->GetID(), obj->ToString()); LOG(Warning, "Scene object {0} {1} has missing parent object after load. Removing it.", obj->GetID(), obj->ToString());
obj->DeleteObject(); obj->DeleteObject();
} }
} }