private void OnPrjSwitchTransitionEnd(CameraPrjSwitchTransition.Type transitionType) { if (PrjSwitchTransitionEnd != null) { PrjSwitchTransitionEnd(transitionType); } }
private void OnPrjSwitchTransitionBegin(CameraPrjSwitchTransition.Type transitionType) { if (PrjSwitchTransitionBegin != null) { PrjSwitchTransitionBegin(transitionType); } }
private void OnPrjSwitchTransitionUpate(CameraPrjSwitchTransition.Type transitionType) { if (PrjSwitchTransitionUpdate != null) { PrjSwitchTransitionUpdate(transitionType); } }
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; }