Exemplo n.º 1
0
    private void UseCurrentValue(AnimationType type, UIParallelAnimation anim)
    {
        switch (type)
        {
        case AnimationType.MOVE:
            if (anim.useScreenValues)
            {
                anim.start[0] = anim.transform.position;
            }
            else
            {
                anim.start[0] = Vector3.Scale(anim.transform.position, EasyUIAnimator.UIAnimator.InvertedScreenDimension);
            }
            break;

        case AnimationType.SCALE:
            anim.start[1] = anim.transform.localScale;
            break;

        case AnimationType.ROTATION:
            anim.start[2] = anim.transform.localRotation.eulerAngles;
            break;

        case AnimationType.IMAGE:
            anim.startColor = anim.GetComponent <UnityEngine.UI.Graphic>().color;
            break;
        }
    }
    protected virtual void OnSceneGUI()
    {
        UIParallelAnimation parallelAnim = (UIParallelAnimation)target;

        if (!parallelAnim.isBezier)
        {
            return;
        }

        EditorGUI.BeginChangeCheck();

        Vector2 screenP1 = Vector2.Scale(parallelAnim.bezierP1, UIAnimator.ScreenDimension);
        Vector2 screenP2 = Vector2.Scale(parallelAnim.bezierP2, UIAnimator.ScreenDimension);
        Vector2 newP1    = Handles.PositionHandle(screenP1, Quaternion.identity);
        Vector2 newP2    = screenP2;

        if (parallelAnim.isCubicBezier)
        {
            newP2 = Handles.PositionHandle(screenP2, Quaternion.identity);
        }

        if (EditorGUI.EndChangeCheck())
        {
            parallelAnim.bezierP1 = Vector2.Scale(newP1, UIAnimator.InvertedScreenDimension);
            if (parallelAnim.isCubicBezier)
            {
                parallelAnim.bezierP2 = Vector2.Scale(newP2, UIAnimator.InvertedScreenDimension);
            }
        }
    }
Exemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        UIParallelAnimation parallelAnim = (UIParallelAnimation)target;

        //MOVE ANIMATION
        if (parallelAnim.moveAnimation)
        {
            if (GUILayout.Button("- Move Animation", GUILayout.Height(30)))
            {
                parallelAnim.moveAnimation = false;
            }
            if (GUILayout.Button("Use Current Value"))
            {
                UseCurrentValue(AnimationType.MOVE, parallelAnim);
            }
            parallelAnim.start[0]        = EditorGUILayout.Vector3Field("Start Position", parallelAnim.start[0]);
            parallelAnim.final[0]        = EditorGUILayout.Vector3Field("Final Position", parallelAnim.final[0]);
            parallelAnim.useScreenValues = EditorGUILayout.Toggle("Use Screen Values", parallelAnim.useScreenValues);

            parallelAnim.moveModifier = (Modifiers)EditorGUILayout.EnumPopup("Modifier", parallelAnim.moveModifier);
            parallelAnim.moveEffect   = (Effects)EditorGUILayout.EnumPopup("Effect", parallelAnim.moveEffect);
            if (parallelAnim.moveEffect != Effects.NONE)
            {
                parallelAnim.max[0] = EditorGUILayout.FloatField("Max", parallelAnim.max[0]);
                if (parallelAnim.moveEffect != Effects.EXPLOSION)
                {
                    parallelAnim.bounce[0]       = EditorGUILayout.IntField("Bounce", parallelAnim.bounce[0]);
                    parallelAnim.randomDirection = false;
                }
                else
                {
                    parallelAnim.randomDirection = EditorGUILayout.Toggle("Random Direction", parallelAnim.randomDirection);
                }
                if (!parallelAnim.randomDirection)
                {
                    parallelAnim.effectRotation = EditorGUILayout.Vector3Field("Effect Rotation", parallelAnim.effectRotation);
                }
            }
        }
        else
        if (GUILayout.Button("+ Move Animation", GUILayout.Height(30)))
        {
            parallelAnim.moveAnimation = true;
        }

        //SCALE ANIMATION
        if (parallelAnim.scaleAnimation)
        {
            if (GUILayout.Button("- Scale Animation", GUILayout.Height(30)))
            {
                parallelAnim.scaleAnimation = false;
            }
            if (GUILayout.Button("Use Current Value"))
            {
                UseCurrentValue(AnimationType.SCALE, parallelAnim);
            }
            parallelAnim.start[1] = EditorGUILayout.Vector3Field("Start Scale", parallelAnim.start[1]);
            parallelAnim.final[1] = EditorGUILayout.Vector3Field("Final Scale", parallelAnim.final[1]);

            parallelAnim.scaleModifier = (Modifiers)EditorGUILayout.EnumPopup("Modifier", parallelAnim.scaleModifier);
            parallelAnim.scaleEffect   = (Effects)EditorGUILayout.EnumPopup("Effect", parallelAnim.scaleEffect);
            if (parallelAnim.scaleEffect != Effects.NONE)
            {
                parallelAnim.max[1] = EditorGUILayout.FloatField("Max", parallelAnim.max[1]);
                if (parallelAnim.scaleEffect != Effects.EXPLOSION)
                {
                    parallelAnim.bounce[1] = EditorGUILayout.IntField("Bounce", parallelAnim.bounce[1]);
                }
            }
        }
        else
        if (GUILayout.Button("+ Scale Animation", GUILayout.Height(30)))
        {
            parallelAnim.scaleAnimation = true;
        }

        //ROTATION ANIMATION
        if (parallelAnim.rotationAnimation)
        {
            if (GUILayout.Button("- Rotation Animation", GUILayout.Height(30)))
            {
                parallelAnim.rotationAnimation = false;
            }
            if (GUILayout.Button("Use Current Value"))
            {
                UseCurrentValue(AnimationType.ROTATION, parallelAnim);
            }
            parallelAnim.start[2] = EditorGUILayout.Vector3Field("Start Rotation", parallelAnim.start[2]);
            parallelAnim.final[2] = EditorGUILayout.Vector3Field("Final Rotation", parallelAnim.final[2]);

            parallelAnim.rotationModifier = (Modifiers)EditorGUILayout.EnumPopup("Modifier", parallelAnim.rotationModifier);
            parallelAnim.rotationEffect   = (Effects)EditorGUILayout.EnumPopup("Effect", parallelAnim.rotationEffect);
            if (parallelAnim.rotationEffect != Effects.NONE)
            {
                parallelAnim.max[2] = EditorGUILayout.FloatField("Max", parallelAnim.max[2]);
                if (parallelAnim.rotationEffect != Effects.EXPLOSION)
                {
                    parallelAnim.bounce[2] = EditorGUILayout.IntField("Bounce", parallelAnim.bounce[2]);
                }
            }
        }
        else
        if (GUILayout.Button("+ Rotation Animation", GUILayout.Height(30)))
        {
            parallelAnim.rotationAnimation = true;
        }

        //GRAPH ANIMATION
        if (parallelAnim.graphicAnimation)
        {
            if (GUILayout.Button("- Graphic Animation", GUILayout.Height(30)))
            {
                parallelAnim.graphicAnimation = false;
            }
            if (GUILayout.Button("Use Current Value"))
            {
                UseCurrentValue(AnimationType.IMAGE, parallelAnim);
            }
            parallelAnim.startColor = EditorGUILayout.ColorField("Start Color", parallelAnim.startColor);
            parallelAnim.finalColor = EditorGUILayout.ColorField("Final Color", parallelAnim.finalColor);

            parallelAnim.graphicModifier = (Modifiers)EditorGUILayout.EnumPopup("Modifier", parallelAnim.graphicModifier);
        }
        else
        if (GUILayout.Button("+ Graphic Animation", GUILayout.Height(30)))
        {
            parallelAnim.graphicAnimation = true;
        }

        GUIStyle style = new GUIStyle(GUI.skin.label)
        {
            alignment = TextAnchor.MiddleCenter
        };

        EditorGUILayout.LabelField("-Common Values-", style);
        parallelAnim.disableAfter = EditorGUILayout.Toggle("Disable On Finish", parallelAnim.disableAfter);
        if (!parallelAnim.disableAfter)
        {
            parallelAnim.loop = (Loop)EditorGUILayout.EnumPopup("Loop Options", parallelAnim.loop);
        }
        parallelAnim.delay       = EditorGUILayout.FloatField("Delay", parallelAnim.delay);
        parallelAnim.duration    = EditorGUILayout.FloatField("Duration", parallelAnim.duration);
        parallelAnim.playOnStart = EditorGUILayout.Toggle("Play On Start", parallelAnim.playOnStart);
        if (GUILayout.Button("Play"))
        {
            parallelAnim.PlayReverse();
        }
    }