summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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