public static Sequence CreateSequence(FungusScript fungusScript, Vector2 position) { Sequence newSequence = fungusScript.CreateSequence(position); Undo.RegisterCreatedObjectUndo(newSequence, "New Sequence"); ShowSequenceInspector(fungusScript); fungusScript.selectedSequence = newSequence; fungusScript.ClearSelectedCommands(); return(newSequence); }
void CreateSequenceCallback(object item) { FungusScript fungusScript = GetFungusScript(); if (fungusScript != null) { Vector2 position = (Vector2)item; position -= fungusScript.scriptScrollPos; Sequence newSequence = fungusScript.CreateSequence(position); Undo.RegisterCreatedObjectUndo(newSequence, "New Sequence"); fungusScript.selectedSequence = newSequence; } }
void DrawSequenceView(FungusScript fungusScript) { GUILayout.Space(5); fungusScript.commandScrollPos = GUILayout.BeginScrollView(fungusScript.commandScrollPos); EditorGUILayout.BeginVertical(); GUILayout.Box("Sequence", GUILayout.ExpandWidth(true)); GUILayout.BeginHorizontal(); if (fungusScript.selectedSequence == null) { GUILayout.FlexibleSpace(); } if (GUILayout.Button(fungusScript.selectedSequence == null ? "Create Sequence" : "Create", fungusScript.selectedSequence == null ? EditorStyles.miniButton : EditorStyles.miniButtonLeft)) { Sequence newSequence = fungusScript.CreateSequence(fungusScript.scriptScrollPos); Undo.RegisterCreatedObjectUndo(newSequence, "New Sequence"); fungusScript.selectedSequence = newSequence; fungusScript.selectedCommand = null; } if (fungusScript.selectedSequence == null) { GUILayout.FlexibleSpace(); } if (fungusScript.selectedSequence != null) { if (GUILayout.Button("Delete", EditorStyles.miniButtonMid)) { Undo.DestroyObjectImmediate(fungusScript.selectedSequence.gameObject); fungusScript.selectedSequence = null; fungusScript.selectedCommand = null; } if (GUILayout.Button("Duplicate", EditorStyles.miniButtonRight)) { GameObject copy = GameObject.Instantiate(fungusScript.selectedSequence.gameObject) as GameObject; copy.transform.parent = fungusScript.transform; copy.transform.hideFlags = HideFlags.HideInHierarchy; copy.name = fungusScript.selectedSequence.name; Sequence sequenceCopy = copy.GetComponent<Sequence>(); sequenceCopy.nodeRect.x += sequenceCopy.nodeRect.width + 10; Undo.RegisterCreatedObjectUndo(copy, "Duplicate Sequence"); fungusScript.selectedSequence = sequenceCopy; fungusScript.selectedCommand = null; } } GUILayout.EndHorizontal(); if (fungusScript.selectedSequence != null) { EditorGUILayout.Separator(); SequenceEditor sequenceEditor = Editor.CreateEditor(fungusScript.selectedSequence) as SequenceEditor; sequenceEditor.DrawSequenceGUI(fungusScript); DestroyImmediate(sequenceEditor); GUILayout.FlexibleSpace(); } EditorGUILayout.EndVertical(); GUILayout.EndScrollView(); }
void DrawSequenceView(FungusScript fungusScript) { GUILayout.Space(5); fungusScript.commandScrollPos = GUILayout.BeginScrollView(fungusScript.commandScrollPos); EditorGUILayout.BeginVertical(); GUILayout.Box("Sequence", GUILayout.ExpandWidth(true)); GUILayout.BeginHorizontal(); if (fungusScript.selectedSequence == null) { GUILayout.FlexibleSpace(); } if (GUILayout.Button(fungusScript.selectedSequence == null ? "Create Sequence" : "Create", fungusScript.selectedSequence == null ? EditorStyles.miniButton : EditorStyles.miniButtonLeft)) { Sequence newSequence = fungusScript.CreateSequence(fungusScript.scriptScrollPos); Undo.RegisterCreatedObjectUndo(newSequence, "New Sequence"); fungusScript.selectedSequence = newSequence; fungusScript.selectedCommand = null; } if (fungusScript.selectedSequence == null) { GUILayout.FlexibleSpace(); } if (fungusScript.selectedSequence != null) { if (GUILayout.Button("Delete", EditorStyles.miniButtonMid)) { Undo.DestroyObjectImmediate(fungusScript.selectedSequence.gameObject); fungusScript.selectedSequence = null; fungusScript.selectedCommand = null; } if (GUILayout.Button("Duplicate", EditorStyles.miniButtonRight)) { GameObject copy = GameObject.Instantiate(fungusScript.selectedSequence.gameObject) as GameObject; copy.transform.parent = fungusScript.transform; copy.transform.hideFlags = HideFlags.HideInHierarchy; copy.name = fungusScript.selectedSequence.name; Sequence sequenceCopy = copy.GetComponent <Sequence>(); sequenceCopy.nodeRect.x += sequenceCopy.nodeRect.width + 10; Undo.RegisterCreatedObjectUndo(copy, "Duplicate Sequence"); fungusScript.selectedSequence = sequenceCopy; fungusScript.selectedCommand = null; } } GUILayout.EndHorizontal(); if (fungusScript.selectedSequence != null) { EditorGUILayout.Separator(); SequenceEditor sequenceEditor = Editor.CreateEditor(fungusScript.selectedSequence) as SequenceEditor; sequenceEditor.DrawSequenceGUI(fungusScript); DestroyImmediate(sequenceEditor); GUILayout.FlexibleSpace(); } EditorGUILayout.EndVertical(); GUILayout.EndScrollView(); }