getAllCollisions function

List<LayoutItem> getAllCollisions(
  1. Layout layout,
  2. LayoutItem layoutItem
)

Gets all items in the layout that collide with the given item.

Implementation

List<LayoutItem> getAllCollisions(Layout layout, LayoutItem layoutItem) {
  final collisions = <LayoutItem>[];
  final targetLeft = layoutItem.x;
  final targetRight = layoutItem.x + layoutItem.w;
  final targetTop = layoutItem.y;
  final targetBottom = layoutItem.y + layoutItem.h;
  final targetId = layoutItem.id;

  for (final item in layout) {
    if (item.id == targetId) continue;
    if (targetRight <= item.x) continue;
    if (targetLeft >= item.x + item.w) continue;
    if (targetBottom <= item.y) continue;
    if (targetTop >= item.y + item.h) continue;
    collisions.add(item);
  }
  return collisions;
}