overlap method

  1. @override
List<QueryHit3D> overlap(
  1. Shape3D shape,
  2. Vector3 position,
  3. Quaternion rotation, {
  4. QueryFilter3D filter = QueryFilter3D.all,
})
override

The bodies shape at position and rotation overlaps, one hit each.

Implementation

@override
List<QueryHit3D> overlap(
  Shape3D shape,
  Vector3 position,
  Quaternion rotation, {
  QueryFilter3D filter = QueryFilter3D.all,
}) {
  if (_disposed || !shape.isValid) return const [];
  final (lo, hi) = _boundsOf(shape);
  final (min, max) = _turned(lo, hi, rotation);
  min.add(position);
  max.add(position);
  return [
    for (final b in bodies.values)
      if (_passes(b, filter) &&
          min.x < b.maxX &&
          max.x > b.minX &&
          min.y < b.maxY &&
          max.y > b.minY &&
          min.z < b.maxZ &&
          max.z > b.minZ)
        QueryHit3D(
          body: b.handle,
          fraction: 0,
          point: Vector3.copy(b.position),
          normal: Vector3.zero(),
        ),
  ];
}