raycastAll method
List<SimRaycastHit>
raycastAll(
- Ray ray, {
- double maxDistance = double.infinity,
- int layerMask = 0xFFFFFFFF,
- bool includeFixed = true,
- bool includeKinematic = true,
- bool includeDynamic = true,
- bool includeTriggers = false,
override
Implementation
@override
List<SimRaycastHit> raycastAll(
Ray ray, {
double maxDistance = double.infinity,
int layerMask = 0xFFFFFFFF,
bool includeFixed = true,
bool includeKinematic = true,
bool includeDynamic = true,
bool includeTriggers = false,
}) {
final hits = <SimRaycastHit>[];
_colliders.forEach((handle, collider) {
if (!_passesFilters(
collider,
layerMask: layerMask,
includeFixed: includeFixed,
includeKinematic: includeKinematic,
includeTriggers: includeTriggers,
)) {
return;
}
final hit = rayHitsShape(
ray,
collider.shape,
_colliderWorldPose(collider),
maxDistance,
);
if (hit == null) return;
hits.add(
SimRaycastHit(
colliderHandle: handle,
worldPoint: hit.worldPoint,
worldNormal: hit.worldNormal,
distance: hit.distance,
),
);
});
hits.sort((a, b) => a.distance.compareTo(b.distance));
return hits;
}