internal static pxcmStatus QueryAllTrackingValuesINT(IntPtr instance, out TrackingValues[] trackingValues) { Int32 nvalues = PXCMTracker_QueryNumberTrackingValues(instance); IntPtr tv2 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(TrackingValues)) * nvalues); pxcmStatus sts = PXCMTracker_QueryAllTrackingValues(instance, tv2); if (sts >= pxcmStatus.PXCM_STATUS_NO_ERROR) { trackingValues = new TrackingValues[nvalues]; for (int i = 0; i < nvalues; i++) { trackingValues[i] = new TrackingValues(); Marshal.PtrToStructure(new IntPtr(tv2.ToInt64() + Marshal.SizeOf(typeof(TrackingValues)) * i), trackingValues[i]); } } else { trackingValues = null; } Marshal.FreeHGlobal(tv2); return sts; }
internal static pxcmStatus QueryAllTrackingValuesINT(IntPtr instance, out TrackingValues[] trackingValues) { Int32 nvalues = PXCMTracker_QueryNumberTrackingValues(instance); IntPtr tv2 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(TrackingValues)) * nvalues); pxcmStatus sts = PXCMTracker_QueryAllTrackingValues(instance, tv2); if (sts >= pxcmStatus.PXCM_STATUS_NO_ERROR) { trackingValues = new TrackingValues[nvalues]; for (int i = 0; i < nvalues; i++) { trackingValues[i] = new TrackingValues(); Marshal.PtrToStructure(new IntPtr(tv2.ToInt64() + Marshal.SizeOf(typeof(TrackingValues)) * i), trackingValues[i]); } } else { trackingValues = null; } Marshal.FreeHGlobal(tv2); return(sts); }
internal static pxcmStatus QueryTrackingValuesINT(IntPtr instance, Int32 cosID, out TrackingValues trackingValues) { trackingValues = new TrackingValues(); return PXCMTracker_QueryTrackingValues(instance, cosID, trackingValues); }
/** * Return information for a particular coordinate system ID. This value can be returned from Set2DTrackFromFile(), * Set2DTrackFromImage(), or Set3DTrack(). coordinate system IDs for Set3DInstantTrack() are generated dynamically as * targets that are determined in the scene. * * \param cosID: The coordinate system ID to return the status for * \param outTrackingValues: The returned tracking values. the user needs to manage the mapping between the cosIDs and targets in loaded. */ public pxcmStatus QueryTrackingValues(Int32 cosID, out TrackingValues trackingValues) { return QueryTrackingValuesINT(instance, cosID, out trackingValues); }
/** * Get information for all of the active tracking targets * * \param trackingValues: Pointer to store the tracking results at. The passed in block must be * at least QueryNumberTrackingValues() elements long */ public pxcmStatus QueryAllTrackingValues(out TrackingValues[] trackingValues) { return QueryAllTrackingValuesINT(instance, out trackingValues); }
/** * Return information for a particular coordinate system ID. This value can be returned from Set2DTrackFromFile(), * Set2DTrackFromImage(), or Set3DTrack(). coordinate system IDs for Set3DInstantTrack() are generated dynamically as * targets that are determined in the scene. * * \param cosID: The coordinate system ID to return the status for * \param outTrackingValues: The returned tracking values. the user needs to manage the mapping between the cosIDs and targets in loaded. */ public pxcmStatus QueryTrackingValues(Int32 cosID, out TrackingValues trackingValues) { return(QueryTrackingValuesINT(instance, cosID, out trackingValues)); }
public void Update() { EUNITY_CALLBACK_EVENT eventID = (EUNITY_CALLBACK_EVENT)MetaioSDKUnity.getUnityCallbackEventID(); if (eventID != EUNITY_CALLBACK_EVENT.EUCE_NONE) { uint eventValueLength = 0; IntPtr eventValuePtr = MetaioSDKUnity.getUnityCallbackEventValue(out eventValueLength); // Debug.Log("Callback event: "+eventID+", "+eventValue); switch (eventID) { case EUNITY_CALLBACK_EVENT.EUCE_LOG: onLog(Marshal.PtrToStringAnsi(eventValuePtr)); break; case EUNITY_CALLBACK_EVENT.EUCE_LOG_WARNING: onLogWarning(Marshal.PtrToStringAnsi(eventValuePtr)); break; case EUNITY_CALLBACK_EVENT.EUCE_LOG_ERROR: onLogError(Marshal.PtrToStringAnsi(eventValuePtr)); break; case EUNITY_CALLBACK_EVENT.EUCE_SDK_READY: onSDKReady(); break; case EUNITY_CALLBACK_EVENT.EUCE_TRACKING_EVENT: byte[] pbAsBytes = new byte[eventValueLength]; Marshal.Copy(eventValuePtr, pbAsBytes, 0, (int)eventValueLength); metaio.unitycommunication.OnTrackingEventProtocol prot = metaio.unitycommunication.OnTrackingEventProtocol.ParseFrom(pbAsBytes); List <TrackingValues> listTV = new List <TrackingValues>(); for (int i = 0; i < prot.TrackingValuesCount; ++i) { listTV.Add(TrackingValues.FromPB(prot.TrackingValuesList[i])); } onTrackingEvent(listTV); break; case EUNITY_CALLBACK_EVENT.EUCE_INSTANT_TRACKING_EVENT: onInstantTrackingEvent(eventValuePtr.MarshalToStringUTF8()); break; case EUNITY_CALLBACK_EVENT.EUCE_CAMERA_IMAGE_SAVED: onCameraImageSaved(eventValuePtr.MarshalToStringUTF8()); break; case EUNITY_CALLBACK_EVENT.EUCE_VISUAL_SEARCH_RESULT: parseVisualSearchResponse(eventValuePtr, eventValueLength); break; case EUNITY_CALLBACK_EVENT.EUCE_VISUAL_SEARCH_STATUS: onVisualSearchStatusChanged(Marshal.PtrToStringAnsi(eventValuePtr)); break; case EUNITY_CALLBACK_EVENT.EUCE_MOVIE_END: IntPtr movieTextureGeometryPtr = new IntPtr(int.Parse(Marshal.PtrToStringAnsi(eventValuePtr))); onMovieEnd(metaioMovieTexture.getGameObjectNameForMovieTextureGeometryPtr(movieTextureGeometryPtr)); break; } // remove the callback event from queue MetaioSDKUnity.removeUnityCallbackEvent(); } }
internal static pxcmStatus QueryTrackingValuesINT(IntPtr instance, Int32 cosID, out TrackingValues trackingValues) { trackingValues = new TrackingValues(); return(PXCMTracker_QueryTrackingValues(instance, cosID, trackingValues)); }
internal extern static pxcmStatus PXCMTracker_QueryTrackingValues(IntPtr instance, Int32 cosID, [Out] TrackingValues trackingValues);