// 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); } }