Exemplo n.º 1
0
        public static void CreateExpansionLayoutScreen()
        {
            GameObject            gameObject    = new GameObject("LayoutElementScreen");
            RectTransform         rectTransform = CreateRectTransform(gameObject, Selection.activeTransform);
            UiLayoutElementScreen element       = gameObject.AddComponent <UiLayoutElementScreen>();

            UiAnimationClip animationShow = new UiAnimationClip
            {
                Name = "Screen Show Animation",
                PlayOnLayoutElementShow = true
            };

            UiAnimationClip animationHide = new UiAnimationClip
            {
                Name = "Screen Hide Animation",
                PlayOnLayoutElementHide = true
            };

            UiAnimation animation = gameObject.AddComponent <UiAnimation>();

            animation.AnimationClips = new System.Collections.Generic.List <UiAnimationClip>
            {
                animationShow,
                animationHide
            };

            element.AnimationShow = animationShow.Name;
            element.AnimationHide = animationHide.Name;

            Selection.activeObject = gameObject;
        }
Exemplo n.º 2
0
        /// <summary>
        /// MonoBehavior Awake handler.
        /// In inherited classes always use base.Awake() when overriding this method.
        /// </summary>
        protected override void Awake()
        {
            base.Awake();

            _animation = GetComponent <UiAnimation>();

            if (_animation != null)
            {
                _animation.OnComplete += OnAnimationCompleted;

                _animationShow = _animation.GetAnimationClipByName(AnimationShow);
                _animationHide = _animation.GetAnimationClipByName(AnimationHide);

                if (_animationShow != null)
                {
                    _animationShow.PlayOnAwake             = false;
                    _animationShow.PlayOnLayoutElementShow = false;
                    _animationShow.PlayOnLayoutElementHide = false;
                    _animationShow.Loop = false;
                }

                if (_animationHide != null)
                {
                    _animationHide.PlayOnAwake             = false;
                    _animationHide.PlayOnLayoutElementShow = false;
                    _animationHide.PlayOnLayoutElementHide = false;
                    _animationHide.Loop = false;
                }
            }
        }
Exemplo n.º 3
0
        // Animation completed handler.
        private void OnAnimationCompleted(UiAnimationClip animation)
        {
            if (animation == _animationShow)
            {
                ShowEnd();
            }

            if (animation == _animationHide)
            {
                HideEnd();
            }
        }
Exemplo n.º 4
0
        bool IUiAnimation.HasClip(UiAnimationClip clip, string suffix)
        {
            switch (clip)
            {
            case UiAnimationClip.UAC_SHOW:
                return(animator.HasState(0, Animator.StringToHash(UiBase.ShowClipName + suffix)));

            case UiAnimationClip.UAC_HIDE:
                return(animator.HasState(0, Animator.StringToHash(UiBase.HideClipName + suffix)));

            default:
                return(false);
            }
        }
Exemplo n.º 5
0
        void IUiAnimation.Play(UiAnimationClip clip, string suffix)
        {
            animator.enabled = true;
            switch (clip)
            {
            case UiAnimationClip.UAC_SHOW:
                animator.Play(UiBase.ShowClipName + suffix, 0);
                break;

            case UiAnimationClip.UAC_HIDE:
                animator.Play(UiBase.HideClipName + suffix, 0);
                break;

            default:
                debug.PrintSystem.LogError("[UiAnimator] Unexpected clip: " + clip.ToString() + suffix);
                return;
            }
        }
