示例#1
0
 /// <summary>
 /// Get the list of trackables with specified filter.
 /// </summary>
 /// <param name="trackables">A list where the returned trackable stored.The previous values will be cleared.</param>
 /// <param name="filter">Query filter.</param>
 public static void GetTrackables <T>(List <T> trackables, NRTrackableQueryFilter filter) where T : NRTrackable
 {
     if (SessionStatus != SessionState.Running)
     {
         return;
     }
     trackables.Clear();
     NRSessionManager.Instance.NativeAPI.TrackableFactory.GetTrackables <T>(trackables, filter);
 }
示例#2
0
        /// <summary>
        /// Get the list of trackables with specified filter.
        /// </summary>
        /// <param name="trackables">A list where the returned trackable stored.The previous values will be cleared.</param>
        /// <param name="filter">Query filter.</param>
        public static void GetTrackables <T>(List <T> trackables, NRTrackableQueryFilter filter) where T : NRTrackable
        {
            trackables.Clear();
#if !UNITY_EDITOR
            if (SessionStatus != SessionState.Tracking)
            {
                return;
            }
#endif
            NRSessionManager.Instance.NativeAPI.TrackableFactory.GetTrackables <T>(trackables, filter);
        }
示例#3
0
        /**
         * @brief Get the list of trackables with specified filter.
         * @param[out] trackableList A list where the returned trackable stored. The previous values will be cleared.
         * @param filter Query filter.
         */
        public void GetTrackables <T>(List <T> trackables, NRTrackableQueryFilter filter) where T : NRTrackable
        {
            if (m_LastUpdateFrame < Time.frameCount)
            {
                TrackableType t_type = GetTrackableType <T>();
                // Update trackable by type
                UpdateTrackables(t_type);

                // Find the new trackable in this frame
                m_NewTrackables.Clear();
                for (int i = 0; i < m_AllTrackables.Count; i++)
                {
                    NRTrackable trackable = m_AllTrackables[i];
                    if (!m_OldTrackables.Contains(trackable))
                    {
                        m_NewTrackables.Add(trackable);
                        m_OldTrackables.Add(trackable);
                    }
                }

                m_LastUpdateFrame = Time.frameCount;
            }

            trackables.Clear();

            if (filter == NRTrackableQueryFilter.All)
            {
                for (int i = 0; i < m_AllTrackables.Count; i++)
                {
                    SafeAdd <T>(m_AllTrackables[i], trackables);
                }
            }
            else if (filter == NRTrackableQueryFilter.New)
            {
                for (int i = 0; i < m_NewTrackables.Count; i++)
                {
                    SafeAdd <T>(m_NewTrackables[i], trackables);
                }
            }
        }
        /**
         * @brief Get the list of trackables with specified filter.
         * @param[out] trackableList A list where the returned trackable stored. The previous values will be cleared.
         * @param filter Query filter.
         */
        public void GetTrackables <T>(List <T> trackables, NRTrackableQueryFilter filter) where T : NRTrackable
        {
            TrackableType t_type = GetTrackableType <T>();

#if !UNITY_EDITOR_OSX
            // Update trackable by type
            UpdateTrackables(t_type);
#endif

            // Find the new trackable in this frame
            m_NewTrackables.Clear();
            for (int i = 0; i < m_AllTrackables.Count; i++)
            {
                NRTrackable trackable = m_AllTrackables[i];
                if (!m_OldTrackables.Contains(trackable))
                {
                    m_NewTrackables.Add(trackable);
                    m_OldTrackables.Add(trackable);
                }
            }

            trackables.Clear();

            if (filter == NRTrackableQueryFilter.All)
            {
                for (int i = 0; i < m_AllTrackables.Count; i++)
                {
                    SafeAdd <T>(m_AllTrackables[i], trackables);
                }
            }
            else if (filter == NRTrackableQueryFilter.New)
            {
                for (int i = 0; i < m_NewTrackables.Count; i++)
                {
                    SafeAdd <T>(m_NewTrackables[i], trackables);
                }
            }
        }