Fix calling OnParentChanged in Actor load
This commit is contained in:
@@ -948,11 +948,19 @@ void Actor::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
const auto parent = Scripting::FindObject<Actor>(parentId);
|
||||
if (_parent != parent)
|
||||
{
|
||||
if (_parent)
|
||||
_parent->Children.RemoveKeepOrder(this);
|
||||
_parent = parent;
|
||||
if (_parent)
|
||||
_parent->Children.Add(this);
|
||||
if (IsDuringPlay())
|
||||
{
|
||||
SetParent(parent, false, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_parent)
|
||||
_parent->Children.RemoveKeepOrder(this);
|
||||
_parent = parent;
|
||||
if (_parent)
|
||||
_parent->Children.Add(this);
|
||||
OnParentChanged();
|
||||
}
|
||||
}
|
||||
else if (!parent && parentId.IsValid())
|
||||
{
|
||||
@@ -1044,6 +1052,10 @@ void Actor::OnDisable()
|
||||
}
|
||||
}
|
||||
|
||||
void Actor::OnParentChanged()
|
||||
{
|
||||
}
|
||||
|
||||
void Actor::OnTransformChanged()
|
||||
{
|
||||
ASSERT_LOW_LAYER(!_localTransform.IsNanOrInfinity());
|
||||
|
||||
@@ -918,9 +918,7 @@ public:
|
||||
/// <summary>
|
||||
/// Called when actor parent gets changed.
|
||||
/// </summary>
|
||||
virtual void OnParentChanged()
|
||||
{
|
||||
}
|
||||
virtual void OnParentChanged();
|
||||
|
||||
/// <summary>
|
||||
/// Called when actor transform gets changed.
|
||||
|
||||
@@ -104,6 +104,9 @@ void BoneSocket::OnParentChanged()
|
||||
{
|
||||
// Base
|
||||
Actor::OnParentChanged();
|
||||
|
||||
if (!IsDuringPlay())
|
||||
return;
|
||||
|
||||
_index = -1;
|
||||
UpdateTransformation();
|
||||
|
||||
@@ -272,6 +272,9 @@ void BoxBrush::OnParentChanged()
|
||||
{
|
||||
// Base
|
||||
Actor::OnParentChanged();
|
||||
|
||||
if (!IsDuringPlay())
|
||||
return;
|
||||
|
||||
// Fire event
|
||||
OnBrushModified();
|
||||
|
||||
@@ -295,6 +295,9 @@ void Joint::OnParentChanged()
|
||||
// Base
|
||||
Actor::OnParentChanged();
|
||||
|
||||
if (!IsDuringPlay())
|
||||
return;
|
||||
|
||||
// Check reparenting Joint case
|
||||
const auto parent = dynamic_cast<IPhysicsActor*>(GetParent());
|
||||
if (parent == nullptr)
|
||||
|
||||
@@ -156,6 +156,9 @@ void UIControl::OnParentChanged()
|
||||
// Base
|
||||
Actor::OnParentChanged();
|
||||
|
||||
if (!IsDuringPlay())
|
||||
return;
|
||||
|
||||
UICONTROL_INVOKE(ParentChanged);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user