示例#1
0
    // Initialize the container for retrieving tracking data from native
    private void InitializeTrackableContainer()
    {
        // Destroy if the container has been allocated.
        Marshal.FreeHGlobal(mTrackablePtr);

        mAbsoluteNumTrackables = 0;

        ImageTracker imageTracker = (ImageTracker)TrackerManager.Instance.GetTracker(
            Tracker.Type.IMAGE_TRACKER);
        MarkerTracker markerTracker = (MarkerTracker)TrackerManager.Instance.GetTracker(
            Tracker.Type.MARKER_TRACKER);

        if (imageTracker != null)
        {
            DataSet activeDataSet = imageTracker.GetActiveDataSet();
            if (activeDataSet != null)
            {
                mAbsoluteNumTrackables += activeDataSet.GetNumTrackables();
            }
        }

        if (markerTracker != null)
        {
            mAbsoluteNumTrackables += markerTracker.GetNumMarkers();
        }

        if (mAbsoluteNumTrackables > 0)
        {
            mTrackablePtr = Marshal.AllocHGlobal(Marshal.SizeOf(
                                                     typeof(TrackableData)) * mAbsoluteNumTrackables);
        }
        else
        {
            mTrackablePtr = IntPtr.Zero;
        }

        mTrackableDataArray = new TrackableData[mAbsoluteNumTrackables];

        if (!Application.isEditor)
        {
            Debug.Log("Absolute number of Trackables: " + mAbsoluteNumTrackables);
        }
    }