diff options
Diffstat (limited to 'src/input/qinputaspect.cpp')
-rw-r--r-- | src/input/qinputaspect.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/input/qinputaspect.cpp b/src/input/qinputaspect.cpp index f28cc41e1..5a71cb0e2 100644 --- a/src/input/qinputaspect.cpp +++ b/src/input/qinputaspect.cpp @@ -49,8 +49,14 @@ #include <Qt3DInput/qkeyboardinput.h> #include <Qt3DInput/qmousecontroller.h> #include <Qt3DInput/qmouseinput.h> +#include <Qt3DInput/qabstractinputdevice.h> +#include <Qt3DInput/private/qinputdevicefactory_p.h> #include <Qt3DCore/qservicelocator.h> #include <Qt3DCore/qeventfilterservice.h> +#include <QDir> +#include <QLibrary> +#include <QLibraryInfo> +#include <QPluginLoader> QT_BEGIN_NAMESPACE @@ -83,6 +89,21 @@ QInputAspect::QInputAspect(QObject *parent) registerBackendType<QKeyboardInput>(QBackendNodeFunctorPtr(new Input::KeyboardInputFunctor(d_func()->m_inputHandler.data()))); registerBackendType<QMouseController>(QBackendNodeFunctorPtr(new Input::MouseControllerFunctor(d_func()->m_inputHandler.data()))); registerBackendType<QMouseInput>(QBackendNodeFunctorPtr(new Input::MouseInputFunctor(d_func()->m_inputHandler.data()))); + + loadInputDevicePlugins(); +} + +void QInputAspect::loadInputDevicePlugins() +{ + Q_D(QInputAspect); + QStringList keys = QInputDeviceFactory::keys(); + Q_FOREACH (QString key, keys) { + Qt3DInput::QAbstractInputDevice *inputDevice = QInputDeviceFactory::create(key, QStringList()); + if (inputDevice != Q_NULLPTR) { + d->m_inputDevices.push_back(inputDevice); + inputDevice->initialize(this); + } + } } Qt3DCore::QCamera *QInputAspect::camera() const @@ -106,6 +127,9 @@ QVector<QAspectJobPtr> QInputAspect::jobsToExecute(qint64 time) jobs.append(d->m_inputHandler->keyboardJobs()); jobs.append(d->m_inputHandler->mouseJobs()); + Q_FOREACH (QAbstractInputDevice *inputDevice, d->m_inputDevices) + jobs += inputDevice->jobsToExecute(time); + return jobs; } |