overlap method
List<QueryHit3D>
overlap(
- Shape3D shape,
- Vector3 position,
- Quaternion rotation, {
- 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(),
),
];
}