#include "betray_plugin_api.h" #include "betray_plugin_pxc_wrapper.h" #include "imagine.h" #include <stdio.h> #include <math.h> //#define DRAW_IMAGE FILE *output_file = NULL; uint pxc_plugin_setting_ids[3]; float pxc_plugin_setting_values[3]; float pxc_plugin_vantage[3] = {0, 0, 2}; void *pxc_plugin_mutex = NULL; void betray_view_vantage2(float *view); extern void pxc_facial_tracking(float *view, float delta_time, float screen_size, float x_displace, float y_displace); void pxc_plugin_vantage_func(float *pos) { imagine_mutex_lock(pxc_plugin_mutex); pos[0] = pxc_plugin_vantage[0]; pos[1] = pxc_plugin_vantage[1]; pos[2] = pxc_plugin_vantage[2]; pxc_plugin_setting_values[0] = betray_settings_number_float_get(pxc_plugin_setting_ids[0]); pxc_plugin_setting_values[1] = betray_settings_number_float_get(pxc_plugin_setting_ids[1]); pxc_plugin_setting_values[2] = betray_settings_number_float_get(pxc_plugin_setting_ids[2]); imagine_mutex_unlock(pxc_plugin_mutex); } void pxc_plugin_thread_func(void *data) { float vantage[3] = {0, 0, 2}, settings[3]; settings[0] = pxc_plugin_setting_values[0]; settings[1] = pxc_plugin_setting_values[1]; settings[2] = pxc_plugin_setting_values[2]; while(TRUE) { pxc_facial_tracking(vantage, 0.01, settings[0], settings[1], settings[2]); imagine_mutex_lock(pxc_plugin_mutex); pxc_plugin_vantage[0] = vantage[0]; pxc_plugin_vantage[1] = vantage[1]; pxc_plugin_vantage[2] = vantage[2]; settings[0] = pxc_plugin_setting_values[0]; settings[1] = pxc_plugin_setting_values[1]; settings[2] = pxc_plugin_setting_values[2]; imagine_mutex_unlock(pxc_plugin_mutex); } } void betray_plugin_init(void) { uint status; pxc_plugin_mutex = imagine_mutex_create(); betray_plugin_callback_set_view_vantage(pxc_plugin_vantage_func, FALSE); pxc_plugin_setting_ids[0] = betray_settings_create(BETRAY_ST_NUMBER_FLOAT, "Screen Width MM", 0, NULL); betray_settings_number_float_set(pxc_plugin_setting_ids[0], 240); pxc_plugin_setting_ids[1] = betray_settings_create(BETRAY_ST_NUMBER_FLOAT, "Camera Offset X", 0, NULL); betray_settings_number_float_set(pxc_plugin_setting_ids[1], 0); pxc_plugin_setting_ids[2] = betray_settings_create(BETRAY_ST_NUMBER_FLOAT, "Camera Offset Y", 0, NULL); betray_settings_number_float_set(pxc_plugin_setting_ids[2], 1); imagine_thread(pxc_plugin_thread_func, NULL, "Betray PXC plugin"); }