/* * Callback function invoked when an event has been received from the EyeX Engine. */ void TX_CALLCONVENTION HandleEvent(TX_CONSTHANDLE hAsyncData, TX_USERPARAM userParam) { TX_HANDLE hEvent = TX_EMPTY_HANDLE; TX_HANDLE hBehavior = TX_EMPTY_HANDLE; txGetAsyncDataContent(hAsyncData, &hEvent); // NOTE. Uncomment the following line of code to view the event object. The same function can be used with any interaction object. //OutputDebugStringA(txDebugObject(hEvent)); if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_FIXATIONDATA) == TX_RESULT_OK) { OnFixationDataEvent(hBehavior); txReleaseObject(&hBehavior); } if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_GAZEPOINTDATA) == TX_RESULT_OK) { OnGazeDataEvent(hBehavior); txReleaseObject(&hBehavior); } if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_EYEPOSITIONDATA) == TX_RESULT_OK) { OnPositionDataEvent(hBehavior); txReleaseObject(&hBehavior); } // NOTE since this is a very simple application with a single interactor and a single data stream, // our event handling code can be very simple too. A more complex application would typically have to // check for multiple behaviors and route events based on interactor IDs. txReleaseObject(&hEvent); }
void TX_CALLCONVENTION HandleEvent(TX_CONSTHANDLE hAsyncData, TX_USERPARAM userParam) { TX_HANDLE hEvent = TX_EMPTY_HANDLE; TX_HANDLE hBehavior = TX_EMPTY_HANDLE; txGetAsyncDataContent(hAsyncData, &hEvent); if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_GAZEPOINTDATA) == TX_RESULT_OK) { OnGazeDataEvent(hBehavior); txReleaseObject(&hBehavior); } txReleaseObject(&hEvent); }
void TX_CALLCONVENTION eyeXHost::HandleEvent(TX_CONSTHANDLE hAsyncData) { TX_HANDLE hEvent = TX_EMPTY_HANDLE; TX_HANDLE hBehavior = TX_EMPTY_HANDLE; txGetAsyncDataContent(hAsyncData, &hEvent); if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_GAZEPOINTDATA) == TX_RESULT_OK) { OnGazeDataEvent(hBehavior); txReleaseObject(&hBehavior); } // NOTE since this is a very simple application with a single interactor and a single data stream, // our event handling code can be very simple too. A more complex application would typically have to // check for multiple behaviors and route events based on interactor IDs. txReleaseObject(&hEvent); }