void DrawToolbar() { GUILayout.BeginHorizontal(EditorStyles.toolbar, GUILayout.ExpandWidth(true)); // LHS GUILayout.BeginHorizontal(GUILayout.Width(leftBarWidth - 6)); // Create Button GUIContent createButton = new GUIContent("Create"); Rect createButtonRect = GUILayoutUtility.GetRect(createButton, EditorStyles.toolbarDropDown, GUILayout.ExpandWidth(false)); if (GUI.Button(createButtonRect, createButton, EditorStyles.toolbarDropDown) && anim != null) { GUIUtility.hotControl = 0; EditorUtility.DisplayCustomMenu(createButtonRect, menuItems, -1, delegate(object userData, string[] options, int selected) { if (selected == 0) { selectedClip = CreateNewClip(); clipEditor.Clip = selectedClip; clipEditor.InitForNewClip(); Repaint(); } else if (menuTargets[selected] != null) { tk2dEditor.SpriteAnimationEditor.AnimOperator animOp = menuTargets[selected]; tk2dSpriteAnimationClip newSelectedClip = animOp.OnAnimMenu(options[selected], allClips, selectedClip); if (selectedClip != newSelectedClip) { selectedClip = newSelectedClip; clipEditor.Clip = selectedClip; } if ((animOp.AnimEditOperations & tk2dEditor.SpriteAnimationEditor.AnimEditOperations.AllClipsChanged) != tk2dEditor.SpriteAnimationEditor.AnimEditOperations.None) { FilterClips(); Repaint(); } if ((animOp.AnimEditOperations & tk2dEditor.SpriteAnimationEditor.AnimEditOperations.NewClipCreated) != tk2dEditor.SpriteAnimationEditor.AnimEditOperations.None) { clipEditor.InitForNewClip(); Repaint(); } } } , null); } // Filter box if (anim != null) { GUILayout.Space(8); string newSearchFilter = GUILayout.TextField(searchFilter, tk2dEditorSkin.ToolbarSearch, GUILayout.ExpandWidth(true)); if (newSearchFilter != searchFilter) { searchFilter = newSearchFilter; FilterClips(); } if (searchFilter.Length > 0) { if (GUILayout.Button("", tk2dEditorSkin.ToolbarSearchClear, GUILayout.ExpandWidth(false))) { searchFilter = ""; FilterClips(); } } else { GUILayout.Label("", tk2dEditorSkin.ToolbarSearchRightCap); } } GUILayout.EndHorizontal(); // Label if (anim != null) { if (GUILayout.Button(anim.name, EditorStyles.label)) { EditorGUIUtility.PingObject(anim); } } // RHS GUILayout.FlexibleSpace(); if (anim != null && GUILayout.Button("Revert", EditorStyles.toolbarButton)) { Revert(); } if (anim != null && GUILayout.Button("Commit", EditorStyles.toolbarButton)) { Commit(); } GUILayout.EndHorizontal(); }
void OnEnable() { // Detect animOps List <tk2dEditor.SpriteAnimationEditor.AnimOperator> animOpList = new List <tk2dEditor.SpriteAnimationEditor.AnimOperator>(); foreach (var assembly in System.AppDomain.CurrentDomain.GetAssemblies()) { try { System.Type[] types = assembly.GetTypes(); foreach (var type in types) { if (type.BaseType == typeof(tk2dEditor.SpriteAnimationEditor.AnimOperator)) { tk2dEditor.SpriteAnimationEditor.AnimOperator inst = (tk2dEditor.SpriteAnimationEditor.AnimOperator)System.Activator.CreateInstance(type); if (inst != null) { animOpList.Add(inst); } } } } catch { } } animOpList.Sort((a, b) => a.SortId.CompareTo(b.SortId)); animOps = animOpList.ToArray(); // Create menu items List <GUIContent> menuItems = new List <GUIContent>(); List <tk2dEditor.SpriteAnimationEditor.AnimOperator> menuTargets = new List <tk2dEditor.SpriteAnimationEditor.AnimOperator>(); menuItems.Add(new GUIContent("Clip")); menuTargets.Add(null); foreach (tk2dEditor.SpriteAnimationEditor.AnimOperator animOp in animOps) { for (int i = 0; i < animOp.AnimToolsMenu.Length; ++i) { menuItems.Add(new GUIContent(animOp.AnimToolsMenu[i])); menuTargets.Add(animOp); } } this.menuItems = menuItems.ToArray(); this.menuTargets = menuTargets.ToArray(); // Create clip editor if (clipEditor == null) { clipEditor = new tk2dEditor.SpriteAnimationEditor.ClipEditor(); clipEditor.clipNameChangedEvent += ClipNameChanged; clipEditor.clipDeletedEvent += ClipDeleted; clipEditor.clipSelectionChangedEvent += ClipSelectionChanged; clipEditor.hostEditorWindow = this; } clipEditor.animOps = animOps; FilterClips(); if (selectedClipId != -1 && selectedClipId < allClips.Count) { selectedClip = allClips[selectedClipId]; } else { selectedClip = null; } }