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(); }
private void UpdateExtendedTrackedVuMarks() { StateManagerImpl expr_0F = (StateManagerImpl)TrackerManager.Instance.GetStateManager(); VuforiaManager.TrackableIdPair[] array = expr_0F.GetExtendedTrackingManager().GetExtendedTrackedBehaviours().ToArray <VuforiaManager.TrackableIdPair>(); VuMarkManagerImpl vuMarkManagerImpl = (VuMarkManagerImpl)expr_0F.GetVuMarkManager(); List <int> list = new List <int>(); for (int i = 0; i < this.mVuMarkResultDataArray.Length; i++) { list.Add(this.mVuMarkResultDataArray[i].resultID); } Dictionary <int, List <int> > dictionary = new Dictionary <int, List <int> >(); VuforiaManager.TrackableIdPair[] array2 = array; for (int j = 0; j < array2.Length; j++) { int resultId = array2[j].ResultId; VuMarkAbstractBehaviour behaviourWithResultID = vuMarkManagerImpl.GetBehaviourWithResultID(resultId); if (behaviourWithResultID != null) { int iD = behaviourWithResultID.VuMarkTarget.ID; if (!list.Contains(resultId)) { if (!dictionary.ContainsKey(iD)) { dictionary[iD] = new List <int>(); } dictionary[iD].Add(resultId); } else { list.Remove(resultId); } } } for (int k = 0; k < this.mVuMarkResultDataArray.Length; k++) { int targetID = this.mVuMarkResultDataArray[k].targetID; int resultID = this.mVuMarkResultDataArray[k].resultID; if (list.Contains(resultID) && dictionary.ContainsKey(targetID)) { List <int> list2 = dictionary[targetID]; if (list2.Count > 0) { int num = list2[list2.Count - 1]; list2.RemoveAt(list2.Count - 1); Debug.Log(string.Concat(new object[] { "CHANGE RESULT ID ", this.mVuMarkResultDataArray[k].resultID, " => ", num })); this.mVuMarkResultDataArray[k].resultID = num; } } } List <VuforiaManagerImpl.VuMarkTargetResultData> list3 = this.mVuMarkResultDataArray.ToList <VuforiaManagerImpl.VuMarkTargetResultData>(); array2 = array; for (int j = 0; j < array2.Length; j++) { VuforiaManager.TrackableIdPair trackableIdPair = array2[j]; if (trackableIdPair.ResultId >= 0) { bool flag = false; VuforiaManagerImpl.VuMarkTargetResultData[] array3 = this.mVuMarkResultDataArray; for (int l = 0; l < array3.Length; l++) { if (array3[l].resultID == trackableIdPair.ResultId) { flag = true; break; } } if (!flag) { VuMarkAbstractBehaviour behaviourWithResultID2 = vuMarkManagerImpl.GetBehaviourWithResultID(trackableIdPair.ResultId); list3.Add(new VuforiaManagerImpl.VuMarkTargetResultData { pose = new VuforiaManagerImpl.PoseData { coordinateSystem = TrackableBehaviour.CoordinateSystem.WORLD, position = behaviourWithResultID2.transform.position, orientation = behaviourWithResultID2.transform.rotation * Quaternion.AngleAxis(90f, Vector3.right) }, resultID = trackableIdPair.ResultId, targetID = behaviourWithResultID2.VuMarkTarget.ID, status = TrackableBehaviour.Status.EXTENDED_TRACKED }); } } } this.mVuMarkResultDataArray = list3.ToArray(); HashSet <int> hashSet = new HashSet <int>(); array2 = array; for (int j = 0; j < array2.Length; j++) { VuforiaManager.TrackableIdPair trackableIdPair2 = array2[j]; if (trackableIdPair2.ResultId >= 0) { VuMarkAbstractBehaviour behaviourWithResultID3 = vuMarkManagerImpl.GetBehaviourWithResultID(trackableIdPair2.ResultId); if (behaviourWithResultID3 != null && behaviourWithResultID3.VuMarkTarget != null) { hashSet.Add(behaviourWithResultID3.VuMarkTarget.ID); } } } List <VuforiaManagerImpl.VuMarkTargetData> list4 = new List <VuforiaManagerImpl.VuMarkTargetData>(); for (int m = 0; m < this.mVuMarkDataArray.Length; m++) { int id = this.mVuMarkDataArray[m].id; if (!hashSet.Contains(id)) { list4.Add(this.mVuMarkDataArray[m]); } } this.mVuMarkDataArray = list4.ToArray(); }