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); } }
protected override void Start() { base.Start(); if (ProCamera2D == null) return; _boundsAnim = new BoundariesAnimator(ProCamera2D, NumericBoundaries); _boundsAnim.OnTransitionStarted += () => { if (ProCamera2D.OnBoundariesTransitionStarted != null) ProCamera2D.OnBoundariesTransitionStarted(); }; _boundsAnim.OnTransitionFinished += () => { if (ProCamera2D.OnBoundariesTransitionFinished != null) ProCamera2D.OnBoundariesTransitionFinished(); }; GetTargetBoundaries(); if (SetAsStartingBoundaries) { NumericBoundaries.CurrentBoundariesTriggerID = _instanceID; NumericBoundaries.UseLeftBoundary = UseLeftBoundary; if (UseLeftBoundary) NumericBoundaries.LeftBoundary = NumericBoundaries.TargetLeftBoundary = _targetLeftBoundary; NumericBoundaries.UseRightBoundary = UseRightBoundary; if (UseRightBoundary) NumericBoundaries.RightBoundary = NumericBoundaries.TargetRightBoundary = _targetRightBoundary; NumericBoundaries.UseTopBoundary = UseTopBoundary; if (UseTopBoundary) NumericBoundaries.TopBoundary = NumericBoundaries.TargetTopBoundary = _targetTopBoundary; NumericBoundaries.UseBottomBoundary = UseBottomBoundary; if (UseBottomBoundary) NumericBoundaries.BottomBoundary = NumericBoundaries.TargetBottomBoundary = _targetBottomBoundary; if (!UseTopBoundary && !UseBottomBoundary && !UseLeftBoundary && !UseRightBoundary) NumericBoundaries.UseNumericBoundaries = false; else NumericBoundaries.UseNumericBoundaries = true; } _initialCamSize = ProCamera2D.GameCameraSize; }
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(); } }
void Start() { if (ProCamera2D == null) { return; } if (NumericBoundaries == null) { var numericBoundaries = FindObjectOfType <ProCamera2DNumericBoundaries>(); NumericBoundaries = numericBoundaries == null?ProCamera2D.gameObject.AddComponent <ProCamera2DNumericBoundaries>() : numericBoundaries; } _boundsAnim = new BoundariesAnimator(ProCamera2D, NumericBoundaries); _boundsAnim.OnTransitionStarted += () => { if (NumericBoundaries.OnBoundariesTransitionStarted != null) { NumericBoundaries.OnBoundariesTransitionStarted(); } }; _boundsAnim.OnTransitionFinished += () => { if (NumericBoundaries.OnBoundariesTransitionFinished != null) { NumericBoundaries.OnBoundariesTransitionFinished(); } }; if (IsSpawnEnemies) { ResetCustomBoundaries(); } GetTargetBoundaries(); if (SetAsStartingBoundaries) { SetBoundaries(); } _initialCamSize = ProCamera2D.ScreenSizeInWorldCoordinates.y * .5f; }
void Start() { if (ProCamera2D == null) return; if (PositionAndSizeOverrider == null) { var positionAndSizeOverrider = ProCamera2D.GetComponent<ProCamera2DPositionAndSizeOverrider>(); PositionAndSizeOverrider = positionAndSizeOverrider == null ? ProCamera2D.gameObject.AddComponent<ProCamera2DPositionAndSizeOverrider>() : positionAndSizeOverrider; PositionAndSizeOverrider.hideFlags = HideFlags.HideInInspector; } if (NumericBoundaries == null) { var numericBoundaries = FindObjectOfType<ProCamera2DNumericBoundaries>(); NumericBoundaries = numericBoundaries == null ? ProCamera2D.gameObject.AddComponent<ProCamera2DNumericBoundaries>() : numericBoundaries; } _boundsAnim = new BoundariesAnimator(ProCamera2D, NumericBoundaries); _boundsAnim.OnTransitionStarted += () => { if (ProCamera2D.OnBoundariesTransitionStarted != null) ProCamera2D.OnBoundariesTransitionStarted(); }; _boundsAnim.OnTransitionFinished += () => { if (ProCamera2D.OnBoundariesTransitionFinished != null) ProCamera2D.OnBoundariesTransitionFinished(); }; GetTargetBoundaries(); if (SetAsStartingBoundaries) SetBoundaries(); _initialCamSize = ProCamera2D.GameCameraSize; }
protected override void Start() { base.Start(); if (ProCamera2D == null) { return; } if (PositionAndSizeOverrider == null) { var positionAndSizeOverrider = ProCamera2D.GetComponent <ProCamera2DPositionAndSizeOverrider>(); PositionAndSizeOverrider = positionAndSizeOverrider == null?ProCamera2D.gameObject.AddComponent <ProCamera2DPositionAndSizeOverrider>() : positionAndSizeOverrider; PositionAndSizeOverrider.hideFlags = HideFlags.HideInInspector; } if (NumericBoundaries == null) { var numericBoundaries = FindObjectOfType <ProCamera2DNumericBoundaries>(); NumericBoundaries = numericBoundaries == null?ProCamera2D.gameObject.AddComponent <ProCamera2DNumericBoundaries>() : numericBoundaries; } _boundsAnim = new BoundariesAnimator(ProCamera2D, NumericBoundaries); _boundsAnim.OnTransitionStarted += () => { if (ProCamera2D.OnBoundariesTransitionStarted != null) { ProCamera2D.OnBoundariesTransitionStarted(); } }; _boundsAnim.OnTransitionFinished += () => { if (ProCamera2D.OnBoundariesTransitionFinished != null) { ProCamera2D.OnBoundariesTransitionFinished(); } }; GetTargetBoundaries(); if (SetAsStartingBoundaries) { NumericBoundaries.CurrentBoundariesTriggerID = _instanceID; NumericBoundaries.UseLeftBoundary = UseLeftBoundary; if (UseLeftBoundary) { NumericBoundaries.LeftBoundary = NumericBoundaries.TargetLeftBoundary = _targetLeftBoundary; } NumericBoundaries.UseRightBoundary = UseRightBoundary; if (UseRightBoundary) { NumericBoundaries.RightBoundary = NumericBoundaries.TargetRightBoundary = _targetRightBoundary; } NumericBoundaries.UseTopBoundary = UseTopBoundary; if (UseTopBoundary) { NumericBoundaries.TopBoundary = NumericBoundaries.TargetTopBoundary = _targetTopBoundary; } NumericBoundaries.UseBottomBoundary = UseBottomBoundary; if (UseBottomBoundary) { NumericBoundaries.BottomBoundary = NumericBoundaries.TargetBottomBoundary = _targetBottomBoundary; } if (!UseTopBoundary && !UseBottomBoundary && !UseLeftBoundary && !UseRightBoundary) { NumericBoundaries.UseNumericBoundaries = false; } else { NumericBoundaries.UseNumericBoundaries = true; } } _initialCamSize = ProCamera2D.GameCameraSize; }
protected override void Start() { base.Start(); if (ProCamera2D == null) return; if (PositionAndSizeOverrider == null) { var positionAndSizeOverrider = ProCamera2D.gameObject.GetComponent<ProCamera2DPositionAndSizeOverrider>(); PositionAndSizeOverrider = positionAndSizeOverrider == null ? ProCamera2D.gameObject.AddComponent<ProCamera2DPositionAndSizeOverrider>() : positionAndSizeOverrider; PositionAndSizeOverrider.hideFlags = HideFlags.HideInInspector; PositionAndSizeOverrider.enabled = false; } PositionAndSizeOverrider.enabled = false; if (NumericBoundaries == null) { var numericBoundaries = ProCamera2D.gameObject.GetComponent<ProCamera2DNumericBoundaries>(); NumericBoundaries = numericBoundaries == null ? ProCamera2D.gameObject.AddComponent<ProCamera2DNumericBoundaries>() : numericBoundaries; } _boundsAnim = new BoundariesAnimator(ProCamera2D, NumericBoundaries); _boundsAnim.OnTransitionStarted += () => { if (ProCamera2D.OnBoundariesTransitionStarted != null) ProCamera2D.OnBoundariesTransitionStarted(); }; _boundsAnim.OnTransitionFinished += () => { if (ProCamera2D.OnBoundariesTransitionFinished != null) ProCamera2D.OnBoundariesTransitionFinished(); }; GetTargetBoundaries(); if (SetAsStartingBoundaries) { NumericBoundaries.CurrentBoundariesTriggerID = _instanceID; NumericBoundaries.UseLeftBoundary = UseLeftBoundary; if (UseLeftBoundary) NumericBoundaries.LeftBoundary = NumericBoundaries.TargetLeftBoundary = _targetLeftBoundary; NumericBoundaries.UseRightBoundary = UseRightBoundary; if (UseRightBoundary) NumericBoundaries.RightBoundary = NumericBoundaries.TargetRightBoundary = _targetRightBoundary; NumericBoundaries.UseTopBoundary = UseTopBoundary; if (UseTopBoundary) NumericBoundaries.TopBoundary = NumericBoundaries.TargetTopBoundary = _targetTopBoundary; NumericBoundaries.UseBottomBoundary = UseBottomBoundary; if (UseBottomBoundary) NumericBoundaries.BottomBoundary = NumericBoundaries.TargetBottomBoundary = _targetBottomBoundary; if (!UseTopBoundary && !UseBottomBoundary && !UseLeftBoundary && !UseRightBoundary) NumericBoundaries.UseNumericBoundaries = false; else NumericBoundaries.UseNumericBoundaries = true; } _initialCamSize = ProCamera2D.GameCameraSize; }
void Start() { if (ProCamera2D == null) return; if (NumericBoundaries == null) { var numericBoundaries = FindObjectOfType<ProCamera2DNumericBoundaries>(); NumericBoundaries = numericBoundaries == null ? ProCamera2D.gameObject.AddComponent<ProCamera2DNumericBoundaries>() : numericBoundaries; } _boundsAnim = new BoundariesAnimator(ProCamera2D, NumericBoundaries); _boundsAnim.OnTransitionStarted += () => { if (NumericBoundaries.OnBoundariesTransitionStarted != null) NumericBoundaries.OnBoundariesTransitionStarted(); }; _boundsAnim.OnTransitionFinished += () => { if (NumericBoundaries.OnBoundariesTransitionFinished != null) NumericBoundaries.OnBoundariesTransitionFinished(); }; GetTargetBoundaries(); if (SetAsStartingBoundaries) SetBoundaries(); _initialCamSize = ProCamera2D.ScreenSizeInWorldCoordinates.y * .5f; }
protected override void Start() { base.Start(); if (ProCamera2D == null) { return; } _boundsAnim = new BoundariesAnimator(ProCamera2D); _boundsAnim.OnTransitionStarted += () => { if (ProCamera2D.OnBoundariesTransitionStarted != null) { ProCamera2D.OnBoundariesTransitionStarted(); } }; _boundsAnim.OnTransitionFinished += () => { if (ProCamera2D.OnBoundariesTransitionFinished != null) { ProCamera2D.OnBoundariesTransitionFinished(); } }; GetTargetBoundaries(); if (SetAsStartingBoundaries) { ProCamera2D.CurrentBoundariesTriggerID = _instanceID; ProCamera2D.UseLeftBoundary = UseLeftBoundary; if (UseLeftBoundary) { ProCamera2D.LeftBoundary = ProCamera2D.TargetLeftBoundary = _targetLeftBoundary; } ProCamera2D.UseRightBoundary = UseRightBoundary; if (UseRightBoundary) { ProCamera2D.RightBoundary = ProCamera2D.TargetRightBoundary = _targetRightBoundary; } ProCamera2D.UseTopBoundary = UseTopBoundary; if (UseTopBoundary) { ProCamera2D.TopBoundary = ProCamera2D.TargetTopBoundary = _targetTopBoundary; } ProCamera2D.UseBottomBoundary = UseBottomBoundary; if (UseBottomBoundary) { ProCamera2D.BottomBoundary = ProCamera2D.TargetBottomBoundary = _targetBottomBoundary; } if (!UseTopBoundary && !UseBottomBoundary && !UseLeftBoundary && !UseRightBoundary) { ProCamera2D.UseNumericBoundaries = false; } else { ProCamera2D.UseNumericBoundaries = true; } } }