fire method
Fires a shot and returns the full trajectory as a HitResult.
trajectoryRange and trajectoryStep accept a Distance object or
a raw number in the preferred distance unit.
Implementation
HitResult fire({
required Shot shot,
required Distance trajectoryRange,
Distance? trajectoryStep,
double timeStep = 0.0,
int filterFlags = 8, // BCLIBCFFI_TrajFlag.BCLIBCFFI_TRAJ_FLAG_RANGE
bool raiseRangeError = true,
}) {
final rangeFt = _toFeet(trajectoryRange);
final stepFt = trajectoryStep != null ? _toFeet(trajectoryStep) : rangeFt;
final request = BcTrajectoryRequest(
rangeLimitFt: rangeFt,
rangeStepFt: stepFt,
timeStep: timeStep,
filterFlags: filterFlags,
);
late BcHitResult bcResult;
try {
bcResult = _engine.integrateShot(_toBcShot(shot), request);
} on BcException catch (e) {
if (raiseRangeError) rethrow;
return HitResult(shot, [], filterFlags: filterFlags, error: e);
}
final traj = bcResult.trajectory.map(_toTrajectoryData).toList();
return HitResult(shot, traj, filterFlags: filterFlags);
}