17#define DEFAULT_NUM_REC_CYCLES (10)
20#define FD_VALUE_OUT_OF_RANGE 0
21#define FD_DUTY_CYCLE_ERROR 1
22#define FD_FORCE_ERROR 2
24#define FD_MISC_ERROR 3
37#define FD_SPRINGS_AS_FIELDS
74 void setCustomEffect(vrpn_int32 effectId, vrpn_float32 *params = NULL,
75 vrpn_uint32 nbParams = 0);
89 void setFF_Force(vrpn_float32 fx, vrpn_float32 fy, vrpn_float32 fz)
102 vrpn_float32 dfxdz, vrpn_float32 dfydx,
103 vrpn_float32 dfydy, vrpn_float32 dfydz,
104 vrpn_float32 dfzdx, vrpn_float32 dfzdy,
119 void set_plane(vrpn_float32 *p);
120 void set_plane(vrpn_float32 *p, vrpn_float32 d);
121 void set_plane(vrpn_float32 a, vrpn_float32 b, vrpn_float32 c,
124 void sendError(
int error_code);
196 const vrpn_float32 *params,
197 vrpn_uint32 nbParams);
199 static char *
encode_force(vrpn_int32 &length,
const vrpn_float64 *force);
200 static char *
encode_scp(vrpn_int32 &length,
const vrpn_float64 *pos,
201 const vrpn_float64 *quat);
203 const vrpn_float32 kspring,
204 const vrpn_float32 kdamp,
const vrpn_float32 fdyn,
205 const vrpn_float32 fstat,
206 const vrpn_int32 plane_index,
207 const vrpn_int32 n_rec_cycles);
209 const vrpn_float32 k_adhesion_norm,
210 const vrpn_float32 k_adhesion_lat,
211 const vrpn_float32 tex_amp,
212 const vrpn_float32 tex_wl,
213 const vrpn_float32 buzz_amp,
214 const vrpn_float32 buzz_freq);
215 static char *
encode_vertex(vrpn_int32 &len,
const vrpn_int32 objNum,
216 const vrpn_int32 vertNum,
const vrpn_float32 x,
217 const vrpn_float32 y,
const vrpn_float32 z);
218 static char *
encode_normal(vrpn_int32 &len,
const vrpn_int32 objNum,
219 const vrpn_int32 vertNum,
const vrpn_float32 x,
220 const vrpn_float32 y,
const vrpn_float32 z);
222 const vrpn_int32 triNum,
223 const vrpn_int32 vert0,
const vrpn_int32 vert1,
224 const vrpn_int32 vert2,
const vrpn_int32 norm0,
225 const vrpn_int32 norm1,
226 const vrpn_int32 norm2);
228 const vrpn_int32 triNum);
230 const vrpn_int32 objNum,
231 const vrpn_float32 kspring,
232 const vrpn_float32 kdamp,
233 const vrpn_float32 fdyn,
234 const vrpn_float32 fstat);
236 const vrpn_int32
type);
238 const vrpn_int32 objNum,
239 const vrpn_float32 homMatrix[16]);
243 const vrpn_int32 ParentNum);
245 const vrpn_int32 objNum);
247 const vrpn_float32 Pos[3]);
249 const vrpn_int32 objNum,
250 const vrpn_float32 axis[3],
251 const vrpn_float32 angle);
253 const vrpn_float32 Scale[3]);
257 const vrpn_int32 parentNum);
260 const vrpn_float32 Pos[3],
261 const vrpn_float32 axis[3],
262 const vrpn_float32 angle);
264 const vrpn_float32 Pos[3],
265 const vrpn_float32 axis[3],
266 const vrpn_float32 angle);
268 const vrpn_float32 Scale);
270 const vrpn_int32 objNum,
271 const vrpn_bool isTouchable);
274 const vrpn_float32 origin[3],
275 const vrpn_float32 force[3],
276 const vrpn_float32 jacobian[3][3],
277 const vrpn_float32 radius);
278 static char *
encode_error(vrpn_int32 &len,
const vrpn_int32 error_code);
283 const vrpn_int32 len,
284 vrpn_uint32 *effectId,
285 vrpn_float32 **params,
286 vrpn_uint32 *nbParams);
288 static vrpn_int32
decode_force(
const char *buffer,
const vrpn_int32 len,
289 vrpn_float64 *force);
290 static vrpn_int32
decode_scp(
const char *buffer,
const vrpn_int32 len,
291 vrpn_float64 *pos, vrpn_float64 *quat);
292 static vrpn_int32
decode_plane(
const char *buffer,
const vrpn_int32 len,
293 vrpn_float32 *
plane, vrpn_float32 *kspring,
294 vrpn_float32 *kdamp, vrpn_float32 *fdyn,
295 vrpn_float32 *fstat, vrpn_int32 *plane_index,
296 vrpn_int32 *n_rec_cycles);
298 const char *buffer,
const vrpn_int32 len, vrpn_float32 *k_adhesion_norm,
299 vrpn_float32 *k_adhesion_lat, vrpn_float32 *tex_amp,
300 vrpn_float32 *tex_wl, vrpn_float32 *buzz_amp, vrpn_float32 *buzz_freq);
301 static vrpn_int32
decode_vertex(
const char *buffer,
const vrpn_int32 len,
302 vrpn_int32 *objNum, vrpn_int32 *vertNum,
303 vrpn_float32 *x, vrpn_float32 *y,
305 static vrpn_int32
decode_normal(
const char *buffer,
const vrpn_int32 len,
306 vrpn_int32 *objNum, vrpn_int32 *vertNum,
307 vrpn_float32 *x, vrpn_float32 *y,
309 static vrpn_int32
decode_triangle(
const char *buffer,
const vrpn_int32 len,
310 vrpn_int32 *objNum, vrpn_int32 *triNum,
311 vrpn_int32 *vert0, vrpn_int32 *vert1,
312 vrpn_int32 *vert2, vrpn_int32 *norm0,
313 vrpn_int32 *norm1, vrpn_int32 *norm2);
315 const vrpn_int32 len,
320 vrpn_int32 *objNum, vrpn_float32 *kspring,
321 vrpn_float32 *kdamp, vrpn_float32 *fdyn,
322 vrpn_float32 *fstat);
324 const vrpn_int32 len,
328 const vrpn_int32 len,
330 vrpn_float32 homMatrix[16]);
335 vrpn_int32 *ParentNum);
341 vrpn_float32 Pos[3]);
345 vrpn_float32 axis[3],
346 vrpn_float32 *angle);
349 vrpn_float32 Scale[3]);
356 vrpn_int32 *parentNum);
360 vrpn_float32 axis[3],
361 vrpn_float32 *angle);
363 vrpn_float32 *Scale);
366 vrpn_float32 axis[3],
367 vrpn_float32 *angle);
371 vrpn_bool *isTouchable);
375 vrpn_float32 origin[3], vrpn_float32 force[3],
376 vrpn_float32 jacobian[3][3], vrpn_float32 *radius);
377 static vrpn_int32
decode_error(
const char *buffer,
const vrpn_int32 len,
378 vrpn_int32 *error_code);
384 const vrpn_int32 len,
390 const vrpn_int32 len,
394 vrpn_float32 y, vrpn_float32 z);
396 const vrpn_int32 len,
402 vrpn_float32 y, vrpn_float32 z);
404 const vrpn_int32 len,
414 const vrpn_int32 len,
420 vrpn_float32 y, vrpn_float32 z);
422 const vrpn_int32 len,
428 vrpn_float32 x, vrpn_float32 y,
431 const vrpn_int32 len,
438 const vrpn_int32 len,
443 static char *
encodePoint(vrpn_int32 &len, vrpn_float32 x, vrpn_float32 y,
445 static vrpn_int32
decodePoint(
const char *buffer,
const vrpn_int32 len,
446 vrpn_float32 *x, vrpn_float32 *y,
494typedef struct _vrpn_FORCESCPCB {
502typedef struct _vrpn_FORCECB {
509typedef struct _vrpn_FORCEERRORCB {
531 void setVertex(vrpn_int32 vertNum, vrpn_float32 x, vrpn_float32 y,
535 void setNormal(vrpn_int32 normNum, vrpn_float32 x, vrpn_float32 y,
537 void setTriangle(vrpn_int32 triNum, vrpn_int32 vert0, vrpn_int32 vert1,
538 vrpn_int32 vert2, vrpn_int32 norm0 = -1,
539 vrpn_int32 norm1 = -1, vrpn_int32 norm2 = -1);
552 void addObject(vrpn_int32 objNum, vrpn_int32 ParentNum = -1);
556 void setObjectVertex(vrpn_int32 objNum, vrpn_int32 vertNum, vrpn_float32 x,
557 vrpn_float32 y, vrpn_float32 z);
560 void setObjectNormal(vrpn_int32 objNum, vrpn_int32 normNum, vrpn_float32 x,
561 vrpn_float32 y, vrpn_float32 z);
563 vrpn_int32 vert0, vrpn_int32 vert1, vrpn_int32 vert2,
564 vrpn_int32 norm0 = -1, vrpn_int32 norm1 = -1,
565 vrpn_int32 norm2 = -1);
572 vrpn_float32 homMatrix[16]);
587 void moveToParent(vrpn_int32 objNum, vrpn_int32 ParentNum);
639 void sendForceField(vrpn_float32 origin[3], vrpn_float32 force[3],
640 vrpn_float32 jacobian[3][3], vrpn_float32 radius);
716 void send(
const char *msgbuf, vrpn_int32 len, vrpn_int32
type);
721#ifdef FD_SPRINGS_AS_FIELDS
vrpn_Connection * d_connection
Connection that this object talks to.
vrpn_MESSAGEHANDLER handler
virtual void mainloop()=0
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
virtual int register_types(void)=0
Register the types of messages this device sends/receives. Return 0 on success, -1 on fail.
vrpn_BaseClass(const char *name, vrpn_Connection *c=NULL)
Names the device and assigns or opens connection, calls registration methods.
Generic connection class not specific to the transport mechanism.
void setSceneOrigin(vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 angle)
void removeTriangle(vrpn_int32 triNum)
void removeObject(vrpn_int32 objNum)
vrpn_float32 d_conKSpring
void setObjectOrientation(vrpn_int32 objNum, vrpn_float32 axis[3], vrpn_float32 angle)
void setConstraintMode(ConstraintGeometry mode)
vrpn_int32 m_NextAvailableObjectID
void updateTrimeshChanges()
void setConstraintLinePoint(vrpn_float32 point[3])
void setVertex(vrpn_int32 vertNum, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
functions for a single object
vrpn_float32 d_conPoint[3]
vrpn_float64 d_conPlaneNormal[3]
void setObjectIsTouchable(vrpn_int32 objNum, vrpn_bool IsTouchable=true)
void setObjectPosition(vrpn_int32 objNum, vrpn_float32 Pos[3])
void moveToParent(vrpn_int32 objNum, vrpn_int32 ParentNum)
Functions to organize the scene.
void removeObjectTriangle(vrpn_int32 objNum, vrpn_int32 triNum)
void setConstraintPlanePoint(vrpn_float32 point[3])
static int VRPN_CALLBACK handle_scp_change_message(void *userdata, vrpn_HANDLERPARAM p)
void updateObjectTrimeshChanges(vrpn_int32 objNum)
void setHapticScale(vrpn_float32 Scale)
void setTrimeshTransform(vrpn_float32 homMatrix[16])
void setConstraintKSpring(vrpn_float32 k)
void clearObjectTrimesh(vrpn_int32 objNum)
void setObjectVertex(vrpn_int32 objNum, vrpn_int32 vertNum, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
void setConstraintPlaneNormal(vrpn_float32 normal[3])
void setObjectScale(vrpn_int32 objNum, vrpn_float32 Scale[3])
void addObjectExScene(vrpn_int32 objNum)
void setConstraintLineDirection(vrpn_float32 direction[3])
vrpn_float32 d_conPlanePoint[3]
ConstraintGeometry d_conMode
vrpn_ForceDevice_Remote(const char *name, vrpn_Connection *cn=NULL)
vrpn_int32 getNewObjectID()
void setTriangle(vrpn_int32 triNum, vrpn_int32 vert0, vrpn_int32 vert1, vrpn_int32 vert2, vrpn_int32 norm0=-1, vrpn_int32 norm1=-1, vrpn_int32 norm2=-1)
virtual int unregister_force_change_handler(void *userdata, vrpn_FORCECHANGEHANDLER handler)
virtual int register_scp_change_handler(void *userdata, vrpn_FORCESCPHANDLER handler)
virtual int register_error_handler(void *userdata, vrpn_FORCEERRORHANDLER handler)
virtual int register_force_change_handler(void *userdata, vrpn_FORCECHANGEHANDLER handler)
void setHapticOrigin(vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 angle)
void addObject(vrpn_int32 objNum, vrpn_int32 ParentNum=-1)
functions for multiple objects in the haptic scene
void constraintToForceField(void)
void setObjectNormal(vrpn_int32 objNum, vrpn_int32 normNum, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
void enableConstraint(vrpn_int32 enable)
void setConstraintPoint(vrpn_float32 point[3])
vrpn_Callback_List< vrpn_FORCESCPCB > d_scp_change_list
virtual int unregister_scp_change_handler(void *userdata, vrpn_FORCESCPHANDLER handler)
vrpn_Callback_List< vrpn_FORCEERRORCB > d_error_change_list
static int VRPN_CALLBACK handle_error_change_message(void *userdata, vrpn_HANDLERPARAM p)
void sendForceField(vrpn_float32 origin[3], vrpn_float32 force[3], vrpn_float32 jacobian[3][3], vrpn_float32 radius)
void setObjectTriangle(vrpn_int32 objNum, vrpn_int32 triNum, vrpn_int32 vert0, vrpn_int32 vert1, vrpn_int32 vert2, vrpn_int32 norm0=-1, vrpn_int32 norm1=-1, vrpn_int32 norm2=-1)
virtual int unregister_error_handler(void *userdata, vrpn_FORCEERRORHANDLER handler)
static int VRPN_CALLBACK handle_force_change_message(void *userdata, vrpn_HANDLERPARAM p)
void send(const char *msgbuf, vrpn_int32 len, vrpn_int32 type)
vrpn_float32 d_conLinePoint[3]
void setNormal(vrpn_int32 normNum, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
vrpn_Callback_List< vrpn_FORCECB > d_change_list
void stopForceField(void)
vrpn_float64 d_conLineDirection[3]
void setObjectTrimeshTransform(vrpn_int32 objNum, vrpn_float32 homMatrix[16])
vrpn_uint32 nbCustomEffectParams
static vrpn_int32 decode_objectScale(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum, vrpn_float32 Scale[3])
static char * encode_setObjectIsTouchable(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_bool isTouchable)
void setRecoveryTime(int rt)
void setFF_Force(vrpn_float32 f[3])
void setFF_Radius(vrpn_float32 r)
void setFF_Origin(vrpn_float32 x[3])
static vrpn_int32 decode_enableConstraint(const char *buffer, const vrpn_int32 len, vrpn_int32 *enable)
vrpn_int32 setConstraintLineDirection_message_id
vrpn_int32 setConstraintKSpring_message_id
static vrpn_int32 decode_trimeshTransform(const char *buffer, const vrpn_int32 len, vrpn_int32 *objNum, vrpn_float32 homMatrix[16])
static vrpn_int32 decode_setHapticOrigin(const char *buffer, vrpn_int32 len, vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 *angle)
vrpn_float32 SurfaceKspring
vrpn_float64 d_force[3]
d_force isn't used in vrpn_ForceDevice, but seems to be used by derived classes? What's the meaning?
vrpn_int32 force_message_id
static vrpn_int32 decode_setConstraintPoint(const char *buffer, const vrpn_int32 len, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
static char * encode_setHapticOrigin(vrpn_int32 &len, const vrpn_float32 Pos[3], const vrpn_float32 axis[3], const vrpn_float32 angle)
static vrpn_int32 decode_setConstraintLineDirection(const char *buffer, const vrpn_int32 len, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
static vrpn_int32 decode_objectPosition(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum, vrpn_float32 Pos[3])
static char * encode_plane(vrpn_int32 &length, const vrpn_float32 *plane, const vrpn_float32 kspring, const vrpn_float32 kdamp, const vrpn_float32 fdyn, const vrpn_float32 fstat, const vrpn_int32 plane_index, const vrpn_int32 n_rec_cycles)
static vrpn_int32 decode_normal(const char *buffer, const vrpn_int32 len, vrpn_int32 *objNum, vrpn_int32 *vertNum, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
static char * encode_clearTrimesh(vrpn_int32 &len, const vrpn_int32 objNum)
vrpn_int32 addObject_message_id
vrpn_int32 setConstraintMode_message_id
void setSurfaceKspring(vrpn_float32 k)
static vrpn_int32 decode_forcefield(const char *buffer, const vrpn_int32 len, vrpn_float32 origin[3], vrpn_float32 force[3], vrpn_float32 jacobian[3][3], vrpn_float32 *radius)
vrpn_int32 setObjectScale_message_id
vrpn_float32 SurfaceKdamping
vrpn_int32 setHapticOrigin_message_id
static char * encode_triangle(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_int32 triNum, const vrpn_int32 vert0, const vrpn_int32 vert1, const vrpn_int32 vert2, const vrpn_int32 norm0, const vrpn_int32 norm1, const vrpn_int32 norm2)
vrpn_int32 moveToParent_message_id
vrpn_int32 setConstraintLinePoint_message_id
vrpn_float32 SurfaceBuzzFreq
vrpn_float32 SurfaceTextureWavelength
void setSurfaceFdynamic(vrpn_float32 kd)
vrpn_float32 ff_origin[3]
static char * encode_setConstraintPoint(vrpn_int32 &len, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
static vrpn_int32 decode_error(const char *buffer, const vrpn_int32 len, vrpn_int32 *error_code)
static vrpn_int32 decode_setConstraintKSpring(const char *buffer, const vrpn_int32 len, vrpn_float32 *k)
static char * encode_removeObject(vrpn_int32 &len, const vrpn_int32 objNum)
static vrpn_int32 decode_addObjectExScene(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum)
static char * encode_normal(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_int32 vertNum, const vrpn_float32 x, const vrpn_float32 y, const vrpn_float32 z)
void setSurfaceKdamping(vrpn_float32 d)
vrpn_int32 setSceneOrigin_message_id
static char * encode_objectPosition(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_float32 Pos[3])
static vrpn_int32 decode_setConstraintMode(const char *buffer, const vrpn_int32 len, ConstraintGeometry *mode)
static vrpn_int32 decode_setSceneOrigin(const char *buffer, vrpn_int32 len, vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 *angle)
static vrpn_int32 decode_removeTriangle(const char *buffer, const vrpn_int32 len, vrpn_int32 *objNum, vrpn_int32 *triNum)
static char * encode_updateTrimeshChanges(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_float32 kspring, const vrpn_float32 kdamp, const vrpn_float32 fdyn, const vrpn_float32 fstat)
void setSurfaceFstatic(vrpn_float32 ks)
static char * encode_scp(vrpn_int32 &length, const vrpn_float64 *pos, const vrpn_float64 *quat)
static char * encode_setConstraintMode(vrpn_int32 &len, ConstraintGeometry mode)
vrpn_int32 enableConstraint_message_id
static char * encode_removeTriangle(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_int32 triNum)
vrpn_int32 scp_message_id
static char * encodePoint(vrpn_int32 &len, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
vrpn_float32 SurfaceBuzzAmp
static vrpn_int32 decode_updateTrimeshChanges(const char *buffer, const vrpn_int32 len, vrpn_int32 *objNum, vrpn_float32 *kspring, vrpn_float32 *kdamp, vrpn_float32 *fdyn, vrpn_float32 *fstat)
static char * encode_addObject(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_int32 ParentNum)
static char * encode_setTrimeshType(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_int32 type)
vrpn_int32 error_message_id
vrpn_int32 setObjectPosition_message_id
vrpn_int32 setConstraintPlaneNormal_message_id
static char * encode_setHapticScale(vrpn_int32 &len, const vrpn_float32 Scale)
static char * encode_forcefield(vrpn_int32 &len, const vrpn_float32 origin[3], const vrpn_float32 force[3], const vrpn_float32 jacobian[3][3], const vrpn_float32 radius)
static vrpn_int32 decode_setConstraintPlaneNormal(const char *buffer, const vrpn_int32 len, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
vrpn_int32 clearTrimesh_message_id
static char * encode_objectScale(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_float32 Scale[3])
static vrpn_int32 decode_setConstraintPlanePoint(const char *buffer, const vrpn_int32 len, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
static vrpn_int32 decode_scp(const char *buffer, const vrpn_int32 len, vrpn_float64 *pos, vrpn_float64 *quat)
static char * encode_vertex(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_int32 vertNum, const vrpn_float32 x, const vrpn_float32 y, const vrpn_float32 z)
void setFF_Origin(vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
void setSurfaceBuzzFrequency(vrpn_float32 freq)
static char * encode_error(vrpn_int32 &len, const vrpn_int32 error_code)
static vrpn_int32 decode_setConstraintLinePoint(const char *buffer, const vrpn_int32 len, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
static char * encode_trimeshTransform(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_float32 homMatrix[16])
vrpn_int32 setTriangle_message_id
void setSurfaceKadhesionLateral(vrpn_float32 k)
static vrpn_int32 decode_surface_effects(const char *buffer, const vrpn_int32 len, vrpn_float32 *k_adhesion_norm, vrpn_float32 *k_adhesion_lat, vrpn_float32 *tex_amp, vrpn_float32 *tex_wl, vrpn_float32 *buzz_amp, vrpn_float32 *buzz_freq)
vrpn_int32 customEffectId
void setFF_Force(vrpn_float32 fx, vrpn_float32 fy, vrpn_float32 fz)
static char * encode_setConstraintKSpring(vrpn_int32 &len, vrpn_float32 k)
static char * encode_setConstraintLineDirection(vrpn_int32 &len, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
vrpn_int32 plane_message_id
static char * encode_setConstraintPlaneNormal(vrpn_int32 &len, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
void setSurfaceTextureWavelength(vrpn_float32 wl)
void setSurfaceBuzzAmplitude(vrpn_float32 amp)
static char * encode_custom_effect(vrpn_int32 &len, vrpn_uint32 effectId, const vrpn_float32 *params, vrpn_uint32 nbParams)
static vrpn_int32 decode_addObject(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum, vrpn_int32 *ParentNum)
static vrpn_int32 decode_setTrimeshType(const char *buffer, const vrpn_int32 len, vrpn_int32 *objNum, vrpn_int32 *type)
static char * encode_setConstraintLinePoint(vrpn_int32 &len, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
static vrpn_int32 decode_setObjectIsTouchable(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum, vrpn_bool *isTouchable)
vrpn_float32 SurfaceKadhesionNormal
vrpn_int32 setConstraintPoint_message_id
vrpn_float32 SurfaceTextureAmplitude
vrpn_int32 updateTrimeshChanges_message_id
static vrpn_int32 decode_custom_effect(const char *buffer, const vrpn_int32 len, vrpn_uint32 *effectId, vrpn_float32 **params, vrpn_uint32 *nbParams)
vrpn_int32 setConstraintPlanePoint_message_id
static vrpn_int32 decode_objectOrientation(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum, vrpn_float32 axis[3], vrpn_float32 *angle)
static vrpn_int32 decode_clearTrimesh(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum)
vrpn_ForceDevice(const char *name, vrpn_Connection *c)
vrpn_int32 setHapticScale_message_id
void setSurfaceKadhesionNormal(vrpn_float32 k)
static vrpn_int32 decode_triangle(const char *buffer, const vrpn_int32 len, vrpn_int32 *objNum, vrpn_int32 *triNum, vrpn_int32 *vert0, vrpn_int32 *vert1, vrpn_int32 *vert2, vrpn_int32 *norm0, vrpn_int32 *norm1, vrpn_int32 *norm2)
vrpn_int32 addObjectExScene_message_id
static vrpn_int32 decode_force(const char *buffer, const vrpn_int32 len, vrpn_float64 *force)
static char * encode_objectOrientation(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_float32 axis[3], const vrpn_float32 angle)
vrpn_int32 transformTrimesh_message_id
vrpn_int32 setObjectOrientation_message_id
vrpn_int32 getNewObjectID_message_id
void setSurfaceTextureAmplitude(vrpn_float32 amp)
static char * encode_addObjectExScene(vrpn_int32 &len, const vrpn_int32 objNum)
vrpn_int32 removeTriangle_message_id
static vrpn_int32 decode_moveToParent(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum, vrpn_int32 *parentNum)
vrpn_int32 setNormal_message_id
vrpn_int32 setTrimeshType_message_id
static char * encode_surface_effects(vrpn_int32 &len, const vrpn_float32 k_adhesion_norm, const vrpn_float32 k_adhesion_lat, const vrpn_float32 tex_amp, const vrpn_float32 tex_wl, const vrpn_float32 buzz_amp, const vrpn_float32 buzz_freq)
vrpn_int32 custom_effect_message_id
int connectionAvailable(void)
vrpn_int32 forcefield_message_id
static vrpn_int32 decodePoint(const char *buffer, const vrpn_int32 len, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
static char * encode_setConstraintPlanePoint(vrpn_int32 &len, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)
vrpn_float32 SurfaceFdynamic
static char * encode_enableConstraint(vrpn_int32 &len, vrpn_int32 enable)
vrpn_float32 SurfaceFstatic
static char * encode_force(vrpn_int32 &length, const vrpn_float64 *force)
static char * encode_moveToParent(vrpn_int32 &len, const vrpn_int32 objNum, const vrpn_int32 parentNum)
vrpn_int32 removeObject_message_id
static vrpn_int32 decode_vertex(const char *buffer, const vrpn_int32 len, vrpn_int32 *objNum, vrpn_int32 *vertNum, vrpn_float32 *x, vrpn_float32 *y, vrpn_float32 *z)
vrpn_int32 setVertex_message_id
int getRecoveryTime(void)
static char * encode_setSceneOrigin(vrpn_int32 &len, const vrpn_float32 Pos[3], const vrpn_float32 axis[3], const vrpn_float32 angle)
static vrpn_int32 decode_removeObject(const char *buffer, vrpn_int32 len, vrpn_int32 *objNum)
static vrpn_int32 decode_setHapticScale(const char *buffer, vrpn_int32 len, vrpn_float32 *Scale)
vrpn_float32 * customEffectParams
void setFF_Jacobian(vrpn_float32 dfxdx, vrpn_float32 dfxdy, vrpn_float32 dfxdz, vrpn_float32 dfydx, vrpn_float32 dfydy, vrpn_float32 dfydz, vrpn_float32 dfzdx, vrpn_float32 dfzdy, vrpn_float32 dfzdz)
vrpn_int32 plane_effects_message_id
vrpn_float32 SurfaceKadhesionLateral
vrpn_float32 ff_jacobian[3][3]
vrpn_int32 setObjectIsTouchable_message_id
static vrpn_int32 decode_plane(const char *buffer, const vrpn_int32 len, vrpn_float32 *plane, vrpn_float32 *kspring, vrpn_float32 *kdamp, vrpn_float32 *fdyn, vrpn_float32 *fstat, vrpn_int32 *plane_index, vrpn_int32 *n_rec_cycles)
This structure is what is passed to a vrpn_Connection message callback.
All types of client/server/peer objects in VRPN should be derived from the vrpn_BaseClass type descri...
void(VRPN_CALLBACK * vrpn_FORCECHANGEHANDLER)(void *userdata, const vrpn_FORCECB info)
void(VRPN_CALLBACK * vrpn_FORCESCPHANDLER)(void *userdata, const vrpn_FORCESCPCB info)
class VRPN_API vrpn_Connection
void(VRPN_CALLBACK * vrpn_FORCEERRORHANDLER)(void *userdata, const vrpn_FORCEERRORCB info)