private void SafeAdd <T>(NRTrackable trackable, List <T> trackables) where T : NRTrackable { if (trackable is T) { trackables.Add(trackable as T); } }
/** * @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); } } }
/// <summary> /// Create a anchor for the trackable object /// </summary> /// <param name="trackable">Instantiate a NRAnchor object which Update trackable pose every frame</param> /// <returns>NRAnchor</returns> public static NRAnchor Factory(NRTrackable trackable) { if (trackable == null) { return(null); } NRAnchor result; if (m_AnchorDict.TryGetValue(trackable.GetDataBaseIndex(), out result)) { return(result); } NRAnchor anchor = (new GameObject()).AddComponent <NRAnchor>(); anchor.gameObject.name = "Anchor"; anchor.Trackable = trackable; m_AnchorDict.Add(trackable.GetDataBaseIndex(), anchor); return(anchor); }
/** * @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); } } }
public void Initialize(NRTrackable trackable) { Trackable = trackable; }