mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-05-10 14:51:06 +02:00
expose Controller.triggerHapticPulse to javascript (currently does nothing)
This commit is contained in:
parent
35b80ba066
commit
6ca02dcad2
5 changed files with 71 additions and 53 deletions
|
@ -55,6 +55,9 @@ public:
|
|||
|
||||
const QString& getName() const { return _name; }
|
||||
|
||||
// By default, Input Devices do not support haptics
|
||||
virtual bool triggerHapticPulse(float strength, float duration, bool leftHand) { return false; }
|
||||
|
||||
// Update call MUST be called once per simulation loop
|
||||
// It takes care of updating the action states and deltas
|
||||
virtual void update(float deltaTime, const InputCalibrationData& inputCalibrationData) {};
|
||||
|
|
|
@ -140,6 +140,10 @@ namespace controller {
|
|||
return DependencyManager::get<UserInputMapper>()->getActionNames();
|
||||
}
|
||||
|
||||
bool ScriptingInterface::triggerHapticPulse(unsigned int device, float strength, float duration, bool leftHand) const {
|
||||
return DependencyManager::get<UserInputMapper>()->triggerHapticPulse(device, strength, duration, leftHand);
|
||||
}
|
||||
|
||||
void ScriptingInterface::updateMaps() {
|
||||
QVariantMap newHardware;
|
||||
auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
|
||||
|
|
|
@ -84,6 +84,8 @@ namespace controller {
|
|||
Q_INVOKABLE Pose getPoseValue(const int& source) const;
|
||||
Q_INVOKABLE Pose getPoseValue(StandardPoseChannel source, uint16_t device = 0) const;
|
||||
|
||||
Q_INVOKABLE bool triggerHapticPulse(unsigned int device, float strength, float duration, bool leftHand = true) const;
|
||||
|
||||
Q_INVOKABLE QObject* newMapping(const QString& mappingName = QUuid::createUuid().toString());
|
||||
Q_INVOKABLE void enableMapping(const QString& mappingName, bool enable = true);
|
||||
Q_INVOKABLE void disableMapping(const QString& mappingName) { enableMapping(mappingName, false); }
|
||||
|
|
|
@ -336,6 +336,14 @@ QVector<QString> UserInputMapper::getActionNames() const {
|
|||
return result;
|
||||
}
|
||||
|
||||
bool UserInputMapper::triggerHapticPulse(uint16 deviceID, float strength, float duration, bool leftHand) {
|
||||
Locker locker(_lock);
|
||||
if (_registeredDevices.find(deviceID) != _registeredDevices.end()) {
|
||||
return _registeredDevices[deviceID]->triggerHapticPulse(strength, duration, leftHand);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int actionMetaTypeId = qRegisterMetaType<Action>();
|
||||
int inputMetaTypeId = qRegisterMetaType<Input>();
|
||||
int inputPairMetaTypeId = qRegisterMetaType<Input::NamedPair>();
|
||||
|
|
|
@ -89,6 +89,7 @@ namespace controller {
|
|||
void setActionState(Action action, float value) { _actionStates[toInt(action)] = value; }
|
||||
void deltaActionState(Action action, float delta) { _actionStates[toInt(action)] += delta; }
|
||||
void setActionState(Action action, const Pose& value) { _poseStates[toInt(action)] = value; }
|
||||
bool triggerHapticPulse(uint16 deviceID, float strength, float duration, bool leftHand);
|
||||
|
||||
static Input makeStandardInput(controller::StandardButtonChannel button);
|
||||
static Input makeStandardInput(controller::StandardAxisChannel axis);
|
||||
|
|
Loading…
Reference in a new issue