Beispiel #1
0
        private static DPAnimationData GetDPAnimationFromEnum(object obj)
        {
            //Debug.Log(obj.ToString());
            //return I.animationConfig.values.Find(x => x.anim == obj.ToString());


            DPAnimationData data = new DPAnimationData();

            switch (obj.ToString())
            {
            case "FadeIn":
                break;

            case "FadeOut":
                data.show = false;
                break;

            case "FadeInUp":
                data.moveDir = new Vector3(0f, -0.5f, 0f);
                break;

            case "FadeOutDown":
                data.show    = false;
                data.moveDir = new Vector3(0f, -0.5f, 0f);
                break;
            }

            return(data);
        }
Beispiel #2
0
        private static void AnimateInternal(DPOverlayBase dp, object anim, float overrideAnimTime = -1f)
        {
            KillActiveAnimations(dp);

            DPAnimationData data = GetDPAnimationFromEnum(anim.ToString().Replace("DPAnimations.", ""));

            if (data == null)
            {
                Debug.LogError("DPAnimationData ( " + anim.ToString() + ") could not be found, aborting!");
                return;
            }


            if (data.changeVisibility && data.show)
            {
                dp.overlay.SetVisible(true, false);
                dp.overlay.SetOpacity(0, false);

                foreach (DPOverlayBase child in dp.children)
                {
                    if (!child.followParentOpacity)
                    {
                        continue;
                    }
                    child.overlay.SetVisible(true, false);
                    child.overlay.SetOpacity(0, false);
                }
            }

            //Calculate the animation time
            float finalAnimTime;

            if (overrideAnimTime > 0)
            {
                finalAnimTime = overrideAnimTime;
            }
            else
            {
                finalAnimTime = animTime;
            }


            DPAnimationState state = new DPAnimationState()
            {
                dpBase     = dp,
                data       = data,
                animLength = finalAnimTime,
                finalPos   = dp.transform.localPosition,
                finalWidth = dp.overlay.width
            };


            //MOVEMENT ANIMATION
            if (data.move)
            {
                Vector3 curPos = dp.transform.localPosition;

                //Animate pos is either the starting position or the ending position of the animation depending on if it is showing or hiding
                Vector3 animatePos = curPos + (Vector3.right * data.moveDir.x * dp.overlay.width) + (Vector3.up * data.moveDir.y * dp.overlay.width) +
                                     (Vector3.forward * data.moveDir.z * dp.overlay.width);

                Vector3 anchoredPos = curPos + (dp.transform.right * data.moveDir.x) + (dp.transform.up * data.moveDir.y) + (dp.transform.forward * data.moveDir.z);

                if (data.changeVisibility)
                {
                    //If it's fading in:
                    if (data.show)
                    {
                        dp.SetOverlayTransform(animatePos, dp.transform.localEulerAngles, true, false, true);

                        dp.TransitionOverlayPosition(curPos, dp.transform.localEulerAngles, finalAnimTime, animShowEasing, false);
                    }
                    //If it's fading out:
                    else
                    {
                        dp.TransitionOverlayPosition(animatePos, dp.transform.localEulerAngles, finalAnimTime, animHideEasing, false);
                    }
                }

                //If it's not changing visibility:
                else
                {
                    dp.TransitionOverlayPosition(animatePos, dp.transform.localEulerAngles, finalAnimTime, animHideEasing, false);
                }
            }


            //VISIBILITY ANIMATION
            if (data.changeVisibility)
            {
                if (data.show)
                {
                    if (dp.overlay.targetOpacity <= 0f)
                    {
                        Debug.LogError("Overlay target opacity was 0f!");
                    }

                    dp.TransitionOverlayOpacity(dp.overlay.targetOpacity, finalAnimTime, animShowEasing, false);
                }
                else
                {
                    dp.TransitionOverlayOpacity(0f, finalAnimTime, animHideEasing, false);
                }
            }

            //SCALING ANIMATION
            if (data.scale)
            {
                if (data.changeVisibility)
                {
                    if (data.show)
                    {
                        //float curWidth = dp.overlay.width;
                        dp.overlay.SetWidthInMeters(dp.overlay.width * data.widthScaleMulti, false);
                        dp.TransitionOverlayWidth(dp.overlay.width, finalAnimTime, false);
                    }
                    else
                    {
                        dp.TransitionOverlayWidth(dp.overlay.width * data.widthScaleMulti, finalAnimTime, false);
                    }
                }

                else
                {
                    dp.TransitionOverlayWidth(dp.overlay.width * data.widthScaleMulti, finalAnimTime, false);
                }
            }


            I.StartCoroutine(HandleAnimationData(state));
        }