query method

  1. @override
Iterable<CollisionProspect<T>> query()
override

Returns the potential hitbox collisions

Implementation

@override
Iterable<CollisionProspect<T>> query() {
  _active.clear();
  _prospectPool.reset();

  for (final item in items) {
    if (item.collisionType == CollisionType.inactive) {
      continue;
    }
    if (_active.isEmpty) {
      _active.add(item);
      continue;
    }
    final currentBox = item.aabb;
    final currentMin = currentBox.min.x;
    for (var i = _active.length - 1; i >= 0; i--) {
      final activeItem = _active[i];
      final activeBox = activeItem.aabb;
      if (activeBox.max.x >= currentMin) {
        if (item.collisionType == CollisionType.active ||
            activeItem.collisionType == CollisionType.active) {
          _prospectPool.acquire(item, activeItem);
        }
      } else {
        _active.remove(activeItem);
      }
    }
    _active.add(item);
  }
  return _prospectPool;
}