/// <summary>
    /// Cycles through guide views for Standard Model Targets with multiple views.
    /// </summary>
    public void CycleGuideView()
    {
        VLog.Log("cyan", "CycleGuideView() called.");

        if (this.modelStandard != null)
        {
            ModelTarget modelTarget = this.modelStandard.ModelTarget;

            int activeView = modelTarget.GetActiveGuideViewIndex();
            int totalViews = modelTarget.GetNumGuideViews();

            if (totalViews > 1 && activeView > -1)
            {
                int guideViewIndexToActivate = (activeView + 1) % totalViews;

                VLog.Log("yellow",
                         modelTarget.Name + ": Activating Guide View Index " +
                         guideViewIndexToActivate.ToString() + " of " +
                         totalViews.ToString() + " total Guide Views.");

                modelTarget.SetActiveGuideViewIndex(guideViewIndexToActivate);
            }
            else
            {
                VLog.Log("yellow",
                         "GuideView was not cycled." +
                         "\nActive Guide View Index = " + activeView +
                         "\nNumber of Guide Views = " + totalViews);
            }
        }
    }
    protected override void OnTrackingFound()
    {
        base.OnTrackingFound();

        if (mTrackableBehaviour.Trackable is ModelTarget)
        {
            ModelTarget modelTarget = mTrackableBehaviour.Trackable as ModelTarget;
            DrawOrientedBoundingBox3D(modelTarget.GetBoundingBox());
        }
    }
    /// <summary>
    /// Cycles through guide views for Standard Model Targets with multiple views.
    /// </summary>
    public void CycleGuideView()
    {
        if (this.modelStandard != null)
        {
            ModelTarget modelTarget = this.modelStandard.ModelTarget;

            int activeView = modelTarget.GetActiveGuideViewIndex();
            int totalViews = modelTarget.GetNumGuideViews();

            if (totalViews > 1 && activeView > -1)
            {
                int guideViewIndexToActivate = (activeView + 1) % totalViews;

                modelTarget.SetActiveGuideViewIndex(guideViewIndexToActivate);
            }
        }
    }
    private void ActivateGloveTargetTracking(int guideViewIndex = 0)
    {
        foreach (TrackableBehaviour trackableBehaviour in mAllTargets)
        {
            print(trackableBehaviour.TrackableName);
        }
        //get the object tracker instance
        ObjectTracker objectTracker = TrackerManager.Instance.GetTracker <ObjectTracker>();

        if (objectTracker == null)
        {
            return;
        }
        objectTracker.Stop();

        //load dataset
        DataSet gloveTargetDataSet = objectTracker.CreateDataSet();

        gloveTargetDataSet.Load(mainGloveTarget);
        foreach (Trackable trackable in gloveTargetDataSet.GetTrackables())
        {
            if (trackable is ModelTarget)
            {
                ModelTarget mTrackable = trackable as ModelTarget;
                mTrackable.SetActiveGuideViewIndex(guideViewIndex);
            }
        }

        objectTracker.ActivateDataSet(gloveTargetDataSet);

        //restart tracking
        objectTracker.Start();

        foreach (TrackableBehaviour trackableBehaviour in GetTargets())
        {
            print(trackableBehaviour.TrackableName);
        }
    }
    void ActivateDataSet(string datasetName)
    {
        if (this.currentActiveDataSet == datasetName)
        {
            VLog.Log("yellow", "The selected dataset is already active.");
            // If the current dataset is already active, return.
            return;
        }

        // Stop the Object Tracker before activating/deactivating datasets.
        this.objectTracker.Stop();

        // Deactivate the currently active datasets.
        DeactivateActiveDataSets();

        var dataSets = this.objectTracker.GetDataSets();

        bool dataSetFoundAndActivated = false;

        foreach (DataSet ds in dataSets)
        {
            if (ds.Path.Contains(datasetName + ".xml"))
            {
                // Activate the selected dataset.
                if (this.objectTracker.ActivateDataSet(ds))
                {
                    this.currentActiveDataSet = datasetName;
                }

                dataSetFoundAndActivated = true;

                var trackables = ds.GetTrackables();

                foreach (Trackable t in trackables)
                {
                    ModelTarget modelTarget = t as ModelTarget;
                }

                Transform modelTargetTransform = null;

                if (datasetName == DataSetStandard)
                {
                    modelTargetTransform = this.modelStandard.transform;
                }
                else if (datasetName == DataSetAdvanced)
                {
                    modelTargetTransform = this.modelAdvanced.transform;
                }

                // Set the parent transform for the augmentation.
                this.augmentation.transform.SetParent(modelTargetTransform);
                this.augmentation.transform.localPosition = Vector3.zero;
                this.augmentation.transform.localRotation = Quaternion.identity;
                this.augmentation.transform.localScale    = Vector3.one;

                // Once we find and process selected dataset, exit foreach loop.
                break;
            }
        }

        if (!dataSetFoundAndActivated)
        {
            Debug.LogError("DataSet Not Found: " + datasetName);
        }

        // Start the Object Tracker.
        this.objectTracker.Start();
    }