//Создать дерево разделения private void CreateBSP(SubDungeon subdungeon) { //Debug.Log("Splitting sub-dungeon " + subdungeon.debugId + ": " + subdungeon.rect); if (subdungeon.IAmLeaf()) { if (splits < maxSplits) { if (subdungeon.rect.width > maxLeafSize || subdungeon.rect.height > maxLeafSize) { if (subdungeon.Split(minLeafSize, maxLeafSize)) { /*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); return; } else { leaves.Add(subdungeon); return; } } } leaves.Add(subdungeon); } }
private void CreateBSP(SubDungeon subDungeon) { if (subDungeon.IAmLeaf()) { if (subDungeon._rect.width > _maxRoomSize || subDungeon._rect.height > _maxRoomSize) // || Random.Range(0.0f, 1.0f) > 0.25) { if (subDungeon.Split(_minRoomSize, _maxRoomSize)) { CreateBSP(subDungeon._right); CreateBSP(subDungeon._left); } } } }
public void SpacePartition(SubDungeon subDungeon) { if (subDungeon.IAmLeaf()) { //split subDungeon if it's large if (subDungeon.rectangle.width > _roomSideSize || subDungeon.rectangle.height > _roomSideSize) { if (subDungeon.Split(_roomSideSize)) { SpacePartition(subDungeon.leftDungeon); SpacePartition(subDungeon.rightDungeon); } } } }
public void CreateBSP(SubDungeon subDungeon) { if (subDungeon.IAmLeaf()) { // Si el subdungeon es muy largo if (subDungeon.rect.width > maxRoomSize || subDungeon.rect.height > maxRoomSize || Random.Range(0.0f, 1.0f) > 0.25) { if (subDungeon.Split(minRoomSize, maxRoomSize)) { CreateBSP(subDungeon.left); CreateBSP(subDungeon.right); } } } }
public void CreateBSP(SubDungeon subDungeon) // 트리 만들기 { if (subDungeon.IAmLeaf()) //잎 노드일때 { //나눈 방이 많이 클 시 if (subDungeon.rect.width > maxRoomSize || subDungeon.rect.height > maxRoomSize || Random.Range(0.0f, 1.0f) > 0.25) { if (subDungeon.Split(minRoomSize, maxRoomSize)) { CreateBSP(subDungeon.left); CreateBSP(subDungeon.right); } } } }
// this is where we create the binary space partition tree public void GenerateBinarySpacePartition(SubDungeon subDungeon) { // checks to see if the node has no children if (subDungeon.IsLeaf()) { // if the sub-dungeon is too big, then split it if ((subDungeon.rect.width > maxRoomSize) || (subDungeon.rect.height > maxRoomSize) || (Random.Range(0.0f, 1.0f) > 0.25)) { // if we split, then recursively continue spliting the sub dungeons if (subDungeon.Split(minRoomSize, maxRoomSize)) { GenerateBinarySpacePartition(subDungeon.left); GenerateBinarySpacePartition(subDungeon.right); } } } }
public void CreateBSP(SubDungeon subDungeon) { if (subDungeon.IAmLeaf()) // ha a rész levél //ha a rész magassága, vagy szélessége nagyobb mint a maximum megengedett { if (subDungeon.rect.width > maxRoomSize || subDungeon.rect.height > maxRoomSize || Random.Range(0.0f, 1.0f) > 0.25) { //szétválasztható if (subDungeon.Split(minRoomSize, maxRoomSize)) { //szétválasztani és meghívni a gyerekeire is CreateBSP(subDungeon.left); CreateBSP(subDungeon.right); } } } }
public void CreateBSP(SubDungeon subDungeon) { // Debug.Log("Splitting sub-dungeon " + subDungeon.debug + ": " + subDungeon.rect); if (subDungeon.IAmLeaf()) { if (subDungeon.rect.width > minRoom || subDungeon.rect.height > minRoom) { if (subDungeon.Split(minRoom)) { // Debug.Log("Splitted sub-dungeon " + subDungeon.debug + " in " // + subDungeon.left.debug + ": " + subDungeon.left.rect + ", " // + subDungeon.right.debug + ": " + subDungeon.right.rect); CreateBSP(subDungeon.left); CreateBSP(subDungeon.right); } } } }
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); } } } }
private void CreateBSP(SubDungeon subDungeon) { //Debug.Log("Splitting sub-dungeon " + subDungeon.debugId + ": " + subDungeon.rect); if (subDungeon.IAmLeaf()) { // if the subdungeon is too large if (subDungeon.rect.width > GameConfigData.Instance.MaxRoomSize || subDungeon.rect.height > GameConfigData.Instance.MaxRoomSize || Random.Range(0.0f, 1.0f) > 0.25) { if (subDungeon.Split(GameConfigData.Instance.MinRoomSize, GameConfigData.Instance.MaxRoomSize)) { //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 CreateBSP(SubDungeon subDungeon) { Debug.Log("Splitting sub-dungeon " + subDungeon.debugId + ": " + subDungeon.rect); if (subDungeon.IAmLeaf()) { if (subDungeon.rect.width > maxRoomSize || subDungeon.rect.height > maxRoomSize || Random.Range(0.0f, 1.0f) > 0.25) { if (subDungeon.Split(minRoomSize, maxRoomSize)) { 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); } } } }