12 #ifndef hifi_NeuronPlugin_h
13 #define hifi_NeuronPlugin_h
15 #include <controllers/InputDevice.h>
16 #include <controllers/StandardControls.h>
17 #include <plugins/InputPlugin.h>
19 struct _BvhDataHeaderEx;
20 void FrameDataReceivedCallback(
void* context,
void* sender, _BvhDataHeaderEx* header,
float* data);
23 class NeuronPlugin :
public InputPlugin {
26 friend void FrameDataReceivedCallback(
void* context,
void* sender, _BvhDataHeaderEx* header,
float* data);
29 virtual void init()
override;
30 virtual bool isSupported()
const override;
31 virtual const QString getName()
const override {
return NAME; }
32 const QString getID()
const override {
return NEURON_ID_STRING; }
33 bool isRunning()
const override {
return _active && _enabled; }
34 virtual bool activate()
override;
35 virtual void deactivate()
override;
37 virtual void pluginFocusOutEvent()
override { _inputDevice->focusOutEvent(); }
38 virtual void pluginUpdate(
float deltaTime,
const controller::InputCalibrationData& inputCalibrationData)
override;
40 virtual void saveSettings()
const override;
41 virtual void loadSettings()
override;
50 class InputDevice :
public controller::InputDevice {
52 friend class NeuronPlugin;
54 InputDevice() : controller::InputDevice(
"Neuron") {}
55 virtual ~InputDevice() =
default;
58 virtual controller::Input::NamedVector getAvailableInputs()
const override;
59 virtual QString getDefaultMappingConfig()
const override;
60 virtual void update(
float deltaTime,
const controller::InputCalibrationData& inputCalibrationData)
override {};
61 virtual void focusOutEvent()
override {};
63 void update(
float deltaTime,
const controller::InputCalibrationData& inputCalibrationData,
const std::vector<NeuronPlugin::NeuronJoint>& joints,
const std::vector<NeuronPlugin::NeuronJoint>& prevJoints);
66 std::shared_ptr<InputDevice> _inputDevice { std::make_shared<InputDevice>() };
68 static const char* NAME;
69 static const char* NEURON_ID_STRING;
71 QString _serverAddress;
76 std::mutex _jointsMutex;
79 std::vector<NeuronJoint> _joints;
82 std::vector<NeuronJoint> _prevJoints;