public override void Deactivate() { base.Deactivate(); m_logger.Debug("Deactivate: IsInitialized = {0}", IsInitialized); if (IsInitialized) { m_doDeactivate = true; var handlers = m_trackingVuMarkers.Values.ToArray(); foreach (var handler in handlers) { StopTracking(handler); m_trackingHold.Add(handler); } } if (Deactivated != null) { Deactivated.Invoke(); } TrackingConditionMonitor.TrackingMarkersUpdated(); }
public void Deactivate() { IsActive = false; m_logger.Debug("Deactivate: IsInitialized = {0}", IsInitialized); if (IsInitialized) { var handlers = m_trackingMarkerObjects.Values.ToArray(); foreach (var handler in handlers) { StopTracking(handler); m_trackingHold.Add(handler); } } if (Adapter) { Adapter.Deactivate(); } if (Deactivated != null) { Deactivated.Invoke(); } TrackingConditionMonitor.TrackingMarkersUpdated(); }
internal void StartTracking(ARMarkerObject markerObj) { var markerIdent = markerObj.MarkerIdentifier; m_logger.Debug("start tracking {0}", markerIdent); m_trackingMarkerObjects.Add(markerIdent, markerObj); // Find all media items for the given marker var media = m_activeResourceMedia[markerIdent]; m_logger.Debug("found {0} media items for {1}", media == null ? 0 : media.Count(), markerIdent); if (media != null) { foreach (var c in media) { // Attach each media item to the marker AttachMediaObject(c, markerObj); } } var assets = m_activeResourceAssets[markerIdent]; if (assets != null) { foreach (var a in assets) { AttachAssetObject(a, markerObj); } } TrackingConditionMonitor.TrackingMarkersUpdated(); }
internal void StopTracking(ARMarkerObject markerObj) { if (m_trackingHold.Contains(markerObj)) { m_trackingHold.Remove(markerObj); return; } // Pause all audio/video players var audioPlayers = markerObj.GameObject.GetComponentsInChildren <AudioSubpanel>(); var videoPlayers = markerObj.GameObject.GetComponentsInChildren <VideoSubpanel>(); foreach (var ap in audioPlayers) { ap.Pause(); } foreach (var vp in videoPlayers) { vp.Pause(); } List <GameObject> objs = new List <GameObject>(); for (int i = 0; i < markerObj.GameObject.transform.childCount; i++) { var t = markerObj.GameObject.transform.GetChild(i); objs.Add(t.gameObject); } foreach (var obj in objs) { obj.transform.SetParent(null); obj.SetActive(false); } var markerIdent = markerObj.MarkerIdentifier; foreach (var activeObj in GetActiveObjects(markerIdent)) { VisualMarkerWorldObject worldObj = null; if (activeObj.TrackingMarkerObjects.TryGetValue(markerObj.GameObject, out worldObj)) { activeObj.TrackingMarkerObjects.Remove(markerObj.GameObject); activeObj.HoldingMarkerObjects.Add(markerIdent, worldObj); } } if (markerIdent != null) { m_logger.Debug("stop tracking {0}", markerIdent); m_trackingMarkerObjects.RemoveWhere(markerIdent, m => m.GameObject == markerObj.GameObject); } TrackingConditionMonitor.TrackingMarkersUpdated(); }
public override void Activate() { m_logger.Debug("Activate IsInitialized={0}", IsInitialized); base.Activate(); if (InitializingPane) { InitializingPane.SetActive(true); } Action onReady = () => { m_logger.Debug("Vuforia initialized"); LoadDataSets(); foreach (var handler in m_trackingHold) { handler.ResetIdentifier(); StartTracking(handler); } m_trackingHold.Clear(); if (InitializingPane) { InitializingPane.SetActive(false); } TrackingConditionMonitor.TrackingMarkersUpdated(); if (Activated != null) { Activated.Invoke(); } }; Action start = () => { StartCoroutine(StartCamera(onReady)); }; if (!IsInitialized) { // If camera is always on, skip the "start" call and // jump right to onReady. (AlwaysOn will handle the // initialization). Action onInit = (CameraBehavior == CameraRunningBehavior.AlwaysOn) ? onReady : start; StartCoroutine(InitVuforia(onInit)); } else if (CameraBehavior == CameraRunningBehavior.OnlyWhileActive) { start(); } else { SetCameraActive(true); onReady(); } }