Esempio n. 1
0
 // 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();
        }
Esempio n. 3
0
 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);
        }
Esempio n. 6
0
 public void SetState(Transform player)
 {
     CameraStateManager.DeleteState();
     CameraStateManager.SaveState(vCam, followTarget, lookAtTarget, screenX, screenY, boxCollider);
     CameraStateManager.RestoreState(player);
 }