public void GenerateSector()
        {
            var           infoObj   = GameObject.FindWithTag("WorldDataInfo");
            WorldDataInfo worldData = infoObj.GetComponent <WorldDataInfo>();

            for (int column = 0; column < mapSize.x; column++)
            {
                Vector2   phase         = new Vector2(Mathf.Cos((float)column / mapSize.x * 2f * Mathf.PI), Mathf.Sin((float)column / mapSize.x * 2f * Mathf.PI)) * samplingRadius;
                Vector2   samplingPoint = worldData.CurrentSectorWorldPosition + phase;
                BiomeData sample        = worldData.BiomeDataAt(samplingPoint);
                int       height        = (int)Mathf.Min(sample.Height * mapSize.y + (-1f + 2f * Mathf.PerlinNoise(samplingPoint.x * terrainRoughness, samplingPoint.y * terrainRoughness)) * terrainDeviation, mapSize.y);
                if (column == mapSize.x / 2)
                {
                    spawnHeight = height + 1;
                }
                for (int y = 0; y < height; y++)
                {
                    tiles.Add(new Vector3Int(column, y, 0), baseTile);
                }
            }

            Vector3Int[]   positionArray = new Vector3Int[tiles.Count];
            ScriptedTile[] tilesArray    = new ScriptedTile[tiles.Count];
            int            i             = 0;

            foreach (KeyValuePair <Vector3Int, ScriptedTile> pair in tiles)
            {
                positionArray[i] = pair.Key;
                tilesArray[i]    = pair.Value;
                i++;
            }

            tilemap.SetTiles(positionArray, tilesArray);
        }
        void Awake()
        {
            Instance     = this;
            MapGenerator = GetComponent <WorldMapGenerator>();
            var infoObj = GameObject.FindWithTag("WorldDataInfo");

            if (infoObj != null)
            {
                worldData = infoObj.GetComponent <WorldDataInfo>();
                if (worldData == null)
                {
                    worldData = infoObj.AddComponent <WorldDataInfo>();
                }
            }
            else
            {
                infoObj     = new GameObject("WorldDataInfoObject");
                infoObj.tag = "WorldDataInfo";
                worldData   = infoObj.AddComponent <WorldDataInfo>();
            }
            DontDestroyOnLoad(infoObj);

            foreach (var preset in presets)
            {
                sectors.Add(preset.position, null);
            }
        }