From 691e5f3be0880f54872e4143f0e2dc05891cb5d7 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 26 Oct 2015 11:07:54 -0700 Subject: [PATCH 1/6] Remove new/old value division from endpoint::apply --- .../src/controllers/UserInputMapper.cpp | 4 ++-- .../controllers/src/controllers/impl/Endpoint.h | 12 ++++++------ .../impl/endpoints/ActionEndpoint.cpp | 6 +++--- .../controllers/impl/endpoints/ActionEndpoint.h | 4 ++-- .../controllers/impl/endpoints/AnyEndpoint.cpp | 2 +- .../src/controllers/impl/endpoints/AnyEndpoint.h | 2 +- .../controllers/impl/endpoints/ArrayEndpoint.h | 4 ++-- .../impl/endpoints/CompositeEndpoint.cpp | 2 +- .../impl/endpoints/CompositeEndpoint.h | 2 +- .../controllers/impl/endpoints/InputEndpoint.h | 4 ++-- .../src/controllers/impl/endpoints/JSEndpoint.h | 2 +- .../impl/endpoints/ScriptEndpoint.cpp | 15 +++++++-------- .../controllers/impl/endpoints/ScriptEndpoint.h | 4 ++-- .../impl/endpoints/StandardEndpoint.h | 16 ++++++++-------- 14 files changed, 39 insertions(+), 40 deletions(-) diff --git a/libraries/controllers/src/controllers/UserInputMapper.cpp b/libraries/controllers/src/controllers/UserInputMapper.cpp index 2579c7dbec..4a055e3c3f 100755 --- a/libraries/controllers/src/controllers/UserInputMapper.cpp +++ b/libraries/controllers/src/controllers/UserInputMapper.cpp @@ -529,7 +529,7 @@ bool UserInputMapper::applyRoute(const Route::Pointer& route, bool force) { } } // no filters yet for pose - destination->apply(value, Pose(), source); + destination->apply(value, source); } else { // Fetch the value, may have been overriden by previous loopback routes float value = getValue(source); @@ -546,7 +546,7 @@ bool UserInputMapper::applyRoute(const Route::Pointer& route, bool force) { qCDebug(controllers) << "Filtered value was " << value; } - destination->apply(value, 0, source); + destination->apply(value, source); } return true; } diff --git a/libraries/controllers/src/controllers/impl/Endpoint.h b/libraries/controllers/src/controllers/impl/Endpoint.h index f5fe058d82..5dd3f6adb4 100644 --- a/libraries/controllers/src/controllers/impl/Endpoint.h +++ b/libraries/controllers/src/controllers/impl/Endpoint.h @@ -37,9 +37,9 @@ namespace controller { Endpoint(const Input& input) : _input(input) {} virtual float value() = 0; - virtual void apply(float newValue, float oldValue, const Pointer& source) = 0; + virtual void apply(float value, const Pointer& source) = 0; virtual Pose pose() { return Pose(); } - virtual void apply(const Pose& newValue, const Pose& oldValue, const Pointer& source) {} + virtual void apply(const Pose& value, const Pointer& source) {} virtual const bool isPose() { return _input.isPose(); } virtual bool writeable() const { return true; } @@ -58,7 +58,7 @@ namespace controller { : Endpoint(Input::INVALID_INPUT), _readLambda(readLambda), _writeLambda(writeLambda) { } virtual float value() override { return _readLambda(); } - virtual void apply(float newValue, float oldValue, const Pointer& source) override { _writeLambda(newValue); } + virtual void apply(float value, const Pointer& source) override { _writeLambda(value); } private: ReadLambda _readLambda; @@ -73,11 +73,11 @@ namespace controller { } virtual float value() override { return _currentValue; } - virtual void apply(float newValue, float oldValue, const Pointer& source) override { _currentValue = newValue; } + virtual void apply(float value, const Pointer& source) override { _currentValue = value; } virtual Pose pose() override { return _currentPose; } - virtual void apply(const Pose& newValue, const Pose& oldValue, const Pointer& source) override { - _currentPose = newValue; + virtual void apply(const Pose& value, const Pointer& source) override { + _currentPose = value; } protected: float _currentValue { 0.0f }; diff --git a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp index d07ef38185..b671d8e93c 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp +++ b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp @@ -14,7 +14,7 @@ using namespace controller; -void ActionEndpoint::apply(float newValue, float oldValue, const Pointer& source) { +void ActionEndpoint::apply(float newValue, const Pointer& source) { _currentValue += newValue; if (_input != Input::INVALID_INPUT) { auto userInputMapper = DependencyManager::get(); @@ -22,8 +22,8 @@ void ActionEndpoint::apply(float newValue, float oldValue, const Pointer& source } } -void ActionEndpoint::apply(const Pose& newValue, const Pose& oldValue, const Pointer& source) { - _currentPose = newValue; +void ActionEndpoint::apply(const Pose& value, const Pointer& source) { + _currentPose = value; if (!_currentPose.isValid()) { return; } diff --git a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.h index eaae1e3798..574fdcedb5 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.h @@ -24,10 +24,10 @@ public: ActionEndpoint(const Input& id = Input::INVALID_INPUT) : Endpoint(id) { } virtual float value() override { return _currentValue; } - virtual void apply(float newValue, float oldValue, const Pointer& source) override; + virtual void apply(float newValue, const Pointer& source) override; virtual Pose pose() override { return _currentPose; } - virtual void apply(const Pose& newValue, const Pose& oldValue, const Pointer& source) override; + virtual void apply(const Pose& value, const Pointer& source) override; virtual void reset() override; diff --git a/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.cpp b/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.cpp index b3310e4424..24f3479ea8 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.cpp +++ b/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.cpp @@ -38,7 +38,7 @@ float AnyEndpoint::value() { return result; } -void AnyEndpoint::apply(float newValue, float oldValue, const Endpoint::Pointer& source) { +void AnyEndpoint::apply(float newValue, const Endpoint::Pointer& source) { qFatal("AnyEndpoint is read only"); } diff --git a/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.h index 25db6a5a2a..86dd057414 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/AnyEndpoint.h @@ -19,7 +19,7 @@ class AnyEndpoint : public Endpoint { public: AnyEndpoint(Endpoint::List children); virtual float value() override; - virtual void apply(float newValue, float oldValue, const Endpoint::Pointer& source) override; + virtual void apply(float newValue, const Endpoint::Pointer& source) override; virtual bool writeable() const override; virtual bool readable() const override; diff --git a/libraries/controllers/src/controllers/impl/endpoints/ArrayEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/ArrayEndpoint.h index 676f43868a..79bb604ec0 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ArrayEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/ArrayEndpoint.h @@ -24,10 +24,10 @@ public: return 0.0; } - virtual void apply(float newValue, float oldValue, const Endpoint::Pointer& source) override { + virtual void apply(float value, const Endpoint::Pointer& source) override { for (auto& child : _children) { if (child->writeable()) { - child->apply(newValue, oldValue, source); + child->apply(value, source); } } } diff --git a/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.cpp b/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.cpp index 9d89a7d2b3..e5088ef72c 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.cpp +++ b/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.cpp @@ -25,7 +25,7 @@ float CompositeEndpoint::value() { return result; } -void CompositeEndpoint::apply(float newValue, float oldValue, const Pointer& source) { +void CompositeEndpoint::apply(float newValue, const Pointer& source) { // Composites are read only } diff --git a/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.h index b525a2e4ab..ab8b97aa50 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/CompositeEndpoint.h @@ -18,7 +18,7 @@ namespace controller { CompositeEndpoint(Endpoint::Pointer first, Endpoint::Pointer second); virtual float value() override; - virtual void apply(float newValue, float oldValue, const Pointer& source) override; + virtual void apply(float newValue, const Pointer& source) override; }; } diff --git a/libraries/controllers/src/controllers/impl/endpoints/InputEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/InputEndpoint.h index 195cd33683..d58f0c2e73 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/InputEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/InputEndpoint.h @@ -22,9 +22,9 @@ public: virtual float value() override; // FIXME need support for writing back to vibration / force feedback effects - virtual void apply(float newValue, float oldValue, const Pointer& source) override {} + virtual void apply(float newValue, const Pointer& source) override {} virtual Pose pose() override; - virtual void apply(const Pose& newValue, const Pose& oldValue, const Pointer& source) override { } + virtual void apply(const Pose& value, const Pointer& source) override { } virtual bool writeable() const { return false; } virtual bool readable() const { return !_read; } diff --git a/libraries/controllers/src/controllers/impl/endpoints/JSEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/JSEndpoint.h index 38ac92bfb6..27f17b5cd3 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/JSEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/JSEndpoint.h @@ -28,7 +28,7 @@ public: return result; } - virtual void apply(float newValue, float oldValue, const Pointer& source) { + virtual void apply(float newValue, const Pointer& source) { _callable.call(QJSValueList({ QJSValue(newValue) })); } diff --git a/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.cpp b/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.cpp index 069bcb3c00..d9b4a5fc59 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.cpp +++ b/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.cpp @@ -26,22 +26,21 @@ void ScriptEndpoint::updateValue() { _lastValueRead = (float)_callable.call().toNumber(); } -void ScriptEndpoint::apply(float newValue, float oldValue, const Pointer& source) { - if (newValue == _lastValueWritten) { +void ScriptEndpoint::apply(float value, const Pointer& source) { + if (value == _lastValueWritten) { return; } - internalApply(newValue, oldValue, source->getInput().getID()); + internalApply(value, source->getInput().getID()); } -void ScriptEndpoint::internalApply(float newValue, float oldValue, int sourceID) { - _lastValueWritten = newValue; +void ScriptEndpoint::internalApply(float value, int sourceID) { + _lastValueWritten = value; if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "internalApply", Qt::QueuedConnection, - Q_ARG(float, newValue), - Q_ARG(float, oldValue), + Q_ARG(float, value), Q_ARG(int, sourceID)); return; } _callable.call(QScriptValue(), - QScriptValueList({ QScriptValue(newValue), QScriptValue(oldValue), QScriptValue(sourceID) })); + QScriptValueList({ QScriptValue(value), QScriptValue(sourceID) })); } diff --git a/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.h index a56ac472be..23f77892c6 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/ScriptEndpoint.h @@ -24,11 +24,11 @@ public: } virtual float value(); - virtual void apply(float newValue, float oldValue, const Pointer& source); + virtual void apply(float newValue, const Pointer& source); protected: Q_INVOKABLE void updateValue(); - Q_INVOKABLE virtual void internalApply(float newValue, float oldValue, int sourceID); + Q_INVOKABLE virtual void internalApply(float newValue, int sourceID); private: QScriptValue _callable; float _lastValueRead { 0.0f }; diff --git a/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h index 44803a22fd..74adaf825d 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h @@ -20,8 +20,8 @@ public: virtual bool writeable() const override { return !_written; } virtual bool readable() const override { return !_read; } virtual void reset() override { - apply(0.0f, 0.0f, Endpoint::Pointer()); - apply(Pose(), Pose(), Endpoint::Pointer()); + apply(0.0f, Endpoint::Pointer()); + apply(Pose(), Endpoint::Pointer()); _written = _read = false; } @@ -30,12 +30,12 @@ public: return VirtualEndpoint::value(); } - virtual void apply(float newValue, float oldValue, const Pointer& source) override { + virtual void apply(float value, const Pointer& source) override { // For standard endpoints, the first NON-ZERO write counts. - if (newValue != 0.0) { + if (value != 0.0) { _written = true; } - VirtualEndpoint::apply(newValue, oldValue, source); + VirtualEndpoint::apply(value, source); } virtual Pose pose() override { @@ -43,11 +43,11 @@ public: return VirtualEndpoint::pose(); } - virtual void apply(const Pose& newValue, const Pose& oldValue, const Pointer& source) override { - if (newValue != Pose()) { + virtual void apply(const Pose& value, const Pointer& source) override { + if (value != Pose()) { _written = true; } - VirtualEndpoint::apply(newValue, oldValue, source); + VirtualEndpoint::apply(value, source); } private: From 9bead94faee6fc225e23959dd7af3876e22c14a0 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 26 Oct 2015 12:07:12 -0700 Subject: [PATCH 2/6] Remove cmake debug code --- tests/render-utils/CMakeLists.txt | 2 -- tests/shaders/CMakeLists.txt | 2 -- 2 files changed, 4 deletions(-) diff --git a/tests/render-utils/CMakeLists.txt b/tests/render-utils/CMakeLists.txt index 62ed401d2e..b56297d05e 100644 --- a/tests/render-utils/CMakeLists.txt +++ b/tests/render-utils/CMakeLists.txt @@ -8,6 +8,4 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") # link in the shared libraries link_hifi_libraries(render-utils gpu shared) -message(${PROJECT_BINARY_DIR}) - copy_dlls_beside_windows_executable() diff --git a/tests/shaders/CMakeLists.txt b/tests/shaders/CMakeLists.txt index 9b2a079e88..42766c98e3 100644 --- a/tests/shaders/CMakeLists.txt +++ b/tests/shaders/CMakeLists.txt @@ -17,6 +17,4 @@ include_directories("${PROJECT_BINARY_DIR}/../../libraries/render-utils/") include_directories("${PROJECT_BINARY_DIR}/../../libraries/entities-renderer/") include_directories("${PROJECT_BINARY_DIR}/../../libraries/model/") -message(${PROJECT_BINARY_DIR}) - copy_dlls_beside_windows_executable() From d91d0a20271c0ffdc063e37ea20c59b9080c7815 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 26 Oct 2015 12:47:31 -0700 Subject: [PATCH 3/6] Fixing spray can script --- examples/toybox/spray_paint/sprayPaintCan.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/examples/toybox/spray_paint/sprayPaintCan.js b/examples/toybox/spray_paint/sprayPaintCan.js index 4e6719af76..60fd12b975 100644 --- a/examples/toybox/spray_paint/sprayPaintCan.js +++ b/examples/toybox/spray_paint/sprayPaintCan.js @@ -33,12 +33,17 @@ var MIN_POINT_DISTANCE = 0.01; var STROKE_WIDTH = 0.02; + var TRIGGER_CONTROLS = [ + Controller.Standard.LT, + Controller.Standard.RT, + ]; + this.setRightHand = function () { - this.hand = 'RIGHT'; + this.hand = 1; } this.setLeftHand = function () { - this.hand = 'LEFT'; + this.hand = 0; } this.startNearGrab = function () { @@ -46,11 +51,7 @@ } this.toggleWithTriggerPressure = function () { - var handClickString = this.whichHand + "_HAND_CLICK"; - - var handClick = Controller.findAction(handClickString); - - this.triggerValue = Controller.getActionValue(handClick); + this.triggerValue = Controller.getValue(TRIGGER_CONTROLS[this.whichHand]); if (this.triggerValue < DISABLE_SPRAY_THRESHOLD && this.spraying === true) { this.spraying = false; this.disableStream(); From 485e36d824c5d843beec47cde01c525ba272ddca Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 26 Oct 2015 17:11:46 -0700 Subject: [PATCH 4/6] Bug fix for hand IK when using the Owen avatar. The IK was assiming that the "Hips" bone index was always 0. This was not the case for Owen. Now we lookup the Hips index and cache it for use during the hipsOffset computation. --- libraries/animation/src/AnimInverseKinematics.cpp | 4 +++- libraries/animation/src/AnimInverseKinematics.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 516d4116d8..42e9472819 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -366,7 +366,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars if (offsetLength > MIN_HIPS_OFFSET_LENGTH) { // but only if offset is long enough float scaleFactor = ((offsetLength - MIN_HIPS_OFFSET_LENGTH) / offsetLength); - _relativePoses[0].trans = underPoses[0].trans + scaleFactor * _hipsOffset; + _relativePoses[_hipsIndex].trans = underPoses[_hipsIndex].trans + scaleFactor * _hipsOffset; } solveWithCyclicCoordinateDescent(targets); @@ -758,8 +758,10 @@ void AnimInverseKinematics::setSkeletonInternal(AnimSkeleton::ConstPointer skele if (skeleton) { initConstraints(); _headIndex = _skeleton->nameToJointIndex("Head"); + _hipsIndex = _skeleton->nameToJointIndex("Hips"); } else { clearConstraints(); _headIndex = -1; + _hipsIndex = -1; } } diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index b96dd3711e..f8f7fd9e9e 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -80,6 +80,7 @@ protected: // experimental data for moving hips during IK int _headIndex = -1; + int _hipsIndex = -1; glm::vec3 _hipsOffset = Vectors::ZERO; // _maxTargetIndex is tracked to help optimize the recalculation of absolute poses From 5bce95189b5a0716185d8a134f00ad468e7b66dc Mon Sep 17 00:00:00 2001 From: AlessandroSigna Date: Mon, 26 Oct 2015 18:14:57 -0700 Subject: [PATCH 5/6] fix keyboard mapping (keyboardMouse.js) --- .../resources/controllers/keyboardMouse.json | 51 ++++++++++++++----- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/interface/resources/controllers/keyboardMouse.json b/interface/resources/controllers/keyboardMouse.json index 7b9a8d733a..6ea1c42b1e 100644 --- a/interface/resources/controllers/keyboardMouse.json +++ b/interface/resources/controllers/keyboardMouse.json @@ -1,28 +1,53 @@ { "name": "Keyboard/Mouse to Actions", "channels": [ - { "from": "Keyboard.A", "when": "Keyboard.Shift", "to": "Actions.LATERAL_LEFT" }, - { "from": "Keyboard.D", "when": "Keyboard.Shift", "to": "Actions.LATERAL_RIGHT" }, - { "from": "Keyboard.A", "when": "Keyboard.RightMouseClick", "to": "Actions.LATERAL_LEFT" }, - { "from": "Keyboard.D", "when": "Keyboard.RightMouseClick", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.A", "when": "Keyboard.Shift", "to": "Actions.LATERAL_LEFT" }, + { "from": "Keyboard.D", "when": "Keyboard.Shift", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.A", "when": "Keyboard.RightMouseClick", "to": "Actions.LATERAL_LEFT" }, + { "from": "Keyboard.D", "when": "Keyboard.RightMouseClick", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.E", "when": "Keyboard.Shift", "to": "Actions.BOOM_IN", "filters": [ { "type": "scale", "scale": 0.05 } ] }, + { "from": "Keyboard.C", "when": "Keyboard.Shift", "to": "Actions.BOOM_OUT", "filters": [ { "type": "scale", "scale": 0.05 } ] }, + { "from": "Keyboard.S", "when": "Keyboard.Shift", "to": "Actions.PITCH_DOWN" }, + { "from": "Keyboard.W", "when": "Keyboard.Shift", "to": "Actions.PITCH_UP" }, { "from": "Keyboard.W", "to": "Actions.LONGITUDINAL_FORWARD" }, - { "from": "Keyboard.S", "to": "Actions.LONGITUDINAL_BACKWARD" }, - { "from": "Keyboard.A", "to": "Actions.YAW_LEFT" }, - { "from": "Keyboard.D", "to": "Actions.YAW_RIGHT" }, + { "from": "Keyboard.S", "to": "Actions.LONGITUDINAL_BACKWARD" }, + { "from": "Keyboard.A", "to": "Actions.YAW_LEFT" }, + { "from": "Keyboard.D", "to": "Actions.YAW_RIGHT" }, { "from": "Keyboard.C", "to": "Actions.VERTICAL_DOWN" }, { "from": "Keyboard.E", "to": "Actions.VERTICAL_UP" }, + { "from": "Keyboard.Left", "when": "Keyboard.RightMouseClick", "to": "Actions.LATERAL_LEFT" }, + { "from": "Keyboard.Right", "when": "Keyboard.RightMouseClick", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.Left", "when": "Keyboard.Shift", "to": "Actions.LATERAL_LEFT" }, + { "from": "Keyboard.Right", "when": "Keyboard.Shift", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.Down", "when": "Keyboard.Shift", "to": "Actions.PITCH_DOWN" }, + { "from": "Keyboard.Up", "when": "Keyboard.Shift", "to": "Actions.PITCH_UP" }, + { "from": "Keyboard.Up", "to": "Actions.LONGITUDINAL_FORWARD" }, - { "from": "Keyboard.Down", "to": "Actions.LONGITUDINAL_BACKWARD" }, - { "from": "Keyboard.Left", "to": "Actions.YAW_LEFT" }, - { "from": "Keyboard.Right", "to": "Actions.YAW_RIGHT" }, + { "from": "Keyboard.Down", "to": "Actions.LONGITUDINAL_BACKWARD" }, + { "from": "Keyboard.Left", "to": "Actions.YAW_LEFT" }, + { "from": "Keyboard.Right", "to": "Actions.YAW_RIGHT" }, { "from": "Keyboard.PgDown", "to": "Actions.VERTICAL_DOWN" }, { "from": "Keyboard.PgUp", "to": "Actions.VERTICAL_UP" }, - { "from": "Keyboard.MouseMoveLeft", "when": "Keyboard.RightMouseClick", "to": "Actions.YAW_LEFT" }, - { "from": "Keyboard.MouseMoveRight", "when": "Keyboard.RightMouseClick", "to": "Actions.YAW_RIGHT" }, + { "from": "Keyboard.MouseMoveLeft", "when": "Keyboard.RightMouseClick", "to": "Actions.YAW_LEFT" }, + { "from": "Keyboard.MouseMoveRight", "when": "Keyboard.RightMouseClick", "to": "Actions.YAW_RIGHT" }, { "from": "Keyboard.MouseMoveUp", "when": "Keyboard.RightMouseClick", "to": "Actions.PITCH_UP" }, - { "from": "Keyboard.MouseMoveDown", "when": "Keyboard.RightMouseClick", "to": "Actions.PITCH_DOWN" } + { "from": "Keyboard.MouseMoveDown", "when": "Keyboard.RightMouseClick", "to": "Actions.PITCH_DOWN" }, + + { "from": "Keyboard.TouchpadDown", "to": "Actions.PITCH_DOWN" }, + { "from": "Keyboard.TouchpadUp", "to": "Actions.PITCH_UP" }, + { "from": "Keyboard.TouchpadLeft", "to": "Actions.YAW_LEFT" }, + { "from": "Keyboard.TouchpadRight", "to": "Actions.YAW_RIGHT" }, + + { "from": "Keyboard.MouseWheelUp", "to": "Actions.LATERAL_RIGHT" }, + { "from": "Keyboard.MouseWheelDown", "to": "Actions.LATERAL_LEFT" }, + { "from": "Keyboard.MouseWheelLeft", "to": "Actions.BOOM_OUT", "filters": [ { "type": "scale", "scale": 0.02 } ]}, + { "from": "Keyboard.MouseWheelRight", "to": "Actions.BOOM_IN", "filters": [ { "type": "scale", "scale": 0.02 } ]}, + + { "from": "Keyboard.Space", "to": "Actions.SHIFT" }, + { "from": "Keyboard.R", "to": "Actions.ACTION1" }, + { "from": "Keyboard.T", "to": "Actions.ACTION2" } ] } From cbade6a095079e1ac8527342c8a5cb0e9fd5b266 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Mon, 26 Oct 2015 19:27:22 -0700 Subject: [PATCH 6/6] Do not shut down hydra when it says there are no devices. Count to allowedHydraFailures in settings. --- .../input-plugins/src/input-plugins/SixenseManager.cpp | 8 +++++++- .../input-plugins/src/input-plugins/SixenseManager.h | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp index 3950fdea43..8ea05fc300 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp @@ -167,7 +167,10 @@ void SixenseManager::update(float deltaTime, bool jointsCaptured) { if (sixenseGetNumActiveControllers() == 0) { if (_hydrasConnected) { - qCDebug(inputplugins, "hydra disconnected"); + qCDebug(inputplugins) << "hydra disconnected" << _badDataCount; + if (_badDataCount++ < _allowedBadDataCount) { // gotta get some no-active in a row before we shut things down + return; + } } _hydrasConnected = false; if (_deviceID != 0) { @@ -181,6 +184,7 @@ void SixenseManager::update(float deltaTime, bool jointsCaptured) { PerformanceTimer perfTimer("sixense"); if (!_hydrasConnected) { _hydrasConnected = true; + _badDataCount = 0; registerToUserInputMapper(*userInputMapper); assignDefaultInputMapping(*userInputMapper); UserActivityLogger::getInstance().connectedDevice("spatial_controller", "hydra"); @@ -555,6 +559,7 @@ void SixenseManager::saveSettings() const { settings.setVec3Value(QString("avatarPosition"), _avatarPosition); settings.setQuatValue(QString("avatarRotation"), _avatarRotation); settings.setValue(QString("reachLength"), QVariant(_reachLength)); + settings.setValue(QString("allowedHydraFailures"), 120); } settings.endGroup(); } @@ -567,6 +572,7 @@ void SixenseManager::loadSettings() { settings.getVec3ValueIfValid(QString("avatarPosition"), _avatarPosition); settings.getQuatValueIfValid(QString("avatarRotation"), _avatarRotation); settings.getFloatValueIfValid(QString("reachLength"), _reachLength); + _allowedBadDataCount = settings.value(QString("allowedHydraFailures"), 120).toInt(); } settings.endGroup(); } diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.h b/libraries/input-plugins/src/input-plugins/SixenseManager.h index 9fa7f84a86..90bd830650 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.h +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.h @@ -114,6 +114,8 @@ private: #endif bool _hydrasConnected; + int _badDataCount; + int _allowedBadDataCount; static const QString NAME; static const QString HYDRA_ID_STRING;