00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __SPACEWAREHAPTICSDEVICE_H__
00030 #define __SPACEWAREHAPTICSDEVICE_H__
00031
00032 #include "SpaceWareSensor.h"
00033 #include "H3DFakeHapticsDevice.h"
00034
00035 namespace H3D {
00036
00044 class H3DAPI_API SpaceWareHapticsDevice: public H3DFakeHapticsDevice {
00045 public:
00050 class SetMainButton: public TypedField< ThreadSafeSField< SFBool >,
00051 Types< SFInt32 > > {
00052 virtual void update();
00053 };
00054
00056 SpaceWareHapticsDevice(
00057 Inst< ThreadSafeSField< SFVec3f > > _devicePosition = 0,
00058 Inst< ThreadSafeSField< SFRotation > > _deviceOrientation = 0,
00059 Inst< TrackerPosition > _trackerPosition = 0,
00060 Inst< TrackerOrientation > _trackerOrientation = 0,
00061 Inst< PosCalibration > _positionCalibration = 0,
00062 Inst< OrnCalibration > _orientationCalibration = 0,
00063 Inst< SFVec3f > _proxyPosition = 0,
00064 Inst< WeightedProxy > _weightedProxyPosition = 0,
00065 Inst< SFFloat > _proxyWeighting = 0,
00066 Inst< ThreadSafeSField< SFBool > > _main_button = 0,
00067 Inst< ThreadSafeSField< SFVec3f > > _force = 0,
00068 Inst< ThreadSafeSField< SFVec3f > > _torque = 0,
00069 Inst< SFInt32 > _inputDOF = 0,
00070 Inst< SFInt32 > _outputDOF = 0,
00071 Inst< SFInt32 > _hapticsRate = 0,
00072 Inst< SFNode > _stylus = 0,
00073 Inst< SFBool > _initialized = 0,
00074 Inst< ThreadSafeSField< SFVec3f > > _set_devicePosition = 0,
00075 Inst< ThreadSafeSField< SFRotation > > _set_deviceOrientation = 0,
00076 Inst< SetMainButton > _set_mainButton = 0,
00077 Inst< SFFloat > _posSensitivity = 0,
00078 Inst< SFFloat > _ornSensitivity = 0);
00079
00082 virtual void updateDeviceValues() {
00083 H3DFakeHapticsDevice::updateDeviceValues();
00084 vector< H3DHapticsDevice * > hds;
00085 #ifdef USE_HAPTICS
00086 TraverseInfo ti( hds );
00087 spaceware_sensor->traverseSG( ti );
00088 #endif
00089 }
00090
00092 static H3DNodeDatabase database;
00093
00101 auto_ptr< SFFloat > posSensitivity;
00102
00110 auto_ptr< SFFloat > ornSensitivity;
00111
00112 protected:
00114 AutoRef< SpaceWareSensor > spaceware_sensor;
00115 };
00116 }
00117
00118 #endif