19 memset(
_sensor0, 0, 3 *
sizeof(
float));
20 memset(
_sensor1, 0, 3 *
sizeof(
float));
22 memcpy(
_mapping, mapping, 6 *
sizeof(
int));
26 if (joystick_dev[0] ==
'*') {
33 fprintf(stderr,
"vrpn_Tracker_GameTrak: "
34 "Can't open joystick %s\n", joystick_dev);
61 memset(
d_quat, 0,
sizeof(vrpn_float64) * 4);
73 fprintf(stderr,
"GameTrak tracker: can't write message: tossing\n");
85 fprintf(stderr,
"GameTrak tracker: can't write message: tossing\n");
106 vrpn_float64 s1x, s1y, s1z;
107 vrpn_float64 s2x, s2y, s2z;
117 vrpn_float64 coef = (32.5 / 180.0) * Q_PI;
119 vrpn_float64 distance0 = 1.5 * (1 - s1z);
120 vrpn_float64 angleX0 = -s1x * coef;
121 vrpn_float64 angleY0 = -s1y * coef;
123 vrpn_float64 distance1 = 1.5 * (1 - s2z);
124 vrpn_float64 angleX1 = -s2x * coef;
125 vrpn_float64 angleY1 = -s2y * coef;
129 gametrak->
_sensor0[0] = sin(angleX0) * distance0 + 0.065;
130 gametrak->
_sensor0[1] = cos(angleX0) * sin(angleY0) * distance0;
131 gametrak->
_sensor0[2] = cos(angleX0) * cos(angleY0) * distance0;
133 gametrak->
_sensor1[0] = sin(angleX1) * distance1 - 0.065;
134 gametrak->
_sensor1[1] = cos(angleX1) * sin(angleY1) * distance1;
135 gametrak->
_sensor1[2] = cos(angleX1) * cos(angleY1) * distance1;
virtual void mainloop()
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
virtual int register_change_handler(void *userdata, vrpn_ANALOGCHANGEHANDLER handler)
vrpn_Connection * d_connection
Connection that this object talks to.
vrpn_int32 d_sender_id
Sender ID registered with the connection.
void server_mainloop(void)
Handles functions that all servers should provide in their mainloop() (ping/pong, for example) Should...
Generic connection class not specific to the transport mechanism.
virtual int pack_message(vrpn_uint32 len, struct timeval time, vrpn_int32 type, vrpn_int32 sender, const char *buffer, vrpn_uint32 class_of_service)
Pack a message that will be sent the next time mainloop() is called. Turn off the RELIABLE flag if yo...
virtual ~vrpn_Tracker_GameTrak()
vrpn_Tracker_GameTrak(const char *name, vrpn_Connection *trackercon, const char *joystick_dev, int *mapping)
struct timeval _timestamp
vrpn_Analog_Remote * _analog
static void VRPN_CALLBACK handle_update(void *, const vrpn_ANALOGCB)
virtual void mainloop()
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
virtual int encode_to(char *buf)
vrpn_float64 channel[vrpn_CHANNEL_MAX]
const vrpn_uint32 vrpn_CONNECTION_LOW_LATENCY