Exemple #1
0
        public AaRect GetBodyFatRect(Rigidbody body)
        {
            var rect        = GetBodyFitRect(body);
            var fat         = rect.ExtendSides(rect.GetSize() * fatSizeFactor);
            var maxSize     = fat.GetMaxSize() * fatVelocityMaxFactor;
            var translation = (body.positionVelocity * fatVelocityFactor).Clamp(maxSize);

            return(AaRect.Merge(fat, fat.Translate(translation)));
        }
Exemple #2
0
 public static bool Include(ref AaRect bounds, AaRect newrect)
 {
     if (bounds.Contains(newrect))
     {
         return(false);
     }
     bounds = AaRect.Merge(bounds, newrect);
     return(true);
 }
Exemple #3
0
 public static AaRect?MergeNullable(AaRect?a, AaRect?b)
 {
     if (!a.HasValue)
     {
         return(b);
     }
     if (!b.HasValue)
     {
         return(a);
     }
     return(AaRect.Merge(a.Value, b.Value));
 }
Exemple #4
0
        public static AaRect MergeAll(IEnumerable <AaRect> rects)
        {
            bool   first  = true;
            AaRect result = default;

            foreach (var r in rects)
            {
                if (first)
                {
                    first  = false;
                    result = r;
                }
                else
                {
                    result = AaRect.Merge(result, r);
                }
            }

            return(result);
        }
Exemple #5
0
 private AabbTreeNode <T> FindChildNodeWithLeastOverlapInInner(AabbTreeNode <T> node, AaRect fat)
 {
     return(node.children.MinBy <AabbTreeNode <T>, List <AabbTreeNode <T> >, float>(
                n => AaRect.Merge(n.bounds, fat).GetArea() - n.bounds.GetArea()
                ));
 }