summaryrefslogtreecommitdiffstats
path: root/src/input
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire.ecortex@kdab.com>2014-11-10 08:29:06 +0100
committerSean Harmer <sean.harmer@kdab.com>2014-11-14 17:45:03 +0100
commit09f0eb1409fecaa7405bcecaf048b9562edddd7d (patch)
tree791ed9329acfbaf59e1e62ac508fd2087151832c /src/input
parentffc5df11e7c69ddaee375129c462e9d6eff24b4b (diff)
KeyboardInput backend functor creator added
Change-Id: I9025c3ad9201424c04a34dbf0f188749f00942c7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/input')
-rw-r--r--src/input/keyboardinput.cpp24
-rw-r--r--src/input/keyboardinput_p.h15
2 files changed, 39 insertions, 0 deletions
diff --git a/src/input/keyboardinput.cpp b/src/input/keyboardinput.cpp
index 8c82757c0..3a6e945ba 100644
--- a/src/input/keyboardinput.cpp
+++ b/src/input/keyboardinput.cpp
@@ -42,6 +42,8 @@
#include "keyboardinput_p.h"
#include "qkeyboardinput.h"
#include "qkeyboardcontroller.h"
+#include "inputhandler_p.h"
+#include "inputmanagers_p.h"
#include <QVariant>
#include <Qt3DCore/qscenepropertychange.h>
@@ -77,6 +79,28 @@ void KeyboardInput::sceneChangeEvent(const QSceneChangePtr &e)
}
}
+KeyboardInputFunctor::KeyboardInputFunctor(InputHandler *handler)
+ : m_handler(handler)
+{
+}
+
+QBackendNode *KeyboardInputFunctor::create(QNode *frontend) const
+{
+ KeyboardInput *input = m_handler->keyboardInputManager()->getOrCreateResource(frontend->uuid());
+ input->setPeer(frontend);
+ return input;
+}
+
+QBackendNode *KeyboardInputFunctor::get(QNode *frontend) const
+{
+ return m_handler->keyboardInputManager()->lookupResource(frontend->uuid());
+}
+
+void KeyboardInputFunctor::destroy(QNode *frontend) const
+{
+ m_handler->keyboardInputManager()->releaseResource(frontend->uuid());
+}
+
} // Input
} // Qt3D
diff --git a/src/input/keyboardinput_p.h b/src/input/keyboardinput_p.h
index 8dc32f4d5..01360e4fa 100644
--- a/src/input/keyboardinput_p.h
+++ b/src/input/keyboardinput_p.h
@@ -51,6 +51,8 @@ namespace Qt3D {
namespace Input {
+class InputHandler;
+
class KeyboardInput : public QBackendNode
{
public:
@@ -65,6 +67,19 @@ private:
QNodeUuid m_keyboardController;
};
+class KeyboardInputFunctor : public QBackendNodeFunctor
+{
+public:
+ explicit KeyboardInputFunctor(InputHandler *handler);
+
+ QBackendNode *create(QNode *frontend) const Q_DECL_OVERRIDE;
+ QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE;
+ void destroy(QNode *frontend) const Q_DECL_OVERRIDE;
+
+private:
+ InputHandler *m_handler;
+};
+
} // Input
} // Qt3D