1 #ifndef VRPN_DIRECTXFFJOYSTICK_H 2 #define VRPN_DIRECTXFFJOYSTICK_H 6 #if defined(_WIN32) && defined(VRPN_USE_DIRECTINPUT) 7 #ifndef DIRECTINPUT_VERSION 8 #define DIRECTINPUT_VERSION 0x0800 27 double readRate = 60,
double forceRate = 200);
29 ~vrpn_DirectXFFJoystick ();
43 struct timeval _timestamp;
44 struct timeval _forcetime;
45 struct timeval _last_report;
53 virtual int get_report(
void);
54 void clear_values(
void);
60 virtual void report (vrpn_uint32 class_of_service
66 void send_normalized_force(
double fx,
double fy);
68 HRESULT InitDirectJoystick(
void );
69 LPDIRECTINPUT8 _DirectInput;
70 LPDIRECTINPUTDEVICE8 _Joystick;
71 LPDIRECTINPUTEFFECT _ForceEffect;
72 static BOOL CALLBACK EnumJoysticksCallback(
const DIDEVICEINSTANCE* pdidInstance, VOID* selfPtr );
73 static BOOL CALLBACK EnumObjectsCallback(
const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* selfPtr );
84 virtual bool addObject(vrpn_int32 objNum, vrpn_int32 ParentNum=-1) {
100 virtual bool setVertex(vrpn_int32 objNum, vrpn_int32 vertNum,vrpn_float32 x,vrpn_float32 y,vrpn_float32 z) {
109 virtual bool setNormal(vrpn_int32 objNum, vrpn_int32 normNum,vrpn_float32 x,vrpn_float32 y,vrpn_float32 z) {
116 virtual bool setTriangle(vrpn_int32 objNum, vrpn_int32 triNum,vrpn_int32 vert0,vrpn_int32 vert1,vrpn_int32 vert2,
117 vrpn_int32 norm0=-1,vrpn_int32 norm1=-1,vrpn_int32 norm2=-1) {
124 virtual bool removeTriangle(vrpn_int32 objNum, vrpn_int32 triNum) {
133 virtual bool updateTrimeshChanges(vrpn_int32 objNum,vrpn_float32 kspring, vrpn_float32 kdamp, vrpn_float32 fdyn, vrpn_float32 fstat) {
165 virtual bool setObjectOrientation(vrpn_int32 objNum, vrpn_float32 axis[3], vrpn_float32 angle) {
173 virtual bool setObjectScale(vrpn_int32 objNum, vrpn_float32 Scale[3]) {
197 virtual bool moveToParent(vrpn_int32 objNum, vrpn_int32 ParentNum) {
205 virtual bool setHapticOrigin(vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 angle) {
221 virtual bool setSceneOrigin(vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 angle) {
virtual bool setVertex(vrpn_int32 objNum, vrpn_int32 vertNum, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)=0
const vrpn_uint32 vrpn_CONNECTION_LOW_LATENCY
virtual void report_changes(vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW)
Send a report only if something has changed (for servers) Optionally, tell what time to stamp the val...
virtual bool setHapticScale(vrpn_float32 Scale)=0
virtual bool setObjectPosition(vrpn_int32 objNum, vrpn_float32 Pos[3])=0
virtual bool moveToParent(vrpn_int32 objNum, vrpn_int32 ParentNum)=0
Functions to organize the scene.
virtual bool clearTrimesh(vrpn_int32 objNum)=0
virtual bool updateTrimeshChanges(vrpn_int32 objNum, vrpn_float32 kspring, vrpn_float32 kdamp, vrpn_float32 fdyn, vrpn_float32 fstat)=0
virtual bool setTrimeshType(vrpn_int32 objNum, vrpn_int32 type)=0
Generic connection class not specific to the transport mechanism.
virtual void report(vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW)
Send a report whether something has changed or not (for servers) Optionally, tell what time to stamp ...
virtual void mainloop()=0
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
virtual bool setTriangle(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)=0
virtual bool removeObject(vrpn_int32 objNum)=0
virtual bool setNormal(vrpn_int32 objNum, vrpn_int32 normNum, vrpn_float32 x, vrpn_float32 y, vrpn_float32 z)=0
This structure is what is passed to a vrpn_Connection message callback.
virtual bool setTrimeshTransform(vrpn_int32 objNum, vrpn_float32 homMatrix[16])=0
virtual bool setHapticOrigin(vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 angle)=0
virtual bool removeTriangle(vrpn_int32 objNum, vrpn_int32 triNum)=0
int send_text_message(const char *msg, struct timeval timestamp, vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL, vrpn_uint32 level=0)
Sends a NULL-terminated text message from the device d_sender_id.
virtual bool setObjectIsTouchable(vrpn_int32 objNum, vrpn_bool IsTouchable=true)=0
virtual bool setSceneOrigin(vrpn_float32 Pos[3], vrpn_float32 axis[3], vrpn_float32 angle)=0
virtual bool setObjectOrientation(vrpn_int32 objNum, vrpn_float32 axis[3], vrpn_float32 angle)=0
virtual bool addObjectExScene(vrpn_int32 objNum)=0
#define vrpn_gettimeofday
virtual bool addObject(vrpn_int32 objNum, vrpn_int32 ParentNum=-1)=0
virtual bool setObjectScale(vrpn_int32 objNum, vrpn_float32 Scale[3])=0