1 #pragma once 2 #include <OgrePlatform.h> 3 4 // force feedback is only supported on linux. 5 #if OGRE_PLATFORM == OGRE_PLATFORM_LINUX 6 //#define ENABLE_FORCE_FEEDBACK 7 #endif 8 9 #ifdef ENABLE_FORCE_FEEDBACK 10 11 #include <fcntl.h> 12 #include <unistd.h> 13 #include <errno.h> 14 #include <string> 15 #include <iostream> 16 #include <linux/input.h> 17 18 class FORCEFEEDBACK 19 { 20 public: 21 FORCEFEEDBACK( std::string device, std::ostream & error_output, std::ostream & info_output); ~FORCEFEEDBACK()22 ~FORCEFEEDBACK() {} 23 void update( double force, double * position, double dt, std::ostream & error_output ); disable()24 void disable() { enabled = false; } 25 private: 26 std::string device_name; 27 bool enabled; 28 bool stop_and_play; 29 int device_handle; 30 int axis_code, axis_min, axis_max; 31 struct ff_effect effect; 32 double lastforce; 33 }; 34 35 #endif // ENABLE_FORCE_FEEDBACK 36