Fixed Serialization Transfer.

This commit is contained in:
Menotdan
2023-10-12 12:00:27 -04:00
parent 318f9e5b77
commit a8260ed8b6
2 changed files with 44 additions and 18 deletions

View File

@@ -103,25 +103,8 @@ public class MissingScriptEditor : GenericEditor
return missingScripts;
}
private void ReplaceScript(ScriptType script, bool replaceAllInScene)
private void RunReplacementMulticast(List<IUndoAction> actions)
{
var actions = new List<IUndoAction>(4);
List<MissingScript> missingScripts = new List<MissingScript>();
if (!replaceAllInScene)
{
missingScripts.Add(Values[0] as MissingScript);
} else
{
missingScripts.AddRange(FindActorsWithMatchingMissingScript());
}
foreach (MissingScript missingScript in missingScripts)
{
actions.Add(AddRemoveScript.Add(missingScript.Actor, script));
actions.Add(AddRemoveScript.Remove(missingScript));
}
if (actions.Count == 0)
{
Editor.LogWarning("Failed to replace scripts!");
@@ -138,6 +121,43 @@ public class MissingScriptEditor : GenericEditor
}
}
private void ReplaceScript(ScriptType script, bool replaceAllInScene)
{
var actions = new List<IUndoAction>(4);
List<MissingScript> missingScripts = new List<MissingScript>();
if (!replaceAllInScene)
{
missingScripts.Add(Values[0] as MissingScript);
} else
{
missingScripts = FindActorsWithMatchingMissingScript();
}
foreach (MissingScript missingScript in missingScripts)
{
AddRemoveScript addReplacementScriptAction = AddRemoveScript.Add(missingScript.Actor, script);
actions.Add(addReplacementScriptAction);
}
RunReplacementMulticast(actions);
for (int actionIdx = 0; actionIdx < actions.Count; actionIdx++)
{
AddRemoveScript addRemoveScriptAction = (AddRemoveScript) actions[actionIdx];
int orderInParent = addRemoveScriptAction.GetOrderInParent();
Script newScript = missingScripts[actionIdx].Actor.Scripts[orderInParent];
missingScripts[actionIdx].ReferenceScript = newScript;
}
actions.Clear();
foreach (MissingScript missingScript in missingScripts)
{
actions.Add(AddRemoveScript.Remove(missingScript));
}
RunReplacementMulticast(actions);
}
private void OnReplaceScriptButtonClicked()
{
var scripts = Editor.Instance.CodeEditing.Scripts.Get();