From d896f4f699778719b4dc663ef42c4a90f7b254d2 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Wed, 17 Feb 2021 11:38:42 +0100 Subject: [PATCH] Fix script error on undo. --- Source/Editor/Modules/SceneEditingModule.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/Editor/Modules/SceneEditingModule.cs b/Source/Editor/Modules/SceneEditingModule.cs index 1cec21305..19edaf7f7 100644 --- a/Source/Editor/Modules/SceneEditingModule.cs +++ b/Source/Editor/Modules/SceneEditingModule.cs @@ -268,9 +268,10 @@ namespace FlaxEditor.Modules Actor actor = (Actor)FlaxEngine.Object.New(to); actionList.Add(new SelectionChangeAction(Selection.ToArray(), new SceneGraphNode[0], OnSelectionUndo)); + actionList[0].Do(); actionList.Add(new DeleteActorsAction(new List { - Editor.SceneEditing.Selection[0] + Editor.Instance.Scene.GetActorNode(old) })); SelectionDeleteBegin?.Invoke(); actionList[1].Do(); @@ -291,9 +292,12 @@ namespace FlaxEditor.Modules actor.IsActive = old.IsActive; for (var i = old.ScriptsCount - 1; i >=0; i--) { - old.Scripts[i].Parent = actor; + var script = old.Scripts[i]; + script.Actor = actor; + Guid newid = Guid.NewGuid(); + FlaxEngine.Object.Internal_ChangeID(FlaxEngine.Object.GetUnmanagedPtr(script), ref newid); } - for (var i = old.Children.Length - 1; i >= 0 ; i--) + for (var i = old.Children.Length - 1; i >= 0; i--) { old.Children[i].Parent = actor; } @@ -315,6 +319,7 @@ namespace FlaxEditor.Modules actorNode }, true)); actionList.Add(new SelectionChangeAction(new SceneGraphNode[0], new SceneGraphNode[]{actorNode}, OnSelectionUndo)); + actionList[3].Do(); var actions = new MultiUndoAction(actionList); Undo.AddAction(actions); SpawnEnd?.Invoke();