diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2016-04-29 08:42:52 +0200 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2016-05-02 10:26:42 +0000 |
commit | 496d8b53b16bd0703ab06978f18fcbbb7d95e845 (patch) | |
tree | 0360d6ea61941e4da7ab6574ff1fb6c342e06c88 /src/input/backend/updateaxisactionjob.cpp | |
parent | 57f6c8bb2f7b220532d5ec4c46ee7d5b7f007067 (diff) |
Split QAnalogAxisInput out of QAxisInput
The axis property of QAxisInput goes there.
Change-Id: Ie226de652848909fc6e3a425612d877ef18b35f3
Task-number: QTBUG-51474
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/input/backend/updateaxisactionjob.cpp')
-rw-r--r-- | src/input/backend/updateaxisactionjob.cpp | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/src/input/backend/updateaxisactionjob.cpp b/src/input/backend/updateaxisactionjob.cpp index cf35cbac6..2a4b69c1f 100644 --- a/src/input/backend/updateaxisactionjob.cpp +++ b/src/input/backend/updateaxisactionjob.cpp @@ -169,34 +169,33 @@ void UpdateAxisActionJob::updateAxis(LogicalDevice *device) const auto axisInputIds = axis->inputs(); for (const Qt3DCore::QNodeId axisInputId : axisInputIds) { - AxisInput *axisInput = m_handler->axisInputManager()->lookupResource(axisInputId); - ButtonAxisInput *buttonAxisInput = nullptr; - if (!axisInput) { - buttonAxisInput = m_handler->buttonAxisInputManager()->lookupResource(axisInputId); - axisInput = buttonAxisInput; + AnalogAxisInput *analogInput = m_handler->analogAxisInputManager()->lookupResource(axisInputId); + if (analogInput) { + QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = findAxisInputPhysicalDevice(analogInput); + if (physicalDeviceBackend && analogInput->axis() != -1) { + // Update the value + axisValue += physicalDeviceBackend->processedAxisValue(analogInput->axis()); + } + continue; } - Q_ASSERT(axisInput); - QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = nullptr; + ButtonAxisInput *buttonInput = m_handler->buttonAxisInputManager()->lookupResource(axisInputId); + if (buttonInput) { + QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = findAxisInputPhysicalDevice(buttonInput); + if (physicalDeviceBackend != nullptr) { + // Update the value + const QVector<int> buttons = buttonInput ? buttonInput->buttons() : QVector<int>(); + if (!buttons.isEmpty()) { + // TO DO: Linear Curver for the progression of the scale value + if (anyOfRequiredButtonsPressed(buttons, physicalDeviceBackend)) + axisValue += buttonInput->scale(); + } + } - const auto integrations = m_handler->inputDeviceIntegrations(); - for (QInputDeviceIntegration *integration : integrations) { - if ((physicalDeviceBackend = integration->physicalDevice(axisInput->sourceDevice())) != nullptr) - break; + continue; } - if (physicalDeviceBackend != nullptr) { - // Update the value - const QVector<int> buttons = buttonAxisInput ? buttonAxisInput->buttons() : QVector<int>(); - // Axis was specified -> we take this as the base value - if (axisInput->axis() != -1) - axisValue += physicalDeviceBackend->processedAxisValue(axisInput->axis()); - else if (!buttons.isEmpty()) { - // TO DO: Linear Curver for the progression of the scale value - if (anyOfRequiredButtonsPressed(buttons, physicalDeviceBackend)) - axisValue += buttonAxisInput->scale(); - } - } + Q_UNREACHABLE(); } // Clamp the axisValue -1/1 @@ -205,6 +204,18 @@ void UpdateAxisActionJob::updateAxis(LogicalDevice *device) } } +QAbstractPhysicalDeviceBackendNode *UpdateAxisActionJob::findAxisInputPhysicalDevice(AxisInput *axisInput) +{ + const auto integrations = m_handler->inputDeviceIntegrations(); + for (QInputDeviceIntegration *integration : integrations) { + QAbstractPhysicalDeviceBackendNode *physicalDeviceBackend = integration->physicalDevice(axisInput->sourceDevice()); + if (physicalDeviceBackend) + return physicalDeviceBackend; + } + + return nullptr; +} + } // Input } // Qt3DInput |