public void UpdateTerrain(Vector3 worldPosition, int radius)
        {
            var chunkPosition = GetChunkPosition(worldPosition);
            var newPositions  = GetChunkPositionsInRadius(chunkPosition, radius);

            var loadedChunks   = Cache.GetGeneratedChunks();
            var chunksToRemove = loadedChunks.Except(newPositions).ToList();

            var positionsToGenerate = newPositions.Except(chunksToRemove).ToList();

            foreach (var position in positionsToGenerate)
            {
                GenerateChunk(position.X, position.Z);
            }

            //foreach (var position in chunksToRemove)
            //   RemoveChunk(position.X, position.Z);
        }
        public void UpdateTerrain(Vector3 worldPosition, int radius)
        {
            var chunkPosition = GetChunkPosition(worldPosition);
            var newPositions  = GetChunkPositionsInRadius(chunkPosition, radius);

            var loadedChunks   = Cache.GetGeneratedChunks();
            var chunksToRemove = loadedChunks.Except(newPositions).ToList();

            var positionsToGenerate = newPositions.Except(chunksToRemove).ToList();
            var playerChunkPosition = GetChunkPosition(worldPosition);

            foreach (var position in positionsToGenerate)
            {
                //added
                if (switchDimensions)
                {
                    if (position.X == playerChunkPosition.X && position.Z == playerChunkPosition.Z)
                    {
                    }
                    else
                    {
                        GenerateChunk(position.X, position.Z);
                    }
                }
                else
                {
                    GenerateChunk(position.X, position.Z);
                }
            }
            foreach (var position in chunksToRemove)
            {
                RemoveChunk(position.X, position.Z);
            }
            //added
            if (switchDimensions)
            {
                //Remove current chunk
                RemoveChunk(playerChunkPosition.X, playerChunkPosition.Z);
                //recreate new chunk
                switchDimensions = false;
            }
        }