internal void UpdateTrackablePoses(Transform arCameraTransform, VuforiaManagerImpl.TrackableResultData[] trackableResultDataArray, VuforiaManagerImpl.VuMarkTargetResultData[] vuMarkResultDataArray, VuforiaManager.TrackableIdPair originTrackableID, int frameIndex) { Dictionary <int, TrackableBehaviour.Status> dictionary = new Dictionary <int, TrackableBehaviour.Status>(); for (int i = 0; i < trackableResultDataArray.Length; i++) { VuforiaManagerImpl.TrackableResultData trackableResultData = trackableResultDataArray[i]; dictionary.Add(trackableResultData.id, trackableResultData.status); TrackableBehaviour trackableBehaviour; if (this.mTrackableBehaviours.TryGetValue(trackableResultData.id, out trackableBehaviour) && trackableResultData.id != originTrackableID.TrackableId && VuforiaManagerImpl.IsDetectedOrTracked(trackableResultData.status) && trackableBehaviour.enabled) { StateManagerImpl.PositionTrackable(trackableBehaviour, arCameraTransform, trackableResultData.pose, trackableResultData.timeStamp); } } Dictionary <int, TrackableBehaviour.Status> dictionary2 = new Dictionary <int, TrackableBehaviour.Status>(); for (int i = 0; i < vuMarkResultDataArray.Length; i++) { VuforiaManagerImpl.VuMarkTargetResultData vuMarkTargetResultData = vuMarkResultDataArray[i]; dictionary2.Add(vuMarkTargetResultData.resultID, vuMarkTargetResultData.status); } this.mVuMarkManager.UpdateVuMarkPoses(arCameraTransform, vuMarkResultDataArray, originTrackableID.ResultId); this.mActiveTrackableBehaviours.Clear(); TrackableBehaviour[] array = this.GetTrackableBehaviours().ToArray <TrackableBehaviour>(); for (int i = 0; i < array.Length; i++) { TrackableBehaviour trackableBehaviour2 = array[i]; if (trackableBehaviour2.enabled) { TrackableBehaviour.Status vuforiaStatus; if (dictionary.TryGetValue(trackableBehaviour2.Trackable.ID, out vuforiaStatus) || (trackableBehaviour2 is VuMarkAbstractBehaviour && dictionary2.TryGetValue(((VuMarkAbstractBehaviour)trackableBehaviour2).VuMarkResultId, out vuforiaStatus))) { this.mExtendedTrackingManager.ApplyTrackingState(trackableBehaviour2, vuforiaStatus, arCameraTransform); trackableBehaviour2.OnFrameIndexUpdate(frameIndex); } else { this.mExtendedTrackingManager.ApplyTrackingState(trackableBehaviour2, TrackableBehaviour.Status.NOT_FOUND, arCameraTransform); } if (VuforiaManagerImpl.IsDetectedOrTracked(trackableBehaviour2.CurrentStatus)) { this.mActiveTrackableBehaviours.Add(trackableBehaviour2); } } } }