IEnumerator ApplyInfluenceRoutine() { var initialExclusiveFocusPointH = Vector3H(_targetExclusiveFocusPoint.HasValue ? _targetExclusiveFocusPoint.Value : ProCamera2D.CameraPosition); var initialExclusiveFocusPointV = Vector3V(_targetExclusiveFocusPoint.HasValue ? _targetExclusiveFocusPoint.Value : ProCamera2D.CameraPosition); // Save the current boundaries so we can enable then later again if (IgnoreBoundaries && ProCamera2D.UseNumericBoundaries) { ProCamera2D.UseNumericBoundaries = false; _boundsAnimator = new BoundariesAnimator(ProCamera2D); _boundsAnimator.UseTopBoundary = ProCamera2D.UseTopBoundary; _boundsAnimator.TopBoundary = ProCamera2D.TopBoundary; _boundsAnimator.UseBottomBoundary = ProCamera2D.UseBottomBoundary; _boundsAnimator.BottomBoundary = ProCamera2D.BottomBoundary; _boundsAnimator.UseLeftBoundary = ProCamera2D.UseLeftBoundary; _boundsAnimator.LeftBoundary = ProCamera2D.LeftBoundary; _boundsAnimator.UseRightBoundary = ProCamera2D.UseRightBoundary; _boundsAnimator.RightBoundary = ProCamera2D.RightBoundary; ProCamera2D.MoveCameraInstantlyToPosition(VectorHV(initialExclusiveFocusPointH, initialExclusiveFocusPointV)); } else if (IgnoreBoundaries && ProCamera2D.UseGeometryBoundaries) { ProCamera2D.UseGeometryBoundaries = false; _reenableGeometryBoundaries = true; ProCamera2D.MoveCameraInstantlyToPosition(VectorHV(initialExclusiveFocusPointH, initialExclusiveFocusPointV)); } // Ease in var waitForFixedUpdate = new WaitForFixedUpdate(); var t = 0f; while (t <= 1.0f) { t += (ProCamera2D.UpdateType == UpdateType.LateUpdate ? Time.deltaTime : Time.fixedDeltaTime) / EaseInDuration; var targetExclusiveFocusPointH = Utils.EaseFromTo(initialExclusiveFocusPointH, Vector3H(_transform.position), t, TransitionEaseType); var targetExclusiveFocusPointV = Utils.EaseFromTo(initialExclusiveFocusPointV, Vector3V(_transform.position), t, TransitionEaseType); _targetExclusiveFocusPoint = VectorHV(targetExclusiveFocusPointH, targetExclusiveFocusPointV); ProCamera2D.ExclusiveTargetPosition = _targetExclusiveFocusPoint; yield return((ProCamera2D.UpdateType == UpdateType.FixedUpdate) ? waitForFixedUpdate : null); } // Follow this while (true) { ProCamera2D.ExclusiveTargetPosition = VectorHV(Vector3H(_transform.position), Vector3V(_transform.position)); _targetExclusiveFocusPoint = ProCamera2D.ExclusiveTargetPosition.Value; yield return((ProCamera2D.UpdateType == UpdateType.FixedUpdate) ? waitForFixedUpdate : null); } }