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