diff --git a/Assets/Fungus/FungusScript/Editor/CommandListAdaptor.cs b/Assets/Fungus/FungusScript/Editor/CommandListAdaptor.cs index 5becfc8b..74426af5 100644 --- a/Assets/Fungus/FungusScript/Editor/CommandListAdaptor.cs +++ b/Assets/Fungus/FungusScript/Editor/CommandListAdaptor.cs @@ -90,8 +90,8 @@ namespace Fungus } Command newCommand = Undo.AddComponent(sequence.gameObject) as Command; - fungusScript.selectedCommands.Clear(); - fungusScript.selectedCommands.Add(newCommand); + fungusScript.ClearSelectedCommands(); + fungusScript.AddSelectedCommand(newCommand); return newCommand; } @@ -233,7 +233,7 @@ namespace Fungus } else { - fungusScript.selectedCommands.Add(command); + fungusScript.AddSelectedCommand(command); } GUIUtility.keyboardControl = 0; // Fix for textarea not refeshing (change focus) } diff --git a/Assets/Fungus/FungusScript/Editor/FungusScriptEditor.cs b/Assets/Fungus/FungusScript/Editor/FungusScriptEditor.cs index e05bef4f..9ed38125 100644 --- a/Assets/Fungus/FungusScript/Editor/FungusScriptEditor.cs +++ b/Assets/Fungus/FungusScript/Editor/FungusScriptEditor.cs @@ -35,12 +35,12 @@ namespace Fungus { if (fungusScript.executingSequence == null) { - fungusScript.selectedCommands.Clear(); + fungusScript.ClearSelectedCommands(); } else { - fungusScript.selectedCommands.Clear(); - fungusScript.selectedCommands.Add(fungusScript.executingSequence.activeCommand); + fungusScript.ClearSelectedCommands(); + fungusScript.AddSelectedCommand(fungusScript.executingSequence.activeCommand); EditorUtility.SetDirty(fungusScript); } } @@ -85,7 +85,7 @@ namespace Fungus { if (fungusScript.selectedCommands[0] == null) { - fungusScript.selectedCommands.Clear(); + fungusScript.ClearSelectedCommands(); } else { diff --git a/Assets/Fungus/FungusScript/Editor/FungusScriptWindow.cs b/Assets/Fungus/FungusScript/Editor/FungusScriptWindow.cs index 23ba1931..969a2c54 100755 --- a/Assets/Fungus/FungusScript/Editor/FungusScriptWindow.cs +++ b/Assets/Fungus/FungusScript/Editor/FungusScriptWindow.cs @@ -87,7 +87,7 @@ namespace Fungus Undo.DestroyObjectImmediate(deleteSequence); fungusScript.selectedSequence = null; - fungusScript.selectedCommands.Clear(); + fungusScript.ClearSelectedCommands(); } deleteList.Clear(); @@ -673,7 +673,7 @@ namespace Fungus Undo.RecordObject(fungusScript, "Select All"); foreach (Command command in fungusScript.selectedSequence.commandList) { - fungusScript.selectedCommands.Add(command); + fungusScript.AddSelectedCommand(command); } } @@ -707,7 +707,7 @@ namespace Fungus CommandCopyBuffer commandCopyBuffer = CommandCopyBuffer.GetInstance(); commandCopyBuffer.Clear(); - + foreach (Command command in fungusScript.selectedCommands) { System.Type type = command.GetType(); diff --git a/Assets/Fungus/FungusScript/Editor/SequenceEditor.cs b/Assets/Fungus/FungusScript/Editor/SequenceEditor.cs index dbf3b7fe..f1f1254c 100644 --- a/Assets/Fungus/FungusScript/Editor/SequenceEditor.cs +++ b/Assets/Fungus/FungusScript/Editor/SequenceEditor.cs @@ -294,7 +294,7 @@ namespace Fungus sequence.GetFungusScript().ClearSelectedCommands(); Command newCommand = Undo.AddComponent(sequence.gameObject, commandOperation.commandType) as Command; - sequence.GetFungusScript().selectedCommands.Add(newCommand); + sequence.GetFungusScript().AddSelectedCommand(newCommand); // Let command know it has just been added to the sequence newCommand.OnCommandAdded(sequence); diff --git a/Assets/Fungus/FungusScript/Scripts/CommandCopyBuffer.cs b/Assets/Fungus/FungusScript/Scripts/CommandCopyBuffer.cs index 857a4af0..0311910c 100644 --- a/Assets/Fungus/FungusScript/Scripts/CommandCopyBuffer.cs +++ b/Assets/Fungus/FungusScript/Scripts/CommandCopyBuffer.cs @@ -19,15 +19,16 @@ namespace Fungus // Static variables are not serialized (e.g. when playing in the editor) // We need to reaquire the static reference to the game object in this case GameObject go = GameObject.Find("_CommandCopyBuffer"); - if (go != null) + if (go == null) { - instance = go.GetComponent(); + go = new GameObject("_CommandCopyBuffer"); + go.hideFlags = HideFlags.HideAndDontSave; } - else + + instance = go.GetComponent(); + if (instance == null) { - go = new GameObject("_CommandCopyBuffer"); instance = go.AddComponent(); - go.hideFlags = HideFlags.HideInHierarchy; } } diff --git a/Assets/Fungus/FungusScript/Scripts/FungusScript.cs b/Assets/Fungus/FungusScript/Scripts/FungusScript.cs index 4c7f7f41..786832bd 100644 --- a/Assets/Fungus/FungusScript/Scripts/FungusScript.cs +++ b/Assets/Fungus/FungusScript/Scripts/FungusScript.cs @@ -400,6 +400,14 @@ namespace Fungus { selectedCommands.Clear(); } + + public virtual void AddSelectedCommand(Command command) + { + if (!selectedCommands.Contains(command)) + { + selectedCommands.Add(command); + } + } } } \ No newline at end of file diff --git a/Assets/Fungus/FungusScript/Scripts/Sequence.cs b/Assets/Fungus/FungusScript/Scripts/Sequence.cs index e8ef3c2a..41ba588d 100644 --- a/Assets/Fungus/FungusScript/Scripts/Sequence.cs +++ b/Assets/Fungus/FungusScript/Scripts/Sequence.cs @@ -140,7 +140,7 @@ namespace Fungus activeCommand = null; fungusScript.executingSequence = null; fungusScript.selectedSequence = null; - fungusScript.selectedCommands.Clear(); + fungusScript.ClearSelectedCommands(); } public virtual List GetConnectedSequences()