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))); }
public static bool Include(ref AaRect bounds, AaRect newrect) { if (bounds.Contains(newrect)) { return(false); } bounds = AaRect.Merge(bounds, newrect); return(true); }
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)); }
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); }
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() )); }