// Raise animation frame event private void RaiseAnimationFrameEvent(Uni2DAnimationPlayer a_rAnimationPlayer) { if (onAnimationFrameEvent != null) { onAnimationFrameEvent(new Uni2DAnimationFrameEvent(this, m_iCurrentClipIndex, m_rAnimationClips[m_iCurrentClipIndex], a_rAnimationPlayer.FrameIndex, a_rAnimationPlayer.Frame)); } }
// Raise animation end event private void RaiseAnimationEndEvent(Uni2DAnimationPlayer a_rAnimationPlayer, Uni2DAnimationClip a_rAnimationClip) { if (onAnimationEndEvent != null) { onAnimationEndEvent(new Uni2DAnimationEvent(this, this.GetClipIndexByName(a_rAnimationClip.name), a_rAnimationClip)); } }
private static bool DoDisplayAnimationClipHeader(Uni2DAnimationClip a_rAnimationClip, Uni2DAnimationPlayer a_rAnimationPreviewPlayer, out AnimationGUIAction a_eAction, bool a_bCompactMode, bool a_bFolded, int iClipIndex = -1) { a_eAction = AnimationGUIAction.None; ///// Clip header ///// EditorGUILayout.BeginVertical(EditorStyles.textField); { if (a_bCompactMode) { ///// Top toolbar ///// EditorGUILayout.BeginHorizontal(EditorStyles.toolbar, GUILayout.ExpandWidth(true)); { // ^ if (GUILayout.Button("\u25B2" /*"\u2191"*/, EditorStyles.toolbarButton, GUILayout.ExpandWidth(false))) { a_eAction = AnimationGUIAction.MoveUp; } // v if (GUILayout.Button("\u25BC" /*"\u2193"*/, EditorStyles.toolbarButton, GUILayout.ExpandWidth(false))) { a_eAction = AnimationGUIAction.MoveDown; } if (iClipIndex > -1) { if (GUILayout.Button("Clip #" + iClipIndex, EditorStyles.toolbarButton, GUILayout.ExpandWidth(true))) { EditorGUIUtility.PingObject(a_rAnimationClip.gameObject); } } else { GUILayout.FlexibleSpace( ); } // X if (GUILayout.Button("X", EditorStyles.toolbarButton, GUILayout.ExpandWidth(false))) { a_eAction = AnimationGUIAction.Close; } } EditorGUILayout.EndHorizontal( ); } /////////////// EditorGUILayout.Space( ); EditorGUILayout.BeginHorizontal( ); { Rect oClipTextureRect = GUILayoutUtility.GetRect(64.0f, 64.0f, 64.0f, 64.0f, GUILayout.ExpandWidth(false)); // Animation clip preview Uni2DEditorGUIUtils.DrawAnimationClipPreview(oClipTextureRect, a_rAnimationClip, a_rAnimationPreviewPlayer); // Clip settings EditorGUILayout.BeginVertical( ); { //string rName; float fFrameRate; Uni2DAnimationClip.WrapMode eWrapMode; // Name //rName = EditorGUILayout.TextField( "Clip Name", a_rAnimationClip.name ); EditorGUILayout.LabelField(a_rAnimationClip.name, EditorStyles.boldLabel); EditorGUI.BeginChangeCheck( ); { EditorGUI.BeginChangeCheck( ); { // Frame rate fFrameRate = EditorGUILayout.FloatField("Frame Rate", a_rAnimationClip.frameRate); // Wrap mode eWrapMode = (Uni2DAnimationClip.WrapMode)EditorGUILayout.EnumPopup("Wrap Mode", a_rAnimationClip.wrapMode); } if (EditorGUI.EndChangeCheck( )) { // Update animation players settings a_rAnimationPreviewPlayer.FrameRate = fFrameRate; a_rAnimationPreviewPlayer.WrapMode = eWrapMode; } } if (EditorGUI.EndChangeCheck( )) { //a_rAnimationClip.name = rName; a_rAnimationClip.frameRate = fFrameRate; a_rAnimationClip.wrapMode = eWrapMode; if (a_bCompactMode) { a_rAnimationClip.ApplySettings(Uni2DAnimationClip.AnimationClipRegeneration.RegenerateNothing); } EditorUtility.SetDirty(a_rAnimationClip); } // Clip length infos // TODO: refactor with AnimationPlayer int iClipFrameCount = a_rAnimationClip.FrameCount; int iWrappedFrameCount = iClipFrameCount; if (a_rAnimationClip.wrapMode == Uni2DAnimationClip.WrapMode.PingPong && iWrappedFrameCount > 2) { iWrappedFrameCount = (iWrappedFrameCount * 2 - 2); } float fClipLength = Mathf.Abs(iWrappedFrameCount / a_rAnimationClip.frameRate); EditorGUILayout.BeginHorizontal( ); { EditorGUILayout.LabelField(iClipFrameCount + " frame(s) = " + (iClipFrameCount != iWrappedFrameCount ? (iWrappedFrameCount + " wrapped frame(s) = ") : null ) + fClipLength + " sec. @ " + a_rAnimationClip.frameRate + " FPS", EditorStyles.miniLabel, GUILayout.ExpandWidth(false)); if (a_bCompactMode && GUILayout.Button("Edit", EditorStyles.miniButton, GUILayout.ExpandWidth(true))) { Selection.activeObject = a_rAnimationClip; } } EditorGUILayout.EndHorizontal( ); } EditorGUILayout.EndVertical( ); } EditorGUILayout.EndHorizontal( ); // Frame foldout if (!a_bCompactMode) { EditorGUILayout.BeginHorizontal( ); { a_bFolded = EditorGUILayout.Foldout(a_bFolded, GUIContent.none); } EditorGUILayout.EndHorizontal( ); } else { EditorGUILayout.Space( ); } } EditorGUILayout.EndVertical( ); return(a_bFolded); }
public static bool DisplayAnimationClipHeader(Uni2DAnimationClip a_rAnimationClip, Uni2DAnimationPlayer a_rAnimationPreviewPlayer, bool a_bFolded) { AnimationGUIAction eAction; return(Uni2DEditorGUIUtils.DoDisplayAnimationClipHeader(a_rAnimationClip, a_rAnimationPreviewPlayer, out eAction, false, a_bFolded)); }
// Displays an animation clip header public static AnimationGUIAction DisplayCompactAnimationClipHeader(Uni2DAnimationClip a_rAnimationClip, Uni2DAnimationPlayer a_rAnimationPreviewPlayer, int a_iClipIndex = -1) { AnimationGUIAction eAction; Uni2DEditorGUIUtils.DoDisplayAnimationClipHeader(a_rAnimationClip, a_rAnimationPreviewPlayer, out eAction, true, false, a_iClipIndex); return(eAction); }
// Displays a preview of an animation clip at given position rect // The animation is played when the mouse is hovering the preview public static void DrawAnimationClipPreview(Rect a_rPositionRect, Uni2DAnimationClip a_rAnimationClip, Uni2DAnimationPlayer a_rAnimationPlayer) { Uni2DAnimationFrame rFrame; Texture2D rFrameTexture; if (a_rPositionRect.Contains(Event.current.mousePosition)) // If mouse hovering preview rect... { if (a_rAnimationPlayer.Enabled == false || a_rAnimationPlayer.Clip != a_rAnimationClip) // ... and player not enabled or not set with current clip... { a_rAnimationPlayer.Play(a_rAnimationClip); // ... play clip } rFrame = a_rAnimationPlayer.Frame; } else if (Event.current.type != EventType.Layout && a_rAnimationPlayer.Enabled && a_rAnimationPlayer.Clip == a_rAnimationClip) // Stop player if playing current clip { a_rAnimationPlayer.Stop(false); a_rAnimationPlayer.FrameIndex = 0; rFrame = a_rAnimationPlayer.Frame; } else // Use first clip frame otherwise (if any) { rFrame = a_rAnimationClip != null && a_rAnimationClip.frames != null && a_rAnimationClip.frames.Count > 0 ? a_rAnimationClip.frames[0] : null; } if (rFrame == null || rFrame.textureContainer == null || rFrame.textureContainer.Texture == null) { rFrameTexture = EditorGUIUtility.whiteTexture; } else { rFrameTexture = rFrame.textureContainer; } EditorGUI.DrawPreviewTexture(a_rPositionRect, rFrameTexture); return; }
// Releases the sprite when animation is inactive (the sprite is no longer animated) private void RaiseAnimationInactiveEvent(Uni2DAnimationPlayer a_rAnimationPlayer) { m_rSprite.ResetToMainFrame( ); }
// On new frame private void RaiseAnimationNewFrameEvent( Uni2DAnimationPlayer a_rAnimationPlayer ) // On New Frame { m_rSprite.SetFrame( m_rAnimationPlayer.Frame ); }
// On new frame private void RaiseAnimationNewFrameEvent(Uni2DAnimationPlayer a_rAnimationPlayer) // On New Frame { m_rSprite.SetFrame(m_rAnimationPlayer.Frame); }
private void RestartAnimationPlayer( Uni2DAnimationPlayer a_rAnimationPlayer ) { a_rAnimationPlayer.Play( ( (Uni2DSprite) target ).spriteAnimation.Clip ); a_rAnimationPlayer.Stop( false ); }
private void ForceRepaint( Uni2DAnimationPlayer a_rAnimationPlayer ) { this.Repaint( ); }
// Releases the sprite when animation is inactive (the sprite is no longer animated) private void RaiseAnimationInactiveEvent( Uni2DAnimationPlayer a_rAnimationPlayer ) { m_rSprite.ResetToMainFrame( ); }
// Raise animation frame event private void RaiseAnimationFrameEvent( Uni2DAnimationPlayer a_rAnimationPlayer ) { if( onAnimationFrameEvent != null ) { onAnimationFrameEvent(new Uni2DAnimationFrameEvent(this, m_iCurrentClipIndex, m_rAnimationClips[ m_iCurrentClipIndex ] , a_rAnimationPlayer.FrameIndex, a_rAnimationPlayer.Frame ) ); } }
// Raise animation end event private void RaiseAnimationEndEvent( Uni2DAnimationPlayer a_rAnimationPlayer, Uni2DAnimationClip a_rAnimationClip ) { if( onAnimationEndEvent != null ) { onAnimationEndEvent( new Uni2DAnimationEvent( this, this.GetClipIndexByName( a_rAnimationClip.name ), a_rAnimationClip ) ); } }
private void ForceRepaint(Uni2DAnimationPlayer a_rAnimationPlayer) { this.Repaint( ); }
private void RestartAnimationPlayer(Uni2DAnimationPlayer a_rAnimationPlayer) { a_rAnimationPlayer.Play((Uni2DAnimationClip)target); a_rAnimationPlayer.Stop(false); }
private void RestartAnimationPlayer( Uni2DAnimationPlayer a_rAnimationPlayer ) { a_rAnimationPlayer.Play( (Uni2DAnimationClip) target ); a_rAnimationPlayer.Stop( false ); }