// TODO: May need to use system for detecting which side player is on for better control private void OnTriggerExit(Collider other) { if (dontConfineOnEnter) { return; } if (!other.CompareTag("Player")) { return; } if (resetOnExit) { vCamera.m_BoundingVolume = mainSceneCollider; CameraStateManager.DeleteState(false, false, false, false, false); } else if (setToDifferentColliderOnExit) { vCamera.m_BoundingVolume = otherCollider2; CameraStateManager.SaveState(collider: otherCollider2); } else if (setToPrevColliderOnExit) { vCamera.m_BoundingVolume = prevBoxCollider; CameraStateManager.SaveState(collider: prevBoxCollider); } }
private void OnTriggerExit(Collider other) { if (!other.CompareTag("Player")) { return; } var thisTransform = transform; var toOther = other.transform.position - thisTransform.position; var dot = Vector3.Dot(thisTransform.right, toOther); if (hasEnteredArea && dot > 0) { if (changeScreenX) { orbitalTransposer.m_FollowOffset.x = prevScreenX; } if (changeScreenY) { orbitalTransposer.m_FollowOffset.y = prevScreenY; } CameraStateManager.DeleteState(follow: false, lookAt: false, confiner: false); } else if (!hasEnteredArea && dot < 0) { if (changeScreenX) { orbitalTransposer.m_FollowOffset.x = screenX; } if (changeScreenY) { orbitalTransposer.m_FollowOffset.y = screenY; } CameraStateManager.SaveState(vCam, screenX: changeScreenX ? screenX : 0, screenY: changeScreenY ? screenY : 0); } hasEnteredArea = false; }
private IEnumerator <float> CameraChange(bool active, Transform target) { //Logging.Log($"Active: {active}"); yield return(Timing.WaitForSeconds(CanDelay ? seconds : 0)); if (active && vCam.gameObject.activeSelf) { yield break; } vCam.gameObject.SetActive(active); if (active && previousTrigger != null) { previousTrigger.vCam.gameObject.SetActive(false); } if (active == false) { CameraStateManager.DeleteState(screenX: false, screenY: false, confiner: false); if (previousTrigger) { previousTrigger.vCam.gameObject.SetActive(true); } if (!isExitTrigger) { if (previousTrigger) { CameraStateManager.SaveState(previousTrigger.vCam, previousTrigger.vCam.m_Follow != null, previousTrigger.vCam.m_LookAt != null); } //CameraStateManager.RestoreSaveFromPreviousTrigger(); if (deleteCamConfinerStateOnEnter) { CameraStateManager.SaveState(colliderName: prevConfinerName); } } yield break; } if (previousTrigger && isExitTrigger) { if (previousTrigger.followPlayer) { previousTrigger.vCam.Follow = target.gameObject.transform; } if (previousTrigger.lookAtPlayer) { previousTrigger.vCam.LookAt = target.gameObject.transform; } } else { if (followPlayer) { vCam.Follow = target.gameObject.transform; } if (lookAtPlayer) { vCam.LookAt = target.gameObject.transform; } } // var o = target.gameObject; // vCam.Follow = o.transform; // vCam.LookAt = o.transform; if (deleteCamConfinerStateOnEnter) { prevConfinerName = CameraStateManager.LastCamConfinerName; CameraStateManager.DeleteState(false, false, false, false, false); } CameraStateManager.SaveState(vCam, vCam.m_Follow != null, vCam.m_LookAt != null); }
public void SetState(Transform player) { CameraStateManager.DeleteState(); CameraStateManager.SaveState(vCam, followTarget, lookAtTarget, screenX, screenY, boxCollider); CameraStateManager.RestoreState(player); }