public void CreateBSP(SubDungeon subDungeon) { //Debug.Log("Splitting sub-dungeon " + subDungeon.debugId + ": " + subDungeon.rect); if (subDungeon.isLeaf()) { // if the sub-dungeon is too large if (subDungeon.rect.width > maxSize || subDungeon.rect.height > maxSize || Random.Range(0.0f, 1.0f) > 0.25) { if (subDungeon.Split(minSize, maxSize)) { //Debug.Log("Splitted sub-dungeon " + subDungeon.debugId + " in " //+ subDungeon.left.debugId + ": " + subDungeon.left.rect + ", " //+ subDungeon.right.debugId + ": " + subDungeon.right.rect); CreateBSP(subDungeon.left); CreateBSP(subDungeon.right); } } } }
public void DrawRooms(SubDungeon subDungeon) { if (subDungeon == null) { return; } if (subDungeon.isLeaf()) { for (int i = (int)subDungeon.room.x; i < subDungeon.room.xMax; i++) { for (int j = (int)subDungeon.room.y; j < subDungeon.room.yMax; j++) { GameObject instance = Instantiate(floorTile, new Vector3(i, j, 0f), Quaternion.identity) as GameObject; instance.transform.SetParent(transform); positionsFloor[i, j] = instance; } } } else { DrawRooms(subDungeon.left); DrawRooms(subDungeon.right); } }