Example #1
0
 // 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));
     }
 }
Example #2
0
 // 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;
    }
Example #7
0
 // Releases the sprite when animation is inactive (the sprite is no longer animated)
 private void RaiseAnimationInactiveEvent(Uni2DAnimationPlayer a_rAnimationPlayer)
 {
     m_rSprite.ResetToMainFrame( );
 }
Example #8
0
	// On new frame
	private void RaiseAnimationNewFrameEvent( Uni2DAnimationPlayer a_rAnimationPlayer )	// On New Frame
	{
		m_rSprite.SetFrame( m_rAnimationPlayer.Frame );
	}
Example #9
0
 // On new frame
 private void RaiseAnimationNewFrameEvent(Uni2DAnimationPlayer a_rAnimationPlayer)           // On New Frame
 {
     m_rSprite.SetFrame(m_rAnimationPlayer.Frame);
 }
Example #10
0
	private void RestartAnimationPlayer( Uni2DAnimationPlayer a_rAnimationPlayer )
	{
		a_rAnimationPlayer.Play( ( (Uni2DSprite) target ).spriteAnimation.Clip );
		a_rAnimationPlayer.Stop( false );
	}
Example #11
0
	private void ForceRepaint( Uni2DAnimationPlayer a_rAnimationPlayer )
	{
		this.Repaint( );
	}
Example #12
0
	// Releases the sprite when animation is inactive (the sprite is no longer animated)
	private void RaiseAnimationInactiveEvent( Uni2DAnimationPlayer a_rAnimationPlayer )
	{
		m_rSprite.ResetToMainFrame( );
	}
Example #13
0
	// 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 ) );
		}
	}
Example #14
0
	// 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 );
	}