15 #ifndef INPUT_DEVICE_H
16 #define INPUT_DEVICE_H
18 #include <OpenThreads/Thread>
19 #include <OpenThreads/Mutex>
48 std::string configPath(
const std::string &ent =
"")
const;
52 virtual bool needsThread()
const;
56 bool isVarying()
const;
58 const std::string &getName()
const;
59 const osg::Matrix &getOffsetMat()
const;
60 void setOffsetMat(
const osg::Matrix &m);
62 std::string &getCalibrationPointName(
int i);
63 osg::Vec3 &getCalibrationPoint(
int i);
84 osg::Vec3 m_calibrationPoints[3];
85 std::string m_calibrationPointNames[3];
90 return m_buttonStates.size();
92 bool getButtonState(
size_t idx)
const;
96 return m_valuatorValues.size();
98 double getValuatorValue(
size_t idx)
const;
99 std::pair<double, double> getValuatorRange(
size_t idx)
const;
103 return m_bodyMatrices.size();
105 bool isBodyMatrixValid(
size_t idx)
const;
106 bool isBodyMatrixRelative(
size_t idx)
const;
107 const osg::Matrix &getBodyMatrix(
size_t idx)
const;
109 virtual void update();
114 std::vector<bool> m_buttonStatesFrame;
115 std::vector<double> m_valuatorValuesFrame;
116 std::vector<std::pair<double, double> > m_valuatorRangesFrame;
117 std::vector<bool> m_bodyMatricesValidFrame;
118 std::vector<bool> m_bodyMatricesRelativeFrame;
119 std::vector<osg::Matrix> m_bodyMatricesFrame;
131 virtual InputDevice *newInstance(
const std::string &name) = 0;
132 const std::string &name()
const;
142 template <
class Driver>
155 return new Driver(instanceName);
160 #define INPUT_PLUGIN(Driver) \
161 extern "C" PLUGINEXPORT opencover::DriverFactory<Driver> *newDriverFactory() \
163 return new opencover::DriverFactory<Driver>(#Driver); \
DriverFactory(const std::string &name)
Definition: inputdevice.h:147
std::string m_name
Definition: inputdevice.h:71
osg::Matrix m_offsetMatrix
Definition: inputdevice.h:72
Definition: buttondevice.h:27
bool loop_is_running
Definition: inputdevice.h:67
size_t numBodies() const
Definition: inputdevice.h:101
size_t numValuators() const
Definition: inputdevice.h:94
Definition: inputdevice.h:122
std::vector< bool > m_bodyMatricesRelative
Definition: inputdevice.h:82
Driver * newInstance(const std::string &instanceName)
Definition: inputdevice.h:152
std::vector< bool > m_bodyMatricesValid
Definition: inputdevice.h:81
The InputDevice class interacts with input hardware.
Definition: inputdevice.h:37
std::vector< bool > m_buttonStates
Definition: inputdevice.h:78
std::vector< double > m_valuatorValues
Definition: inputdevice.h:79
Definition: trackingbody.h:28
bool m_isVarying
Definition: inputdevice.h:73
const std::string m_config
Definition: inputdevice.h:70
size_t numButtons() const
Definition: inputdevice.h:88
Definition: inputdevice.h:143
void * CO_SHLIB_HANDLE
Definition: coVRDynLib.h:36
std::vector< osg::Matrix > m_bodyMatrices
Definition: inputdevice.h:83
The Input class.
Definition: input.h:38
Definition: valuator.h:27
bool m_is6Dof
Definition: inputdevice.h:74
bool m_valid
Definition: inputdevice.h:77
static osg::Matrix s_identity
Definition: inputdevice.h:66
const std::string & name() const
OpenThreads::Mutex m_mutex
If true, the main loop will run.
Definition: inputdevice.h:68
std::vector< std::pair< double, double > > m_valuatorRanges
Definition: inputdevice.h:80