Esempio n. 1
0
    //Создать дерево разделения
    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);
        }
    }
Esempio n. 2
0
 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);
             }
         }
     }
 }
Esempio n. 3
0
 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);
             }
         }
     }
 }
Esempio n. 4
0
 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);
             }
         }
     }
 }
Esempio n. 5
0
 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);
             }
         }
     }
 }
Esempio n. 7
0
 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);
                }
            }
        }
    }
Esempio n. 9
0
 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);
             }
         }
     }
 }
Esempio n. 10
0
    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);
                }
            }
        }
    }
Esempio n. 11
0
    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);
                }
            }
        }
    }