public void OnGUI() { if (state.selection.canChangeAnimationClip) { var newClip = DoClipPopup(state.activeAnimationClip, AnimationWindowStyles.animClipToolbarPopup); if (state.selection.canCreateClips) { addCI.SetSourceView(); if (GUILayout.Button(new GUIContent("+", "Create New Clip..."), EditorStyles.toolbarButton)) { newClip = AnimationWindowUtility.CreateNewClip(state.selection.rootGameObject.name); if (newClip) { AnimationWindowUtility.AddClipToAnimationPlayerComponent(state.activeAnimationPlayer, newClip); addCI.selectedClip = newClip; addCI.SendEvent(); } } } if (state.activeAnimationClip != newClip) { state.activeAnimationClip = newClip; // Layout has changed, bail out now. EditorGUIUtility.ExitGUI(); } } else if (state.activeAnimationClip != null) { Rect r = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight, AnimationWindowStyles.toolbarLabel); EditorGUI.LabelField(r, CurveUtility.GetClipName(state.activeAnimationClip), AnimationWindowStyles.toolbarLabel); } }
private void DisplayClipMenu(Rect position, int controlID, AnimationClip clip) { AnimationClip[] clips = GetOrderedClipList(); GUIContent[] menuContent = GetClipMenuContent(clips); int selected = ClipToIndex(clips, clip); // Center popup menu around button widget if (Application.platform == RuntimePlatform.OSXEditor) { position.y = position.y - selected * EditorGUI.kSingleLineHeight - kMenuOffsetMac; } ClipPopupCallbackInfo.instance = new ClipPopupCallbackInfo(controlID); EditorUtility.DisplayCustomMenu(position, menuContent, null, selected, (userData, options, index) => { if (index < clips.Length) { ClipPopupCallbackInfo.SetSelectedClip(clips[index]); } else { AnimationClip newClip = AnimationWindowUtility.CreateNewClip(state.selection.rootGameObject.name); if (newClip) { AnimationWindowUtility.AddClipToAnimationPlayerComponent(state.activeAnimationPlayer, newClip); ClipPopupCallbackInfo.SetSelectedClip(newClip); } } ClipPopupCallbackInfo.SendEvent(); }, null); }
public void OnGUI() { AnimationWindowSelectionItem selectedItem = this.state.selectedItem; if (!(selectedItem == null) && selectedItem.canChangeAnimationClip) { string[] clipMenuContent = this.GetClipMenuContent(); EditorGUI.BeginChangeCheck(); this.selectedIndex = EditorGUILayout.Popup(this.ClipToIndex(this.state.activeAnimationClip), clipMenuContent, EditorStyles.toolbarPopup, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { if (clipMenuContent[this.selectedIndex] == AnimationWindowStyles.createNewClip.text) { AnimationClip animationClip = AnimationWindowUtility.CreateNewClip(selectedItem.rootGameObject.name); if (animationClip) { AnimationWindowUtility.AddClipToAnimationPlayerComponent(this.state.activeAnimationPlayer, animationClip); this.state.selection.UpdateClip(this.state.selectedItem, animationClip); this.state.currentTime = 0f; this.state.ResampleAnimation(); GUIUtility.ExitGUI(); } } else { this.state.selection.UpdateClip(this.state.selectedItem, this.IndexToClip(this.selectedIndex)); this.state.currentTime = 0f; this.state.ResampleAnimation(); } } } }
public void OnGUI() { if (this.state.selection.canChangeAnimationClip) { string[] clipMenuContent = this.GetClipMenuContent(); EditorGUI.BeginChangeCheck(); this.selectedIndex = EditorGUILayout.Popup(this.ClipToIndex(this.state.activeAnimationClip), clipMenuContent, EditorStyles.toolbarPopup, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { if (clipMenuContent[this.selectedIndex] == AnimationWindowStyles.createNewClip.text) { AnimationClip animationClip = AnimationWindowUtility.CreateNewClip(this.state.selection.rootGameObject.name); if (animationClip) { AnimationWindowUtility.AddClipToAnimationPlayerComponent(this.state.activeAnimationPlayer, animationClip); this.state.activeAnimationClip = animationClip; } GUIUtility.ExitGUI(); } else { this.state.activeAnimationClip = this.IndexToClip(this.selectedIndex); } } } else if (this.state.activeAnimationClip != null) { Rect controlRect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight, AnimationWindowStyles.toolbarLabel, new GUILayoutOption[0]); EditorGUI.LabelField(controlRect, CurveUtility.GetClipName(this.state.activeAnimationClip), AnimationWindowStyles.toolbarLabel); } }
public void OnGUI() { if (state.selection.canChangeAnimationClip) { string[] menuContent = GetClipMenuContent(); EditorGUI.BeginChangeCheck(); // TODO: Make this more robust selectedIndex = EditorGUILayout.Popup(ClipToIndex(state.activeAnimationClip), menuContent, EditorStyles.toolbarPopup); if (EditorGUI.EndChangeCheck()) { if (menuContent[selectedIndex] == AnimationWindowStyles.createNewClip.text) { AnimationClip newClip = AnimationWindowUtility.CreateNewClip(state.selection.rootGameObject.name); if (newClip) { AnimationWindowUtility.AddClipToAnimationPlayerComponent(state.activeAnimationPlayer, newClip); state.activeAnimationClip = newClip; } // Layout has changed, bail out now. EditorGUIUtility.ExitGUI(); } else { state.activeAnimationClip = IndexToClip(selectedIndex); } } } else if (state.activeAnimationClip != null) { Rect r = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight, AnimationWindowStyles.toolbarLabel); EditorGUI.LabelField(r, CurveUtility.GetClipName(state.activeAnimationClip), AnimationWindowStyles.toolbarLabel); } }
private static bool CreateAnimation(GameObject gameObject, UnityEngine.Object[] frames) { Array.Sort <UnityEngine.Object>(frames, (UnityEngine.Object a, UnityEngine.Object b) => EditorUtility.NaturalCompare(a.name, b.name)); bool result; if (!AnimationWindowUtility.EnsureActiveAnimationPlayer(gameObject)) { result = false; } else { Animator closestAnimatorInParents = AnimationWindowUtility.GetClosestAnimatorInParents(gameObject.transform); if (closestAnimatorInParents == null) { result = false; } else { AnimationClip animationClip = AnimationWindowUtility.CreateNewClip(gameObject.name); if (animationClip == null) { result = false; } else { SpriteUtility.AddSpriteAnimationToClip(animationClip, frames); result = AnimationWindowUtility.AddClipToAnimatorComponent(closestAnimatorInParents, animationClip); } } } return(result); }
public void OnGUI() { string[] clipMenuContent = this.GetClipMenuContent(); EditorGUI.BeginChangeCheck(); this.selectedIndex = EditorGUILayout.Popup(this.ClipToIndex(this.state.activeAnimationClip), clipMenuContent, EditorStyles.toolbarPopup, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { if (clipMenuContent[this.selectedIndex] == AnimationWindowStyles.createNewClip.text) { AnimationClip animationClip = AnimationWindowUtility.CreateNewClip(this.state.activeRootGameObject.name); if (animationClip) { AnimationWindowUtility.AddClipToAnimationPlayerComponent(this.state.activeAnimationPlayer, animationClip); this.state.activeAnimationClip = animationClip; } } else { this.state.activeAnimationClip = this.IndexToClip(this.selectedIndex); } } }
private static bool CreateAnimation(GameObject gameObject, UnityEngine.Object[] frames) { Array.Sort <UnityEngine.Object>(frames, (Comparison <UnityEngine.Object>)((a, b) => EditorUtility.NaturalCompare(a.name, b.name))); if (!(bool)((UnityEngine.Object)AnimationWindowUtility.EnsureActiveAnimationPlayer(gameObject))) { return(false); } Animator animatorInParents = AnimationWindowUtility.GetClosestAnimatorInParents(gameObject.transform); if ((UnityEngine.Object)animatorInParents == (UnityEngine.Object)null) { return(false); } AnimationClip newClip = AnimationWindowUtility.CreateNewClip(gameObject.name); if ((UnityEngine.Object)newClip == (UnityEngine.Object)null) { return(false); } SpriteUtility.AddSpriteAnimationToClip(newClip, frames); return(AnimationWindowUtility.AddClipToAnimatorComponent(animatorInParents, newClip)); }