From 073567558ea3728ed691f6491a9e0c37610cb6e3 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 25 Aug 2015 16:40:13 -0700 Subject: [PATCH] Fix UserInputMapper event generation --- .../input-plugins/src/input-plugins/UserInputMapper.cpp | 5 ++++- libraries/input-plugins/src/input-plugins/UserInputMapper.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/input-plugins/src/input-plugins/UserInputMapper.cpp b/libraries/input-plugins/src/input-plugins/UserInputMapper.cpp index b7533f39ec..fabb488ab4 100755 --- a/libraries/input-plugins/src/input-plugins/UserInputMapper.cpp +++ b/libraries/input-plugins/src/input-plugins/UserInputMapper.cpp @@ -226,9 +226,12 @@ void UserInputMapper::update(float deltaTime) { } // Scale all the channel step with the scale + static const float EPSILON = 0.01f; for (auto i = 0; i < NUM_ACTIONS; i++) { _actionStates[i] *= _actionScales[i]; - if (_actionStates[i] > 0) { + // Emit only on change, and emit when moving back to 0 + if (fabs(_actionStates[i] - _lastActionStates[i]) > EPSILON) { + _lastActionStates[i] = _actionStates[i]; emit actionEvent(i, _actionStates[i]); } // TODO: emit signal for pose changes diff --git a/libraries/input-plugins/src/input-plugins/UserInputMapper.h b/libraries/input-plugins/src/input-plugins/UserInputMapper.h index 184b8d4776..464c39b64c 100755 --- a/libraries/input-plugins/src/input-plugins/UserInputMapper.h +++ b/libraries/input-plugins/src/input-plugins/UserInputMapper.h @@ -248,6 +248,7 @@ protected: std::vector _actionStates = std::vector(NUM_ACTIONS, 0.0f); std::vector _actionScales = std::vector(NUM_ACTIONS, 1.0f); + std::vector _lastActionStates = std::vector(NUM_ACTIONS, 0.0f); std::vector _poseStates = std::vector(NUM_ACTIONS); glm::mat4 _sensorToWorldMat;