Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
 internal static pxcmStatus QueryTrackingValuesINT(IntPtr instance, Int32 cosID, out TrackingValues trackingValues)
 {
     trackingValues = new TrackingValues();
     return PXCMTracker_QueryTrackingValues(instance, cosID, trackingValues);
 }
Exemplo n.º 4
0
 /**
 * 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);
 }
Exemplo n.º 5
0
 /**
 * 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);
 }
Exemplo n.º 6
0
 /**
  * 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));
 }
Exemplo n.º 7
0
    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();
        }
    }
Exemplo n.º 8
0
 internal static pxcmStatus QueryTrackingValuesINT(IntPtr instance, Int32 cosID, out TrackingValues trackingValues)
 {
     trackingValues = new TrackingValues();
     return(PXCMTracker_QueryTrackingValues(instance, cosID, trackingValues));
 }
Exemplo n.º 9
0
 internal extern static pxcmStatus PXCMTracker_QueryTrackingValues(IntPtr instance, Int32 cosID, [Out] TrackingValues trackingValues);