public static void RequestTrackingTarget(TargetTrackRequest _request) { ThreadStart threadStart = delegate { GetTracking().FindTarget(_request, instance.FinishedProcessing); }; threadStart.Invoke(); }
public void FindTarget(TargetTrackRequest _request, Action <TargetTrackResult> callback) { for (int i = 0; i < activeObjects.Count; i++) { TrackableObject possibleTarget = activeObjects[i]; if (possibleTarget.objectType == _request.requestedType) { if (possibleTarget != _request.requestingObject) { float targetDistance = Vector3.Distance(possibleTarget.objectPosition, _request.requestingObject.objectPosition); if (targetDistance <= _request.requestRadius) { callback(new TargetTrackResult(possibleTarget, true, _request.callback)); } else { callback(new TargetTrackResult(null, false, _request.callback)); } } } } }