From 3bbaa7025a29858c3cbc3c7bbc101990acd29bc7 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 10 Mar 2026 17:01:57 +0100 Subject: [PATCH] Fix crash when destroying actor that was left in enabled state #3880 --- Source/Engine/Level/Actor.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Source/Engine/Level/Actor.cpp b/Source/Engine/Level/Actor.cpp index f52fab600..abf62aef0 100644 --- a/Source/Engine/Level/Actor.cpp +++ b/Source/Engine/Level/Actor.cpp @@ -178,21 +178,20 @@ void Actor::OnDeleteObject() _scene = nullptr; } } - else if (_parent) + else { - // Unlink from the parent - _parent->Children.RemoveKeepOrder(this); - _parent->_isHierarchyDirty = true; - _parent = nullptr; - _scene = nullptr; + if (_isEnabled) + OnDisable(); + if (_parent) + { + // Unlink from the parent + _parent->Children.RemoveKeepOrder(this); + _parent->_isHierarchyDirty = true; + _parent = nullptr; + _scene = nullptr; + } } - // Ensure to exit gameplay in a valid way - ASSERT(!IsDuringPlay()); -#if BUILD_DEBUG || BUILD_DEVELOPMENT - ASSERT(!_isEnabled); -#endif - // Fire event Deleted(this);