} // Core loop of the algorithm private void Collapse(Vector2Int coords) { int x = coords.x, y = coords.y; var gridPos = grid[x + width * y]; float totalWeight = 0; foreach (var possibleTile in gridPos) { totalWeight += inputReader.GetTileWeight(possibleTile.Module); } float randVal = UnityEngine.Random.Range(0f, 1f) * totalWeight; foreach (var possibleTile in gridPos) { randVal -= inputReader.GetTileWeight(possibleTile.Module); if (randVal <= 0) { grid[x + width * y] = new[] { possibleTile }; //GameObject.Instantiate(possibleTile.Module.gameObject, new Vector3(x - (width / 2), height - (y + 1), 0), Quaternion.identity); //outputTilemap.SetTile(new Vector3Int(x - (width / 2), height - (y + 1), 0), possibleTile.Module); break; } } //Debug.Log("Collapsed at " + coords + ", " + grid[x + width * y].Length + " TotalWeight: " + totalWeight); } // collapses the position in grid to a single tile