Exemplo n.º 1
0
 private void _HandleTrackingStateChange(AnchorManagerTrackingState oldState,
                                         AnchorManagerTrackingState newState)
 {
     if (oldState == newState)
     {
         // There is no state change to process.
         return;
     }
     else if (newState == AnchorManagerTrackingState.Tracking)
     {
         // Tracking has been (re-)established, any non-localized anchors that were not lost become localized and
         // all localized anchors become tracked.
         m_anchors.AddRange(m_nonLocalizedAnchors);
         m_nonLocalizedAnchors.Clear();
         _UpdateAnchorTrackingState(AnchorTrackingState.Tracking, m_anchors);
     }
     else if (newState == AnchorManagerTrackingState.TrackingNotLocalized)
     {
         // The device is tracking but not localized; meaning the device is on a separate map from localized
         // anchors. Thus, localized anchors are lost.
         _UpdateAnchorTrackingState(AnchorTrackingState.LostTracking, m_anchors);
     }
     else if (newState == AnchorManagerTrackingState.TrackingLost)
     {
         // Tracking is now lost and localized anchors should move to not tracking.  Any non-localized anchors
         // are now lost forever (stopped).
         _UpdateAnchorTrackingState(AnchorTrackingState.LostTracking, m_anchors);
         _UpdateAnchorTrackingState(AnchorTrackingState.StoppedTracking, m_nonLocalizedAnchors);
         m_nonLocalizedAnchors.Clear();
     }
 }
Exemplo n.º 2
0
        private void _SetNewTrackingState(FrameTrackingState frameTrackingState, bool localized)
        {
            AnchorManagerTrackingState oldTrackingState = m_trackingState;

            if (frameTrackingState == FrameTrackingState.LostTracking)
            {
                m_trackingState = AnchorManagerTrackingState.TrackingLost;
            }
            else if (frameTrackingState == FrameTrackingState.TrackingNotInitialized)
            {
                m_trackingState = AnchorManagerTrackingState.TrackingStopped;
            }
            else if (!localized)
            {
                m_trackingState = AnchorManagerTrackingState.TrackingNotLocalized;
            }
            else
            {
                m_trackingState = AnchorManagerTrackingState.Tracking;
            }

            _HandleTrackingStateChange(oldTrackingState, m_trackingState);
        }