ExpandToContain() static private method

static private ExpandToContain ( Rect r, Rect r2 ) : Rect
r UnityEngine.Rect
r2 UnityEngine.Rect
return UnityEngine.Rect
コード例 #1
0
 // Token: 0x0600267F RID: 9855 RVA: 0x001AB000 File Offset: 0x001A9200
 private RecastBBTreeBox RemoveBox(RecastBBTreeBox c, RecastMeshObj mesh, Rect bounds, ref bool found)
 {
     if (!RecastBBTree.RectIntersectsRect(c.rect, bounds))
     {
         return(c);
     }
     if (c.mesh == mesh)
     {
         found = true;
         return(null);
     }
     if (c.mesh == null && !found)
     {
         c.c1 = this.RemoveBox(c.c1, mesh, bounds, ref found);
         if (c.c1 == null)
         {
             return(c.c2);
         }
         if (!found)
         {
             c.c2 = this.RemoveBox(c.c2, mesh, bounds, ref found);
             if (c.c2 == null)
             {
                 return(c.c1);
             }
         }
         if (found)
         {
             c.rect = RecastBBTree.ExpandToContain(c.c1.rect, c.c2.rect);
         }
     }
     return(c);
 }
コード例 #2
0
        // Token: 0x06002680 RID: 9856 RVA: 0x001AB0BC File Offset: 0x001A92BC
        public void Insert(RecastMeshObj mesh)
        {
            RecastBBTreeBox recastBBTreeBox = new RecastBBTreeBox(mesh);

            if (this.root == null)
            {
                this.root = recastBBTreeBox;
                return;
            }
            RecastBBTreeBox recastBBTreeBox2 = this.root;

            for (;;)
            {
                recastBBTreeBox2.rect = RecastBBTree.ExpandToContain(recastBBTreeBox2.rect, recastBBTreeBox.rect);
                if (recastBBTreeBox2.mesh != null)
                {
                    break;
                }
                float num  = RecastBBTree.ExpansionRequired(recastBBTreeBox2.c1.rect, recastBBTreeBox.rect);
                float num2 = RecastBBTree.ExpansionRequired(recastBBTreeBox2.c2.rect, recastBBTreeBox.rect);
                if (num < num2)
                {
                    recastBBTreeBox2 = recastBBTreeBox2.c1;
                }
                else if (num2 < num)
                {
                    recastBBTreeBox2 = recastBBTreeBox2.c2;
                }
                else
                {
                    recastBBTreeBox2 = ((RecastBBTree.RectArea(recastBBTreeBox2.c1.rect) < RecastBBTree.RectArea(recastBBTreeBox2.c2.rect)) ? recastBBTreeBox2.c1 : recastBBTreeBox2.c2);
                }
            }
            recastBBTreeBox2.c1 = recastBBTreeBox;
            RecastBBTreeBox c = new RecastBBTreeBox(recastBBTreeBox2.mesh);

            recastBBTreeBox2.c2   = c;
            recastBBTreeBox2.mesh = null;
        }