IEnumerator DisableInfluenceRoutine() { var initialExclusiveFocusPointH = Vector3H(_targetExclusiveFocusPoint.Value); var initialExclusiveFocusPointV = Vector3V(_targetExclusiveFocusPoint.Value); // Ease out var waitForFixedUpdate = new WaitForFixedUpdate(); var t = 0f; while (t <= 1.0f) { t += (ProCamera2D.UpdateType == UpdateType.LateUpdate ? Time.deltaTime : Time.fixedDeltaTime) / EaseOutDuration; var targetExclusiveFocusPointH = Utils.EaseFromTo(initialExclusiveFocusPointH, Vector3H(ProCamera2D.CameraTargetPositionDuringExclusive), t, TransitionEaseType); var targetExclusiveFocusPointV = Utils.EaseFromTo(initialExclusiveFocusPointV, Vector3V(ProCamera2D.CameraTargetPositionDuringExclusive), t, TransitionEaseType); _targetExclusiveFocusPoint = VectorHV(targetExclusiveFocusPointH, targetExclusiveFocusPointV); ProCamera2D.ExclusiveTargetPosition = _targetExclusiveFocusPoint; yield return((ProCamera2D.UpdateType == UpdateType.FixedUpdate) ? waitForFixedUpdate : null); } _targetExclusiveFocusPoint = null; // Restore boundaries if existed if (_boundsAnimator != null) { _boundsAnimator.Transition(); } _boundsAnimator = null; if (_reenableGeometryBoundaries) { ProCamera2D.UseGeometryBoundaries = true; _reenableGeometryBoundaries = false; } if (ProCamera2D.OnExclusiveFocusFinished != null) { ProCamera2D.OnExclusiveFocusFinished(); } }