예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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;
                }
            }
        }
예제 #4
0
 public static void SetHoloLensApiAbstraction(IHoloLensApiAbstraction holoLensApiAbstraction)
 {
     VuforiaUnity.mHoloLensApiAbstraction = holoLensApiAbstraction;
 }