Exemplo n.º 6
0
        protected void playAnimations(UiAnimationClip animationClip)
        {
            switch (animationClip)
            {
            case UiAnimationClip.UAC_SHOW:
            {
                State = UiState.US_SHOWING;
                break;
            }

            case UiAnimationClip.UAC_HIDE:
            {
                State = UiState.US_HIDING;
                break;
            }

            default:
            {
                //debug.PrintSystem.LogError("[UiBase] Play an incorrect animation.");
                return;
            }
            }

            // Check number of clips.
            for (int i = 0; i < uiAnimations.Length; ++i)
            {
                if (uiAnimations[i].HasClip(animationClip, uiAnimationSuffix))
                {
                    playingAnimations.Add(uiAnimations[i]);
                }
            }

            if (playingAnimations.Count == 0)
            {
                onTransitionComplete();
                return;
            }

            // Play clips.
            for (int i = 0, count = playingAnimations.Count; i < count; ++i)
            {
                playingAnimations[i].Play(animationClip, uiAnimationSuffix);
            }
        }
        private static void RenderMenu(float positionX, float positionY, float width, float height)
        {
            GUIStyle splitStyle = new GUIStyle();

            splitStyle.fixedWidth        = 1;
            splitStyle.fixedHeight       = height;
            splitStyle.margin            = new RectOffset(0, 0, 0, 0);
            splitStyle.normal.background = InternalUiAnimationEditorTextures.ColorBlack20;

            GUIStyle dropdownStyle = new GUIStyle(new GUIStyle(GUI.skin.GetStyle("Popup")));

            dropdownStyle.fixedHeight        = height;
            dropdownStyle.margin             = new RectOffset(0, 0, 0, 0);
            dropdownStyle.normal.background  = InternalUiAnimationEditorTextures.ColorInvisible;
            dropdownStyle.hover.background   = InternalUiAnimationEditorTextures.ColorBlack10;
            dropdownStyle.active.background  = InternalUiAnimationEditorTextures.ColorBlack20;
            dropdownStyle.focused.background = InternalUiAnimationEditorTextures.ColorInvisible;

            GUIStyle buttonStyle = new GUIStyle(new GUIStyle(GUI.skin.GetStyle("Button")));

            buttonStyle.fixedWidth        = height;
            buttonStyle.fixedHeight       = height;
            buttonStyle.normal.background = InternalUiAnimationEditorTextures.ColorInvisible;
            buttonStyle.hover.background  = InternalUiAnimationEditorTextures.ColorBlack10;
            buttonStyle.active.background = InternalUiAnimationEditorTextures.ColorBlack20;
            buttonStyle.margin            = new RectOffset(0, 0, 0, 0);
            buttonStyle.padding           = new RectOffset(0, 0, 0, 0);

            GUILayout.BeginArea(new Rect(positionX, positionY, width - 0, height), new GUIStyle());
            GUILayout.BeginHorizontal();

            // Play button
            if (InternalUiAnimationEditorPlayer.Activated)
            {
                Texture2D icon  = new Texture2D(8, 8);
                Color     color = new Color(0.22f, 0.22f, 0.22f, 1);
                for (int x = 0; x < icon.width; x++)
                {
                    for (int y = 0; y < icon.height; y++)
                    {
                        icon.SetPixel(x, y, color);
                    }
                }
                icon.Apply();

                InternalUiAnimationEditorGUI.Button
                (
                    icon,
                    buttonStyle,
                    () =>
                {
                    InternalUiAnimationEditorPlayer.Stop();
                }
                );
                GUILayout.Box(string.Empty, splitStyle);
            }
            else
            {
                InternalUiAnimationEditorGUI.Button
                (
                    EditorGUIUtility.IconContent("Animation.Play").image,
                    buttonStyle,
                    () =>
                {
                    InternalUiAnimationEditorPlayer.Play();
                }
                );
                GUILayout.Box(string.Empty, splitStyle);
            }

            // Active timeline popup
            InternalUiAnimationEditorGUI.Popup
            (
                InternalUiAnimationEditorSelection.TargetAnimationClipIndex,
                InternalUiAnimationEditorSelection.GetAnimationClipsNames(),
                dropdownStyle,
                (int value) =>
            {
                GUI.FocusControl(string.Empty);
                InternalUiAnimationEditorSelection.SetTargetAnimationClipIndex(value);
            }
            );

            GUILayout.Box(string.Empty, splitStyle);

            // Add timeline button
            InternalUiAnimationEditorGUI.Button
            (
                EditorGUIUtility.IconContent("Toolbar Plus").image,
                buttonStyle,
                () =>
            {
                if (InternalUiAnimationEditorSelection.TargetAnimation != null)
                {
                    UiAnimationClip timeline = new UiAnimationClip();
                    timeline.Name            = "New Timeline " + InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.Count;

                    InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.Add(timeline);
                    InternalUiAnimationEditorSelection.SetTargetAnimationClipIndex(InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.IndexOf(timeline));
                }
            }
            );
            GUILayout.Box(string.Empty, splitStyle);

            // Remove timeline button
            InternalUiAnimationEditorGUI.Button
            (
                EditorGUIUtility.IconContent("Toolbar Minus").image,
                buttonStyle,
                () =>
            {
                if (InternalUiAnimationEditorSelection.TargetAnimation != null)
                {
                    if (InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.Count > 1)
                    {
                        if (EditorUtility.DisplayDialog("Error", "Are you sure you want to delete " + InternalUiAnimationEditorSelection.TargetAnimationClip.Name + "?", "Yes", "No"))
                        {
                            InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.RemoveAt(InternalUiAnimationEditorSelection.TargetAnimationClipIndex);
                            InternalUiAnimationEditorSelection.SetTargetAnimationClipIndex(0);
                        }
                    }
                    else
                    {
                        EditorUtility.DisplayDialog("Error", "You can not delete last timeline.", "OK");
                    }
                }
            }
            );
            GUILayout.Box(string.Empty, splitStyle);

            // Dropdown icon
            Texture dropdownIcon = EditorGUIUtility.IconContent("Icon Dropdown").image;

            InternalUiAnimationEditorGUI.DrawTexture(width - 60, positionY + 9, dropdownIcon.width, dropdownIcon.height, dropdownIcon);

            GUILayout.EndHorizontal();
            GUILayout.EndArea();
        }
        private static void RenderAnimationClip(UiAnimationClip clip)
        {
            clip.Name = InternalUiAnimationEditorGUI.InspectorTextField
                        (
                "Name",
                clip.Name
                        );

            clip.Loop = InternalUiAnimationEditorGUI.InspectorBooleanField
                        (
                new GUIContent("Loop animation"),
                clip.Loop
                        );

            List <string> triggers = new List <string>();

            if (clip.PlayOnAwake)
            {
                triggers.Add("Awake");
            }

            if (clip.PlayOnLayoutElementShow)
            {
                triggers.Add("Element Show");
            }

            if (clip.PlayOnLayoutElementHide)
            {
                triggers.Add("Element Hide");
            }

            if (clip.PlayOnSignals.Length > 0)
            {
                triggers.Add("Signals");
            }

            string playon = "";

            if (triggers.Count > 1)
            {
                playon += " " + triggers.Count + " triggers";
            }
            else if (triggers.Count > 0)
            {
                playon += " " + triggers[0];
            }
            else
            {
                playon = " ...";
            }

            _expandPlayOnBlock = EditorGUILayout.Foldout(_expandPlayOnBlock, "Play on" + playon, true);

            if (_expandPlayOnBlock)
            {
                clip.PlayOnAwake = InternalUiAnimationEditorGUI.InspectorBooleanField
                                   (
                    new GUIContent("   Awake"),
                    clip.PlayOnAwake
                                   );

                clip.PlayOnLayoutElementShow = InternalUiAnimationEditorGUI.InspectorBooleanField
                                               (
                    new GUIContent("   Element show"),
                    clip.PlayOnLayoutElementShow
                                               );

                clip.PlayOnLayoutElementHide = InternalUiAnimationEditorGUI.InspectorBooleanField
                                               (
                    new GUIContent("   Element hide"),
                    clip.PlayOnLayoutElementHide
                                               );

                InternalLayout.ButtonSignals
                (
                    "   Signals",
                    "Select signals to play animation clip",
                    clip.PlayOnSignals,
                    (string[] result) =>
                {
                    clip.PlayOnSignals = result;
                },
                    15
                );
            }
        }