Esempio n. 1
0
        public void Transition()
        {
            if (OnTransitionStarted != null)
            {
                OnTransitionStarted();
            }

            _hasFiredTransitionFinished = false;

            ProCamera2D.UseNumericBoundaries = true;

            if (UseLeftBoundary)
            {
                ProCamera2D.UseLeftBoundary = true;

                if (ProCamera2D.LeftBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.LeftBoundaryAnimRoutine);
                }

                ProCamera2D.LeftBoundaryAnimRoutine = ProCamera2D.StartCoroutine(LeftTransitionRoutine(TransitionDuration));
            }
            else if (!UseLeftBoundary && ProCamera2D.UseLeftBoundary && UseRightBoundary && RightBoundary < ProCamera2D.TargetLeftBoundary)
            {
                ProCamera2D.UseLeftBoundary = true;
                UseLeftBoundary             = true;

                LeftBoundary = RightBoundary - ProCamera2D.ScreenSizeInWorldCoordinates.x * 100f;

                if (ProCamera2D.LeftBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.LeftBoundaryAnimRoutine);
                }

                ProCamera2D.LeftBoundaryAnimRoutine = ProCamera2D.StartCoroutine(LeftTransitionRoutine(TransitionDuration, true));
            }

            if (UseRightBoundary)
            {
                ProCamera2D.UseRightBoundary = true;

                if (ProCamera2D.RightBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.RightBoundaryAnimRoutine);
                }

                ProCamera2D.RightBoundaryAnimRoutine = ProCamera2D.StartCoroutine(RightTransitionRoutine(TransitionDuration));
            }
            else if (!UseRightBoundary && ProCamera2D.UseRightBoundary && UseLeftBoundary && LeftBoundary > ProCamera2D.TargetRightBoundary)
            {
                ProCamera2D.UseRightBoundary = true;
                UseRightBoundary             = true;

                RightBoundary = LeftBoundary + ProCamera2D.ScreenSizeInWorldCoordinates.x * 100f;

                if (ProCamera2D.RightBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.RightBoundaryAnimRoutine);
                }

                ProCamera2D.RightBoundaryAnimRoutine = ProCamera2D.StartCoroutine(RightTransitionRoutine(TransitionDuration, true));
            }

            if (UseTopBoundary)
            {
                ProCamera2D.UseTopBoundary = true;

                if (ProCamera2D.TopBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.TopBoundaryAnimRoutine);
                }

                ProCamera2D.TopBoundaryAnimRoutine = ProCamera2D.StartCoroutine(TopTransitionRoutine(TransitionDuration));
            }
            else if (!UseTopBoundary && ProCamera2D.UseTopBoundary && UseBottomBoundary && BottomBoundary > ProCamera2D.TargetTopBoundary)
            {
                ProCamera2D.UseTopBoundary = true;
                UseTopBoundary             = true;

                TopBoundary = BottomBoundary + ProCamera2D.ScreenSizeInWorldCoordinates.y * 100f;

                if (ProCamera2D.TopBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.TopBoundaryAnimRoutine);
                }

                ProCamera2D.TopBoundaryAnimRoutine = ProCamera2D.StartCoroutine(TopTransitionRoutine(TransitionDuration, true));
            }

            if (UseBottomBoundary)
            {
                ProCamera2D.UseBottomBoundary = true;

                if (ProCamera2D.BottomBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.BottomBoundaryAnimRoutine);
                }

                ProCamera2D.BottomBoundaryAnimRoutine = ProCamera2D.StartCoroutine(BottomTransitionRoutine(TransitionDuration));
            }
            else if (!UseBottomBoundary && ProCamera2D.UseBottomBoundary && UseTopBoundary && TopBoundary < ProCamera2D.TargetBottomBoundary)
            {
                ProCamera2D.UseBottomBoundary = true;
                UseBottomBoundary             = true;

                BottomBoundary = TopBoundary - ProCamera2D.ScreenSizeInWorldCoordinates.y * 100f;

                if (ProCamera2D.BottomBoundaryAnimRoutine != null)
                {
                    ProCamera2D.StopCoroutine(ProCamera2D.BottomBoundaryAnimRoutine);
                }

                ProCamera2D.BottomBoundaryAnimRoutine = ProCamera2D.StartCoroutine(BottomTransitionRoutine(TransitionDuration, true));
            }
        }