Example #1
0
 private void OnPrjSwitchTransitionEnd(CameraPrjSwitchTransition.Type transitionType)
 {
     if (PrjSwitchTransitionEnd != null)
     {
         PrjSwitchTransitionEnd(transitionType);
     }
 }
Example #2
0
 private void OnPrjSwitchTransitionBegin(CameraPrjSwitchTransition.Type transitionType)
 {
     if (PrjSwitchTransitionBegin != null)
     {
         PrjSwitchTransitionBegin(transitionType);
     }
 }
Example #3
0
 private void OnPrjSwitchTransitionUpate(CameraPrjSwitchTransition.Type transitionType)
 {
     if (PrjSwitchTransitionUpdate != null)
     {
         PrjSwitchTransitionUpdate(transitionType);
     }
 }
Example #4
0
        private IEnumerator DoTransition()
        {
            float frustumHeight = _targetCamera.orthographicSize * 2.0f;
            float startFOV = 0.0f, targetFOV = 0.0f;

            if (!IsActive)
            {
                if (_targetCamera.orthographic)
                {
                    startFOV        = _targetCamera.GetOrthoFOV();
                    targetFOV       = _camFieldOfView;
                    _transitionType = CameraPrjSwitchTransition.Type.ToPerspective;
                }
                else
                {
                    startFOV        = _camFieldOfView;
                    targetFOV       = _targetCamera.GetOrthoFOV();
                    _transitionType = CameraPrjSwitchTransition.Type.ToOrtho;
                }
            }
            else
            {
                if (_transitionType == CameraPrjSwitchTransition.Type.ToOrtho)
                {
                    startFOV        = _targetCamera.fieldOfView;
                    targetFOV       = _camFieldOfView;
                    _transitionType = CameraPrjSwitchTransition.Type.ToPerspective;
                }
                else
                if (_transitionType == CameraPrjSwitchTransition.Type.ToPerspective)
                {
                    startFOV        = _targetCamera.fieldOfView;
                    targetFOV       = _targetCamera.GetOrthoFOV();
                    _transitionType = CameraPrjSwitchTransition.Type.ToOrtho;
                }
            }

            _progress = 0.0f;
            if (TransitionBegin != null)
            {
                TransitionBegin(_transitionType);
            }

            float invDuration = 1.0f / _durationInSeconds;
            float fovSpeed    = (targetFOV - startFOV) * invDuration;

            Transform _targetTransform = _targetCamera.transform;

            _targetCamera.orthographic = false;
            _targetCamera.fieldOfView  = startFOV;

            _camRestorePosition = _targetTransform.position;
            while (_progress < 1.0f)
            {
                _targetCamera.fieldOfView       += fovSpeed * Time.deltaTime;
                _targetCamera.transform.position = _camFocusPoint - _targetTransform.forward * _targetCamera.GetFrustumDistanceFromHeight(frustumHeight);

                _progress += Time.deltaTime * invDuration;
                _progress  = Mathf.Min(1.0f, _progress);

                if ((fovSpeed < 0.0f && _targetCamera.fieldOfView <= targetFOV) ||
                    (fovSpeed > 0.0f && _targetCamera.fieldOfView >= targetFOV))
                {
                    _progress = 1.0f;
                    _targetCamera.fieldOfView = targetFOV;
                    if (_transitionType == CameraPrjSwitchTransition.Type.ToOrtho)
                    {
                        _targetCamera.orthographic = true;
                    }

                    _targetTransform.position = _camRestorePosition;
                    _targetCamera.fieldOfView = _camFieldOfView;
                    if (TransitionUpdate != null)
                    {
                        TransitionUpdate(_transitionType);
                    }

                    // Note: Use 'yield return null' instead of 'break'! This is important as it allows
                    //       listeners to capture a transition update for the last pahse of the transition.
                    yield return(null);
                }
                else
                {
                    if (TransitionUpdate != null)
                    {
                        TransitionUpdate(_transitionType);
                    }
                    yield return(null);
                }
            }

            if (TransitionEnd != null)
            {
                TransitionEnd(_transitionType);
            }

            _transitionType = CameraPrjSwitchTransition.Type.None;
            _progress       = 0.0f;
            _transitionCrtn = null;
        }