summaryrefslogtreecommitdiffstats
path: root/src/input/qinputaspect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/qinputaspect.cpp')
-rw-r--r--src/input/qinputaspect.cpp24
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;
}