예제 #1
0
        public override void ReassociateTrackables()
        {
            this.RemoveDestroyedTrackables();
            VuMarkManagerImpl expr_11 = (VuMarkManagerImpl)this.GetVuMarkManager();

            expr_11.RemoveDestroyedTrackables();
            expr_11.DestroyBehaviourCopies();
            ObjectTracker tracker = TrackerManager.Instance.GetTracker <ObjectTracker>();

            if (tracker != null)
            {
                IEnumerable <DataSet> dataSets = tracker.GetDataSets();
                List <DataSet>        list     = tracker.GetActiveDataSets().ToList <DataSet>();
                foreach (DataSet current in dataSets)
                {
                    if (list.Contains(current))
                    {
                        tracker.DeactivateDataSet(current);
                    }
                    this.AssociateTrackableBehavioursForDataSet(current);
                    if (list.Contains(current))
                    {
                        tracker.ActivateDataSet(current);
                    }
                }
            }
            WordManagerImpl expr_9B = (WordManagerImpl)this.GetWordManager();

            expr_9B.RemoveDestroyedTrackables();
            expr_9B.InitializeWordBehaviourTemplates();
        }
        /// <summary>
        /// Takes a new trackable source and adds it to the dataset
        /// This gets called automatically as soon as you 'BuildNewTarget with UserDefinedTargetBuildingBehaviour
        /// </summary>
        public void OnNewTrackableSource(TrackableSource trackableSource)
        {
            mTargetCounter++;

            // Deactivates the dataset first
            mObjectTracker.DeactivateDataSet(mBuiltDataSet);

            // Destroy the oldest target if the dataset is full or the dataset
            // already contains five user-defined targets.
            if (mBuiltDataSet.HasReachedTrackableLimit() || mBuiltDataSet.GetTrackables().Count() >= MAX_TARGETS)
            {
                IEnumerable <Trackable> trackables = mBuiltDataSet.GetTrackables();
                Trackable oldest = null;
                foreach (Trackable trackable in trackables)
                {
                    if (oldest == null || trackable.ID < oldest.ID)
                    {
                        oldest = trackable;
                    }
                }

                if (oldest != null)
                {
                    Debug.Log("Destroying oldest trackable in UDT dataset: " + oldest.Name);
                    mBuiltDataSet.Destroy(oldest, true);
                }
            }

            // Get predefined trackable and instantiate it
            ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate);

            imageTargetCopy.gameObject.name = "UserDefinedTarget-" + mTargetCounter;

            // Add the duplicated trackable to the data set and activate it
            mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);

            // Activate the dataset again
            mObjectTracker.ActivateDataSet(mBuiltDataSet);

            // Extended Tracking with user defined targets only works with the most recently defined target.
            // If tracking is enabled on previous target, it will not work on newly defined target.
            // Don't need to call this if you don't care about extended tracking.
            StopExtendedTracking();
            mObjectTracker.Stop();
            mObjectTracker.ResetExtendedTracking();
            mObjectTracker.Start();

            // Make sure TargetBuildingBehaviour keeps scanning...
            mTargetBuildingBehaviour.StartScanning();
        }
        public bool DestroyVirtualButton(VirtualButton vb)
        {
            bool          result  = false;
            ObjectTracker tracker = TrackerManager.Instance.GetTracker <ObjectTracker>();

            if (tracker != null)
            {
                bool flag = false;
                foreach (DataSet current in tracker.GetActiveDataSets())
                {
                    if (this.mDataSet == current)
                    {
                        flag = true;
                    }
                }
                if (flag)
                {
                    tracker.DeactivateDataSet(this.mDataSet);
                }
                if (this.UnregisterVirtualButtonInNative(vb))
                {
                    Debug.Log("Unregistering virtual button successfully");
                    result = true;
                    this.mVirtualButtons.Remove(vb.ID);
                }
                else
                {
                    Debug.LogError("Failed to unregister virtual button.");
                }
                if (flag)
                {
                    tracker.ActivateDataSet(this.mDataSet);
                }
            }
            return(result);
        }