public void PlaceBuilding(BuildingTile building, Vector3Int position) { if (building) { tilemap.SetTile(position, building.centerTile); if (building.ring1Tile.Length != 0) { var ring = HexagonalTile.GetHexagonalRing(position, 1); foreach (Vector3Int t in ring) { if (Random.Range(0f, 1f) < building.ring1Probability) { tilemap.SetTile(t, building.ring1Tile[Random.Range(0, building.ring1Tile.Length)]); if (building.flipAllowed && Random.Range(0, 2) != 0) { Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0f, 180f, 0f), Vector3.one); tilemap.SetTransformMatrix(t, matrix); } } } } if (building.ring2Tile.Length != 0) { var ring = HexagonalTile.GetHexagonalRing(position, 2); foreach (Vector3Int t in ring) { if (Random.Range(0f, 1f) < building.ring2Probability) { tilemap.SetTile(t, building.ring2Tile[Random.Range(0, building.ring2Tile.Length)]); if (building.flipAllowed && Random.Range(0, 2) != 0) { Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0f, 180f, 0f), Vector3.one); tilemap.SetTransformMatrix(t, matrix); } } } } } }