Overte C++ Documentation
plugins/src/plugins/InputPlugin.h
1 //
2 // InputPlugin.h
3 // input-plugins/src/input-plugins
4 //
5 // Created by Sam Gondelman on 7/13/2015
6 // Copyright 2015 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 #pragma once
12 
13 #include "Plugin.h"
14 #include <QJsonObject>
15 
16 namespace controller {
17  struct InputCalibrationData;
18 }
19 
20 class InputPlugin : public Plugin {
21 public:
22  virtual void pluginFocusOutEvent() = 0;
23  virtual void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) = 0;
24 
25  // Some input plugins are comprised of multiple subdevices (SDL2, for instance).
26  // If an input plugin is only a single device, it will only return it's primary name.
27  virtual QStringList getSubdeviceNames() { return { getName() }; };
28  virtual void setConfigurationSettings(const QJsonObject configurationSettings) { }
29  virtual QJsonObject configurationSettings() { return QJsonObject(); }
30  virtual QString configurationLayout() { return QString(); }
31  virtual QString getDeviceName() { return QString(); }
32  virtual void calibrate() {}
33  virtual bool uncalibrate() { return false; }
34  virtual bool configurable() { return false; }
35  virtual bool isHandController() const { return false; }
36  virtual bool isHeadController() const { return false; }
37 };