private void HandleImageTrackerBehaviorOnTargetLost(MLMarkerTrackerArgs args) { if (TryGetARAnchor(args, out IARAnchor anchor)) { Activate(anchor.ID, false); } }
private void AddToDatabase(MLMarkerTrackerArgs args, IARAnchor anchor) { string markerID = GetMarkerID(args); if (!_database.ContainsKey(markerID)) { _database.Add(markerID, anchor.ID); } }
private void HandleImageTrackerBehaviorOnTargetFound(MLMarkerTrackerArgs args) { if (TryGetARAnchor(args, out IARAnchor anchor)) { Activate(anchor.ID, true); return; } DetectedNewAnchor(args); }
private ARMarkerEventData CreateEventData(MLMarkerTrackerArgs args) { string id = GetMarkerID(args); return(new ARMarkerEventData { ID = id, Name = $"NRTrackableImage-[{id}]", }); }
private void DetectedNewAnchor(MLMarkerTrackerArgs args) { string markerID = GetMarkerID(args); Debug.Log($"Detected new marker [{markerID}]"); IARAnchor anchor = GetOrCreateARAnchor(args); UpdateAnchorLocation(anchor, args.Result.Position, args.Result.Rotation); OnDetectAnchorFirst?.Invoke(anchor, CreateEventData(args)); }
private IARAnchor GetOrCreateARAnchor(MLMarkerTrackerArgs args) { if (TryGetARAnchor(args, out IARAnchor anchor)) { return(anchor); } anchor = _anchorService.Create(); AddToDatabase(args, anchor); Activate(anchor.ID, true); return(anchor); }
private bool TryGetARAnchor(MLMarkerTrackerArgs args, out IARAnchor anchor) { AnchorID anchorID; string markerID = GetMarkerID(args); if (_database.TryGetValue(markerID, out anchorID)) { anchor = _anchorService.Find(anchorID); return(true); } anchor = null; return(false); }
private void DetectedUpdateAnchor(MLMarkerTrackerArgs args) { if (!TryGetARAnchor(args, out IARAnchor anchor)) { return; } if (!IsActive(anchor.ID)) { return; } UpdateAnchorLocation(anchor, args.Result.Position, args.Result.Rotation); OnUpdateAnchorPosition?.Invoke(anchor, CreateEventData(args)); }
private void HandleImageTrackerBehaviorOnTargetUpdated(MLMarkerTrackerArgs args) { DetectedUpdateAnchor(args); }
private string GetMarkerID(MLMarkerTrackerArgs args) { return(args.Reference.ID); }