// 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); } }
//[SerializeField] private bool preloadBattleScene = true; private void Awake() { PartyManager.Order(); var member = PartyManager.Members.Single(m => m.positionInParty == 1); GameObject memberGo; if (PlayerPositionManager.Position != Vector3.zero) { memberGo = Instantiate(playerPrefab, PlayerPositionManager.Position, playerPrefab.transform.rotation); memberGo.GetComponent <Animator>().runtimeAnimatorController = member.overworldController; PlayerPositionManager.Position = Vector3.zero; vCam.Follow = memberGo.transform; vCam.LookAt = memberGo.transform; if (!doNotRestoreCamState) { CameraStateManager.RestoreState(memberGo.transform); } if (compassPro != null) { compassPro.miniMapFollow = memberGo.transform; } } else { var playerSpawners = FindObjectsOfType <PlayerSpawnArea>(); var spawnPoint = playerSpawners.SingleOrDefault(s => s.Id == PlayerPositionManager.SpawnId); if (spawnPoint != null) { var spawnPointTransform = spawnPoint.transform; if (spawnPoint.hasSpecificRotation) { SceneRotationManager.CurrentRotation = spawnPoint.Rotation; cVCamRotation.Value = spawnPoint.Rotation; } memberGo = Instantiate(playerPrefab, spawnPointTransform.position, playerPrefab.transform.rotation); memberGo.GetComponent <Animator>().runtimeAnimatorController = member.overworldController; vCam.Follow = memberGo.transform; vCam.LookAt = memberGo.transform; spawnPoint.GetComponent <CameraStateSetter>().SetState(memberGo.transform); if (compassPro != null) { compassPro.miniMapFollow = memberGo.transform; } } else { Debug.LogError("Could not locate a spawn point with the specified ID!"); } } playerSpawnEvent.Raise(); }
private void OnTriggerEnter(Collider other) { if (dontConfineOnEnter) { return; } if (!other.CompareTag("Player")) { return; } prevBoxCollider = (BoxCollider)vCamera.m_BoundingVolume; vCamera.m_BoundingVolume = setToDifferentColliderOnEnter ? otherCollider : boxCollider; CameraStateManager.SaveState(collider: setToDifferentColliderOnEnter ? otherCollider : boxCollider); }
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); }