raycastCallback method

  1. @override
double raycastCallback(
  1. RayCastInput input,
  2. int nodeId
)
override

retruns the fraction to the node

Implementation

@override
double raycastCallback(RayCastInput input, int nodeId) {
  final userData = broadPhase.getUserData(nodeId);
  if (userData == null) {
    return 0;
  }
  final proxy = userData as FixtureProxy;
  final fixture = proxy.fixture;
  final index = proxy.childIndex;
  final hit = fixture.raycast(_output, input, index);

  if (hit) {
    final fraction = _output.fraction;
    // Vec2 point = (1.0 - fraction) * input.p1 + fraction * input.p2;
    _temp
      ..setFrom(input.p2)
      ..scale(fraction);
    _point
      ..setFrom(input.p1)
      ..scale(1 - fraction)
      ..add(_temp);
    return callback?.reportFixture(
          fixture,
          _point,
          _output.normal,
          fraction,
        ) ??
        0;
  }

  return input.maxFraction;
}