public override void ReassociateTrackables() { this.RemoveDestroyedTrackables(); VuMarkManagerImpl expr_11 = (VuMarkManagerImpl)this.GetVuMarkManager(); expr_11.RemoveDestroyedTrackables(); expr_11.DestroyBehaviourCopies(); ObjectTracker tracker = TrackerManager.Instance.GetTracker <ObjectTracker>(); if (tracker != null) { IEnumerable <DataSet> dataSets = tracker.GetDataSets(); List <DataSet> list = tracker.GetActiveDataSets().ToList <DataSet>(); foreach (DataSet current in dataSets) { if (list.Contains(current)) { tracker.DeactivateDataSet(current); } this.AssociateTrackableBehavioursForDataSet(current); if (list.Contains(current)) { tracker.ActivateDataSet(current); } } } WordManagerImpl expr_9B = (WordManagerImpl)this.GetWordManager(); expr_9B.RemoveDestroyedTrackables(); expr_9B.InitializeWordBehaviourTemplates(); }
/// <summary> /// Takes a new trackable source and adds it to the dataset /// This gets called automatically as soon as you 'BuildNewTarget with UserDefinedTargetBuildingBehaviour /// </summary> public void OnNewTrackableSource(TrackableSource trackableSource) { mTargetCounter++; // Deactivates the dataset first mObjectTracker.DeactivateDataSet(mBuiltDataSet); // Destroy the oldest target if the dataset is full or the dataset // already contains five user-defined targets. if (mBuiltDataSet.HasReachedTrackableLimit() || mBuiltDataSet.GetTrackables().Count() >= MAX_TARGETS) { IEnumerable <Trackable> trackables = mBuiltDataSet.GetTrackables(); Trackable oldest = null; foreach (Trackable trackable in trackables) { if (oldest == null || trackable.ID < oldest.ID) { oldest = trackable; } } if (oldest != null) { Debug.Log("Destroying oldest trackable in UDT dataset: " + oldest.Name); mBuiltDataSet.Destroy(oldest, true); } } // Get predefined trackable and instantiate it ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate); imageTargetCopy.gameObject.name = "UserDefinedTarget-" + mTargetCounter; // Add the duplicated trackable to the data set and activate it mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject); // Activate the dataset again mObjectTracker.ActivateDataSet(mBuiltDataSet); // Extended Tracking with user defined targets only works with the most recently defined target. // If tracking is enabled on previous target, it will not work on newly defined target. // Don't need to call this if you don't care about extended tracking. StopExtendedTracking(); mObjectTracker.Stop(); mObjectTracker.ResetExtendedTracking(); mObjectTracker.Start(); // Make sure TargetBuildingBehaviour keeps scanning... mTargetBuildingBehaviour.StartScanning(); }
public bool DestroyVirtualButton(VirtualButton vb) { bool result = false; ObjectTracker tracker = TrackerManager.Instance.GetTracker <ObjectTracker>(); if (tracker != null) { bool flag = false; foreach (DataSet current in tracker.GetActiveDataSets()) { if (this.mDataSet == current) { flag = true; } } if (flag) { tracker.DeactivateDataSet(this.mDataSet); } if (this.UnregisterVirtualButtonInNative(vb)) { Debug.Log("Unregistering virtual button successfully"); result = true; this.mVirtualButtons.Remove(vb.ID); } else { Debug.LogError("Failed to unregister virtual button."); } if (flag) { tracker.ActivateDataSet(this.mDataSet); } } return(result); }