mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 17:10:41 +02:00
Add Leap Motion settings
This commit is contained in:
parent
170cf8156f
commit
febd0eaf98
4 changed files with 84 additions and 2 deletions
|
@ -17,7 +17,7 @@ PreferencesDialog {
|
||||||
id: root
|
id: root
|
||||||
objectName: "GeneralPreferencesDialog"
|
objectName: "GeneralPreferencesDialog"
|
||||||
title: "General Settings"
|
title: "General Settings"
|
||||||
showCategories: ["UI", "Snapshots", "Scripts", "Privacy", "Octree", "HMD", "Sixense Controllers", "Perception Neuron", "Kinect"]
|
showCategories: ["UI", "Snapshots", "Scripts", "Privacy", "Octree", "HMD", "Sixense Controllers", "Perception Neuron", "Kinect", "Leap Motion"]
|
||||||
property var settings: Settings {
|
property var settings: Settings {
|
||||||
category: root.objectName
|
category: root.objectName
|
||||||
property alias x: root.x
|
property alias x: root.x
|
||||||
|
|
|
@ -32,6 +32,6 @@ StackView {
|
||||||
TabletPreferencesDialog {
|
TabletPreferencesDialog {
|
||||||
id: root
|
id: root
|
||||||
objectName: "TabletGeneralPreferences"
|
objectName: "TabletGeneralPreferences"
|
||||||
showCategories: ["UI", "Snapshots", "Scripts", "Privacy", "Octree", "HMD", "Sixense Controllers", "Perception Neuron", "Kinect", "Vive Pucks Configuration"]
|
showCategories: ["UI", "Snapshots", "Scripts", "Privacy", "Octree", "HMD", "Sixense Controllers", "Perception Neuron", "Kinect", "Vive Pucks Configuration", "Leap Motion"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,12 +12,21 @@
|
||||||
|
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
|
|
||||||
|
#include <controllers/UserInputMapper.h>
|
||||||
|
#include <Preferences.h>
|
||||||
|
#include <SettingHandle.h>
|
||||||
|
|
||||||
Q_DECLARE_LOGGING_CATEGORY(inputplugins)
|
Q_DECLARE_LOGGING_CATEGORY(inputplugins)
|
||||||
Q_LOGGING_CATEGORY(inputplugins, "hifi.inputplugins")
|
Q_LOGGING_CATEGORY(inputplugins, "hifi.inputplugins")
|
||||||
|
|
||||||
const char* LeapMotionPlugin::NAME = "Leap Motion";
|
const char* LeapMotionPlugin::NAME = "Leap Motion";
|
||||||
const char* LeapMotionPlugin::LEAPMOTION_ID_STRING = "Leap Motion";
|
const char* LeapMotionPlugin::LEAPMOTION_ID_STRING = "Leap Motion";
|
||||||
|
|
||||||
|
const bool DEFAULT_ENABLED = false;
|
||||||
|
const char* SENSOR_ON_DESKTOP = "Desktop";
|
||||||
|
const char* SENSOR_ON_HMD = "HMD";
|
||||||
|
const char* DEFAULT_SENSOR_LOCATION = SENSOR_ON_DESKTOP;
|
||||||
|
|
||||||
void LeapMotionPlugin::pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) {
|
void LeapMotionPlugin::pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
@ -29,3 +38,66 @@ controller::Input::NamedVector LeapMotionPlugin::InputDevice::getAvailableInputs
|
||||||
|
|
||||||
return availableInputs;
|
return availableInputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LeapMotionPlugin::init() {
|
||||||
|
loadSettings();
|
||||||
|
|
||||||
|
auto preferences = DependencyManager::get<Preferences>();
|
||||||
|
static const QString LEAPMOTION_PLUGIN { "Leap Motion" };
|
||||||
|
{
|
||||||
|
auto getter = [this]()->bool { return _enabled; };
|
||||||
|
auto setter = [this](bool value) {
|
||||||
|
_enabled = value;
|
||||||
|
saveSettings();
|
||||||
|
if (!_enabled) {
|
||||||
|
auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
|
||||||
|
userInputMapper->withLock([&, this]() {
|
||||||
|
_inputDevice->clearState();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
auto preference = new CheckPreference(LEAPMOTION_PLUGIN, "Enabled", getter, setter);
|
||||||
|
preferences->addPreference(preference);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
auto getter = [this]()->QString { return _sensorLocation; };
|
||||||
|
auto setter = [this](QString value) {
|
||||||
|
_sensorLocation = value;
|
||||||
|
saveSettings();
|
||||||
|
// TODO: Apply setting value.
|
||||||
|
};
|
||||||
|
auto preference = new ComboBoxPreference(LEAPMOTION_PLUGIN, "Sensor location", getter, setter);
|
||||||
|
QStringList list = { SENSOR_ON_DESKTOP, SENSOR_ON_HMD };
|
||||||
|
preference->setItems(list);
|
||||||
|
preferences->addPreference(preference);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* SETTINGS_ENABLED_KEY = "enabled";
|
||||||
|
const char* SETTINGS_SENSOR_LOCATION_KEY = "sensorLocation";
|
||||||
|
|
||||||
|
void LeapMotionPlugin::saveSettings() const {
|
||||||
|
Settings settings;
|
||||||
|
QString idString = getID();
|
||||||
|
settings.beginGroup(idString);
|
||||||
|
{
|
||||||
|
settings.setValue(QString(SETTINGS_ENABLED_KEY), _enabled);
|
||||||
|
settings.setValue(QString(SETTINGS_SENSOR_LOCATION_KEY), _sensorLocation);
|
||||||
|
}
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LeapMotionPlugin::loadSettings() {
|
||||||
|
Settings settings;
|
||||||
|
QString idString = getID();
|
||||||
|
settings.beginGroup(idString);
|
||||||
|
{
|
||||||
|
_enabled = settings.value(SETTINGS_ENABLED_KEY, QVariant(DEFAULT_ENABLED)).toBool();
|
||||||
|
_sensorLocation = settings.value(SETTINGS_SENSOR_LOCATION_KEY, QVariant(DEFAULT_SENSOR_LOCATION)).toString();
|
||||||
|
}
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LeapMotionPlugin::InputDevice::clearState() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
|
@ -26,10 +26,18 @@ public:
|
||||||
virtual const QString getName() const override { return NAME; }
|
virtual const QString getName() const override { return NAME; }
|
||||||
const QString getID() const override { return LEAPMOTION_ID_STRING; }
|
const QString getID() const override { return LEAPMOTION_ID_STRING; }
|
||||||
|
|
||||||
|
virtual void init() override;
|
||||||
|
|
||||||
|
virtual void saveSettings() const override;
|
||||||
|
virtual void loadSettings() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static const char* NAME;
|
static const char* NAME;
|
||||||
static const char* LEAPMOTION_ID_STRING;
|
static const char* LEAPMOTION_ID_STRING;
|
||||||
|
|
||||||
|
bool _enabled { false };
|
||||||
|
QString _sensorLocation;
|
||||||
|
|
||||||
class InputDevice : public controller::InputDevice {
|
class InputDevice : public controller::InputDevice {
|
||||||
public:
|
public:
|
||||||
friend class LeapMotionPlugin;
|
friend class LeapMotionPlugin;
|
||||||
|
@ -38,6 +46,8 @@ protected:
|
||||||
|
|
||||||
// Device functions
|
// Device functions
|
||||||
virtual controller::Input::NamedVector getAvailableInputs() const override;
|
virtual controller::Input::NamedVector getAvailableInputs() const override;
|
||||||
|
|
||||||
|
void clearState();
|
||||||
};
|
};
|
||||||
|
|
||||||
std::shared_ptr<InputDevice> _inputDevice{ std::make_shared<InputDevice>() };
|
std::shared_ptr<InputDevice> _inputDevice{ std::make_shared<InputDevice>() };
|
||||||
|
|
Loading…
Reference in a new issue