void Update()
        {
            if (GameManager.isPaused)
            {
                return;
            }
            if (GameManager.isInMainMenuScene)
            {
                return;
            }
            if (!GameManager.playerExists)
            {
                return;
            }
            if (!isInOpenWorldScene)
            {
                return;
            }

            Camera playerCamera = GameManager.playerCamera;

            if (playerCamera == null)
            {
                return;
            }

            #if UNITY_EDITOR
            CheckForDuplicateSceneLoad();
            #endif

            CheckLoadedScenes();

            Vector3    playerPosition = playerCamera.transform.position;
            Vector2Int playerCell     = GridManagement.CalculateGrid(playerPosition, settings.cellSize);

            int gridResolution = settings.gridResolution;

            playerCell.x = Mathf.Clamp(playerCell.x, 0, gridResolution - 1);
            playerCell.y = Mathf.Clamp(playerCell.y, 0, gridResolution - 1);

            string gridScene;
            if (GetCurrentGridScene(playerCell, 1, out gridScene))
            {
                SceneLoading.SetPlayerScene(gridScene);
            }
            else
            {
                // curernt grid scene is not loaded yet...
                LoadGridScene(playerCell, 0);
                LoadGridScene(playerCell, 1);
            }

            UpdateGrids(playerCell, gridResolution);
        }
        static List <MonoBehaviour> FilterSaveObjectsForScene(string scene, List <MonoBehaviour> originalList)
        {
            // check if it's an open world scene we're trying to load
            if (!scene.Contains(OpenWorld.openWorldSceneKey))
            {
                // dont load or save objects to the settings scene....
                if (scene == OpenWorld.openWorldSettingsScene)
                {
                    originalList.Clear();
                }

                return(originalList);
            }

            // non static objects should only load / save in lod 0 scenes....
            if (!scene.Contains(OpenWorld.lod0Check))
            {
                originalList.Clear();
                return(originalList);
            }


            Vector2Int sceneGrid = settings.Scene2Grid(scene, 0);
            float      cellSize  = settings.cellSize;

            // FILTER OUT IF NOT IN SCENE GRID
            for (int i = originalList.Count - 1; i >= 0; i--)
            {
                if (GridManagement.CalculateGrid(originalList[i].transform.position, cellSize) != sceneGrid)
                {
                    originalList.Remove(originalList[i]);
                }
            }

            return(originalList);
        }
 public static void FastTravelTo(Vector3 worldPosition)
 {
     FastTravel.FastTravelTo(settings.Grid2Scene(GridManagement.CalculateGrid(worldPosition, settings.cellSize), 0), worldPosition);
 }