コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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();
            }
        }