private void ResetExtendedTrackingForTrackable(int trackableID) { IHoloLensApiAbstraction holoLensApiAbstraction = VuforiaUnity.GetHoloLensApiAbstraction(); VuforiaManager.TrackableIdPair[] array = this.mTrackablesCurrentlyExtendedTracked.Keys.ToArray <VuforiaManager.TrackableIdPair>(); for (int i = 0; i < array.Length; i++) { VuforiaManager.TrackableIdPair trackableIdPair = array[i]; if (trackableIdPair.TrackableId == trackableID) { this.mTrackablesCurrentlyExtendedTracked.Remove(trackableIdPair); holoLensApiAbstraction.DeleteWorldAnchor(trackableIdPair); if (this.mExtendedTrackablesState.ContainsKey(trackableIdPair)) { this.mExtendedTrackablesState.Remove(trackableIdPair); } } } array = this.mTrackingList.Keys.ToArray <VuforiaManager.TrackableIdPair>(); for (int i = 0; i < array.Length; i++) { VuforiaManager.TrackableIdPair trackableIdPair2 = array[i]; if (trackableIdPair2.TrackableId == trackableID) { this.mTrackingList.Remove(trackableIdPair2); } } }
public bool ResetExtendedTracking(bool trackerActive) { this.mTrackingList.Clear(); IHoloLensApiAbstraction holoLensApiAbstraction = VuforiaUnity.GetHoloLensApiAbstraction(); foreach (VuforiaManager.TrackableIdPair current in this.mTrackablesCurrentlyExtendedTracked.Keys) { holoLensApiAbstraction.DeleteWorldAnchor(current); } this.mTrackablesCurrentlyExtendedTracked.Clear(); this.mExtendedTrackablesState.Clear(); return(true); }
internal void SetFocusPoint() { if (this.mSetFocusPlaneAutomatically) { StateManager arg_23_0 = TrackerManager.Instance.GetStateManager(); Vector3 point = Vector3.zero; Vector3 vector = Vector3.zero; bool flag = false; using (IEnumerator <TrackableBehaviour> enumerator = arg_23_0.GetActiveTrackableBehaviours().GetEnumerator()) { while (enumerator.MoveNext()) { Vector3 position = enumerator.Current.transform.position; Vector3 vector2 = this.mCentralAnchorPoint.transform.InverseTransformPoint(position); if (vector2.z > 0.5f) { if (!flag) { point = position; vector = vector2; flag = true; } else { Vector2 vector3 = new Vector2(vector.x, vector.y); Vector2 vector4 = new Vector2(vector2.x, vector2.y); if (vector3.magnitude > vector4.magnitude) { point = position; vector = vector2; } } } } } if (flag) { Vector3 normal = -this.mCentralAnchorPoint.transform.forward; VuforiaUnity.GetHoloLensApiAbstraction().SetFocusPoint(point, normal); } } }
private void CheckHandoverToHoloLens(HoloLensExtendedTrackingManager.PoseAgeEntry poseEntry, TrackableBehaviour trackableBehaviour, VuforiaManager.TrackableIdPair trackableResultID, float maxPoseDistance, bool isPoseUpdate, out bool resetPoseInfo) { IHoloLensApiAbstraction holoLensApiAbstraction = VuforiaUnity.GetHoloLensApiAbstraction(); resetPoseInfo = true; float arg_4B_0 = (poseEntry.Pose.Position - trackableBehaviour.transform.position).magnitude; float num = Quaternion.Angle(poseEntry.Pose.Rotation, trackableBehaviour.transform.rotation); if (arg_4B_0 <= maxPoseDistance && num <= this.mMaxPoseAngleDiff) { poseEntry.Age++; this.mTrackingList[trackableResultID] = poseEntry; resetPoseInfo = false; if (poseEntry.Age > this.mNumFramesStablePose) { HoloLensExtendedTrackingManager.PoseInfo poseInfo = new HoloLensExtendedTrackingManager.PoseInfo { Position = trackableBehaviour.transform.position, Rotation = trackableBehaviour.transform.rotation, NumFramesPoseWasOff = 0 }; this.mTrackablesCurrentlyExtendedTracked[trackableResultID] = poseInfo; if (isPoseUpdate) { holoLensApiAbstraction.DeleteWorldAnchor(trackableResultID); trackableBehaviour.transform.position = poseInfo.Position; trackableBehaviour.transform.rotation = poseInfo.Rotation; } if (this.mSetWorldAnchors) { holoLensApiAbstraction.SetWorldAnchor(trackableBehaviour, trackableResultID); } this.mExtendedTrackablesState[trackableResultID] = TrackableBehaviour.Status.EXTENDED_TRACKED; } } }
internal static void CleanTrackableFromUnwantedComponents(TrackableBehaviour trackableBehaviour) { VuforiaUnity.GetHoloLensApiAbstraction().DeleteWorldAnchor(trackableBehaviour); }
public bool StartExtendedTracking(IntPtr datasetPtr, int trackableID) { VuforiaUnity.GetHoloLensApiAbstraction().SetSpatialAnchorTrackingCallback(new Action <VuforiaManager.TrackableIdPair, bool>(this.OnSpatialAnchorTrackingCallback)); this.mTrackablesExtendedTrackingEnabled.Add(trackableID); return(true); }