getQuadrants method

List<Quadrant> getQuadrants(
  1. Rect object
)

Determines which quadrants the object belongs to.

Takes the bounds of the area to be checked. Returns the intersecting subnodes (ne, nw, sw, se)

Implementation

List<Quadrant> getQuadrants(Rect object) {
  final List<Quadrant> quadrants = [];
  final xMidpoint = bounds.x + bounds.width / 2;
  final yMidpoint = bounds.y + bounds.height / 2;

  final startIsNorth = object.y < yMidpoint;
  final startIsWest = object.x < xMidpoint;
  final endIsEast = object.x + object.width > xMidpoint;
  final endIsSouth = object.y + object.height > yMidpoint;

  if (startIsNorth && endIsEast) quadrants.add(Quadrant.ne);
  if (startIsWest && startIsNorth) quadrants.add(Quadrant.nw);
  if (startIsWest && endIsSouth) quadrants.add(Quadrant.sw);
  if (endIsEast && endIsSouth) quadrants.add(Quadrant.se);

  return quadrants;
}