Example #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);
     }
 }
Example #2
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);
        }
Example #5
0
 public void SetState(Transform player)
 {
     CameraStateManager.DeleteState();
     CameraStateManager.SaveState(vCam, followTarget, lookAtTarget, screenX, screenY, boxCollider);
     CameraStateManager.RestoreState(player);
 }