uArTrackingHint function
Human wording for the current tracking state, or null when all is well.
Implementation
String? uArTrackingHint(UArValue value, UArLabels labels, {bool needsSurface = true}) {
if (value.state != UArSessionState.running || value.config.isViewer) return null;
switch (value.trackingReason) {
case UArTrackingReason.excessiveMotion:
return labels.tooFast ?? U.s.slowDownYouAreMovingTooFast;
case UArTrackingReason.insufficientFeatures:
return labels.moreDetail ?? U.s.pointAtASurfaceWithMoreDetail;
case UArTrackingReason.insufficientLight:
return labels.tooDark ?? U.s.itsTooDarkTurnOnMoreLights;
case UArTrackingReason.relocalizing:
return labels.relocalizing ?? U.s.holdSteadyWhileTheSessionIsRestored;
default:
break;
}
if (value.tracking != UArTrackingState.normal) return labels.scanning ?? U.s.moveYourPhoneSlowlyToScanTheArea;
if (needsSurface && !value.hasPlanes && value.frame.centerHit == null) return labels.findSurface ?? U.s.lookAroundToFindASurface;
return null;
}