void OpenGridNeighbors(Vector2Int grid)
        {
            int range = openWorldSettings.lod1_distance;

            for (int x = -range; x <= range; x++)
            {
                for (int y = -range; y <= range; y++)
                {
                    if (x == 0 && y == 0)
                    {
                        continue;
                    }

                    Vector2Int neighbor = new Vector2Int(grid.x + x, grid.y + y);
                    if (neighbor.x < 0 || neighbor.x >= openWorldSettings.gridResolution)
                    {
                        continue;
                    }
                    if (neighbor.y < 0 || neighbor.y >= openWorldSettings.gridResolution)
                    {
                        continue;
                    }


                    int dist = GridManagement.GridDistance(neighbor, grid);
                    OpenSceneIfWithinRange(neighbor, dist, openWorldSettings.lod1_distance, 1);
                    OpenSceneIfWithinRange(neighbor, dist, openWorldSettings.lod0_distance, 0);
                }
            }
        }
 void UnloadNonNeighbors(Vector2Int playerGrid)
 {
     for (int i = 0; i < loadedWorldScenes.Count; i++)
     {
         WorldScene loadedScene = loadedWorldScenes[i];
         if (!SceneLoading.IsSceneLoadingOrUnloading(loadedScene.scene))
         {
             int dist = loadedScene.lod == 0 ? settings.lod0_distance : settings.lod1_distance;
             if (GridManagement.GridDistance(loadedScene.grid, playerGrid) > dist)
             {
                 SceneLoading.UnloadSceneAsync(loadedScene.scene);
             }
         }
     }
 }
        void LoadNeighbors(Vector2Int playerGrid, int gridRes)
        {
            int maxDistance = settings.lod1_distance;

            for (int y = -maxDistance; y <= maxDistance; y++)
            {
                for (int x = -maxDistance; x <= maxDistance; x++)
                {
                    if (y == 0 && x == 0)
                    {
                        continue;
                    }

                    Vector2Int n = new Vector2Int(playerGrid.x + x, playerGrid.y + y);

                    if (n.y < 0 || n.y >= gridRes || n.x < 0 || n.x >= gridRes)
                    {
                        continue;
                    }


                    if (!loadedWorldGrids1.Contains(n))
                    {
                        LoadGridScene(n, 1);
                    }

                    int cellDistance = GridManagement.GridDistance(n, playerGrid);
                    if (cellDistance <= settings.lod0_distance)
                    {
                        if (!loadedWorldGrids0.Contains(n))
                        {
                            LoadGridScene(n, 0);
                        }
                    }
                }
            }
        }