diff --git a/Source/Engine/Level/Actor.cpp b/Source/Engine/Level/Actor.cpp index 020f2d872..de2952df7 100644 --- a/Source/Engine/Level/Actor.cpp +++ b/Source/Engine/Level/Actor.cpp @@ -103,22 +103,28 @@ void Actor::SetSceneInHierarchy(Scene* scene) void Actor::OnEnableInHierarchy() { - OnEnable(); - - for (int32 i = 0; i < Children.Count(); i++) + if (IsActiveInHierarchy() && GetScene() && !_isEnabled) { - Children[i]->OnEnableInHierarchy(); + OnEnable(); + + for (int32 i = 0; i < Children.Count(); i++) + { + Children[i]->OnEnableInHierarchy(); + } } } void Actor::OnDisableInHierarchy() { - for (int32 i = 0; i < Children.Count(); i++) + if (IsActiveInHierarchy() && GetScene() && _isEnabled) { - Children[i]->OnDisableInHierarchy(); - } + for (int32 i = 0; i < Children.Count(); i++) + { + Children[i]->OnDisableInHierarchy(); + } - OnDisable(); + OnDisable(); + } } bool Actor::IsSubClassOf(const Actor* object, const MClass* klass)