diff options
57 files changed, 165 insertions, 71 deletions
diff --git a/examples/assimp/assimp.pro b/examples/assimp/assimp.pro index e2871ca80..1db64789d 100644 --- a/examples/assimp/assimp.pro +++ b/examples/assimp/assimp.pro @@ -2,7 +2,7 @@ TEMPLATE = app SOURCE += main.cpp -QT += qml quick 3dcore 3drenderer 3dquick +QT += qml quick 3dcore 3drenderer 3dinput 3dquick OTHER_FILES += main.qml diff --git a/examples/assimp/main.cpp b/examples/assimp/main.cpp index 4a73f8821..a2e864437 100644 --- a/examples/assimp/main.cpp +++ b/examples/assimp/main.cpp @@ -43,6 +43,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> #include <QtQml> @@ -57,6 +58,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); diff --git a/examples/bigmodel-qml/bigmodel-qml.pro b/examples/bigmodel-qml/bigmodel-qml.pro index 76b9b972d..e0535a346 100644 --- a/examples/bigmodel-qml/bigmodel-qml.pro +++ b/examples/bigmodel-qml/bigmodel-qml.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick SOURCES += \ main.cpp diff --git a/examples/bigmodel-qml/main.cpp b/examples/bigmodel-qml/main.cpp index e7baa1bf2..f912f4cc6 100644 --- a/examples/bigmodel-qml/main.cpp +++ b/examples/bigmodel-qml/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> #include <QtQml> @@ -65,6 +66,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); engine.qmlEngine()->rootContext()->setContextProperty("_meshFileNames", meshFileNames); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/bigscene-cpp/bigscene-cpp.pro b/examples/bigscene-cpp/bigscene-cpp.pro index 62853b0db..d95efa7a1 100644 --- a/examples/bigscene-cpp/bigscene-cpp.pro +++ b/examples/bigscene-cpp/bigscene-cpp.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput SOURCES += \ main.cpp diff --git a/examples/bigscene-cpp/main.cpp b/examples/bigscene-cpp/main.cpp index 64a6b790b..e90a10b15 100644 --- a/examples/bigscene-cpp/main.cpp +++ b/examples/bigscene-cpp/main.cpp @@ -51,6 +51,7 @@ #include <Qt3DCore/QRotateTransform> #include <Qt3DCore/QScaleTransform> #include <Qt3DCore/qaspectengine.h> +#include <Qt3DInput/QInputAspect> #include <Qt3DRenderer/QParameter> #include <Qt3DRenderer/QFrameGraph> #include <Qt3DRenderer/QCylinderMesh> @@ -69,6 +70,8 @@ int main(int ac, char **av) Window view; Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -83,7 +86,7 @@ int main(int ac, char **av) cameraEntity->setPosition(QVector3D(0, -250.0f, -50.0f)); cameraEntity->setUpVector(QVector3D(0, 1, 0)); cameraEntity->setViewCenter(QVector3D(0, 0, 0)); - view.setCamera(cameraEntity); + input->setCamera(cameraEntity); // FrameGraph QFrameGraph *frameGraph = new QFrameGraph(); diff --git a/examples/cpp_example/cpp_example.pro b/examples/cpp_example/cpp_example.pro index 8bdaaf170..943f81533 100644 --- a/examples/cpp_example/cpp_example.pro +++ b/examples/cpp_example/cpp_example.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput include("../exampleresources/exampleresources.pri") diff --git a/examples/cpp_example/main.cpp b/examples/cpp_example/main.cpp index e36a93513..197b101ec 100644 --- a/examples/cpp_example/main.cpp +++ b/examples/cpp_example/main.cpp @@ -49,6 +49,8 @@ #include <Qt3DCore/qcameralens.h> #include <Qt3DCore/qaspectengine.h> +#include <Qt3DInput/QInputAspect> + #include <Qt3DRenderer/qtorusmesh.h> #include <Qt3DRenderer/qmesh.h> #include <Qt3DRenderer/qtechnique.h> @@ -81,6 +83,8 @@ int main(int ac, char **av) Qt3D::Window view; Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -135,7 +139,7 @@ int main(int ac, char **av) cameraEntity->setPosition(QVector3D(-5, 0, -20.0f)); cameraEntity->setViewCenter(QVector3D(11, 0, 5)); cameraEntity->setUpVector(QVector3D(0, 1, 0)); - view.setCamera(cameraEntity); + input->setCamera(cameraEntity); // FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(); diff --git a/examples/cylinder-cpp/cylinder-cpp.pro b/examples/cylinder-cpp/cylinder-cpp.pro index 2bee5ff07..5ad940ff1 100644 --- a/examples/cylinder-cpp/cylinder-cpp.pro +++ b/examples/cylinder-cpp/cylinder-cpp.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput SOURCES += main.cpp diff --git a/examples/cylinder-cpp/main.cpp b/examples/cylinder-cpp/main.cpp index edc5e45d9..2eaf4931d 100644 --- a/examples/cylinder-cpp/main.cpp +++ b/examples/cylinder-cpp/main.cpp @@ -46,6 +46,8 @@ #include <Qt3DCore/qentity.h> #include <Qt3DCore/qcameralens.h> +#include <Qt3DInput/QInputAspect> + #include <Qt3DRenderer/qcylindermesh.h> #include <Qt3DRenderer/qmesh.h> #include <Qt3DRenderer/qtechnique.h> @@ -71,6 +73,8 @@ int main(int argc, char **argv) Qt3D::Window view; Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -88,7 +92,7 @@ int main(int argc, char **argv) cameraEntity->setPosition(QVector3D(0, 0, -20.0f)); cameraEntity->setUpVector(QVector3D(0, 1, 0)); cameraEntity->setViewCenter(QVector3D(0, 0, 0)); - view.setCamera(cameraEntity); + input->setCamera(cameraEntity); // FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(); diff --git a/examples/cylinder-qml/cylinder-qml.pro b/examples/cylinder-qml/cylinder-qml.pro index 85392449b..218ab62b5 100644 --- a/examples/cylinder-qml/cylinder-qml.pro +++ b/examples/cylinder-qml/cylinder-qml.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick SOURCES += \ main.cpp diff --git a/examples/cylinder-qml/main.cpp b/examples/cylinder-qml/main.cpp index bee96cb2f..8b7d5c2f4 100644 --- a/examples/cylinder-qml/main.cpp +++ b/examples/cylinder-qml/main.cpp @@ -41,7 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> - +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> #include <QtQml> @@ -54,6 +54,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/deferred-renderer-cpp/deferred-renderer-cpp.pro b/examples/deferred-renderer-cpp/deferred-renderer-cpp.pro index 8fc5d682c..eaebea4ed 100644 --- a/examples/deferred-renderer-cpp/deferred-renderer-cpp.pro +++ b/examples/deferred-renderer-cpp/deferred-renderer-cpp.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput include("../exampleresources/exampleresources.pri") diff --git a/examples/deferred-renderer-cpp/main.cpp b/examples/deferred-renderer-cpp/main.cpp index 4fc7c24b3..62732d25b 100644 --- a/examples/deferred-renderer-cpp/main.cpp +++ b/examples/deferred-renderer-cpp/main.cpp @@ -41,6 +41,9 @@ #include <Qt3DCore/QEntity> #include <Qt3DCore/Window> + +#include <Qt3DInput/QInputAspect> + #include <Qt3DRenderer/QRenderAspect> #include <Qt3DRenderer/QFrameGraph> #include <Qt3DRenderer/QMaterial> @@ -72,6 +75,8 @@ int main(int ac, char **av) Qt3D::Window view; Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -121,7 +126,7 @@ int main(int ac, char **av) camera->setUpVector(QVector3D(0.0f, 1.0f, 0.0f)); camera->setViewCenter(QVector3D(0.0f, 0.0f, 10.0f)); - view.setCamera(camera); + input->setCamera(camera); // FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(); diff --git a/examples/deferred-renderer-qml/deferred-renderer-qml.pro b/examples/deferred-renderer-qml/deferred-renderer-qml.pro index f31398e22..2b1329c2e 100644 --- a/examples/deferred-renderer-qml/deferred-renderer-qml.pro +++ b/examples/deferred-renderer-qml/deferred-renderer-qml.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/examples/deferred-renderer-qml/main.cpp b/examples/deferred-renderer-qml/main.cpp index 0408188e9..371ca9cb2 100644 --- a/examples/deferred-renderer-qml/main.cpp +++ b/examples/deferred-renderer-qml/main.cpp @@ -42,6 +42,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <exampleresources.h> @@ -58,6 +59,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/dynamicscene-cpp/dynamicscene-cpp.pro b/examples/dynamicscene-cpp/dynamicscene-cpp.pro index b67888946..715460121 100644 --- a/examples/dynamicscene-cpp/dynamicscene-cpp.pro +++ b/examples/dynamicscene-cpp/dynamicscene-cpp.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput include("../exampleresources/exampleresources.pri") diff --git a/examples/dynamicscene-cpp/main.cpp b/examples/dynamicscene-cpp/main.cpp index abc67732f..aee718524 100644 --- a/examples/dynamicscene-cpp/main.cpp +++ b/examples/dynamicscene-cpp/main.cpp @@ -45,6 +45,8 @@ #include <Qt3DCore/QCamera> #include <Qt3DCore/Window> +#include <Qt3DInput/QInputAspect> + #include <Qt3DRenderer/QRenderAspect> #include <Qt3DRenderer/QFrameGraph> #include <Qt3DRenderer/QForwardRenderer> @@ -59,6 +61,8 @@ int main(int argc, char* argv[]) Qt3D::Window view; Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -75,7 +79,7 @@ int main(int argc, char* argv[]) basicCamera->setViewCenter(QVector3D(0.0f, 3.5f, 0.0f)); basicCamera->setPosition(QVector3D(0.0f, 3.5f, 25.0f)); // For camera controls - view.setCamera(basicCamera); + input->setCamera(basicCamera); // Forward Renderer FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(sceneRoot); diff --git a/examples/gltf/gltf.pro b/examples/gltf/gltf.pro index 5a1dde26d..d2ac810a9 100644 --- a/examples/gltf/gltf.pro +++ b/examples/gltf/gltf.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/examples/gltf/main.cpp b/examples/gltf/main.cpp index c80add25e..00dac1331 100644 --- a/examples/gltf/main.cpp +++ b/examples/gltf/main.cpp @@ -42,6 +42,7 @@ #include <exampleresources.h> #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> #include <QtQml> @@ -56,6 +57,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/loader-qml/loader-qml.pro b/examples/loader-qml/loader-qml.pro index d54671248..c4f4b38cf 100644 --- a/examples/loader-qml/loader-qml.pro +++ b/examples/loader-qml/loader-qml.pro @@ -1,5 +1,5 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick SOURCES += \ main.cpp diff --git a/examples/loader-qml/main.cpp b/examples/loader-qml/main.cpp index a9d5d101d..3488ffa52 100644 --- a/examples/loader-qml/main.cpp +++ b/examples/loader-qml/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> @@ -52,6 +53,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/materials-cpp/main.cpp b/examples/materials-cpp/main.cpp index eee06f22b..3a84c33f7 100644 --- a/examples/materials-cpp/main.cpp +++ b/examples/materials-cpp/main.cpp @@ -46,6 +46,8 @@ #include <Qt3DCore/QAspectEngine> #include <Qt3DCore/QCamera> +#include <Qt3DInput/QInputAspect> + #include <Qt3DRenderer/QRenderAspect> #include <Qt3DRenderer/QPhongMaterial> #include <Qt3DRenderer/QDiffuseMapMaterial> @@ -66,6 +68,8 @@ int main(int argc, char* argv[]) Qt3D::Window view; Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -83,7 +87,7 @@ int main(int argc, char* argv[]) basicCamera->setViewCenter(QVector3D(0.0f, 3.5f, 0.0f)); basicCamera->setPosition(QVector3D(0.0f, 3.5f, 25.0f)); // For camera controls - view.setCamera(basicCamera); + input->setCamera(basicCamera); // Forward Renderer FrameGraph Qt3D::QFrameGraph *frameGraphComponent = new Qt3D::QFrameGraph(sceneRoot); diff --git a/examples/materials-cpp/materials-cpp.pro b/examples/materials-cpp/materials-cpp.pro index bc32d5491..351ed82f8 100644 --- a/examples/materials-cpp/materials-cpp.pro +++ b/examples/materials-cpp/materials-cpp.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput include("../exampleresources/exampleresources.pri") diff --git a/examples/materials/main.cpp b/examples/materials/main.cpp index 068b475f0..3adf1e08d 100644 --- a/examples/materials/main.cpp +++ b/examples/materials/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <exampleresources.h> @@ -57,6 +58,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/materials/materials.pro b/examples/materials/materials.pro index d87485513..23d4d38a8 100644 --- a/examples/materials/materials.pro +++ b/examples/materials/materials.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/examples/multiviewport/main.cpp b/examples/multiviewport/main.cpp index 0d003cdb8..d332c2e7b 100644 --- a/examples/multiviewport/main.cpp +++ b/examples/multiviewport/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <exampleresources.h> @@ -54,6 +55,7 @@ int main(int ac, char **av) initializeAssetResources("../exampleresources/example-assets.qrb"); engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); diff --git a/examples/multiviewport/multiviewport.pro b/examples/multiviewport/multiviewport.pro index 237c4bbbb..d7ed38b6d 100644 --- a/examples/multiviewport/multiviewport.pro +++ b/examples/multiviewport/multiviewport.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/examples/rollerball/main.cpp b/examples/rollerball/main.cpp index f8efd86cf..89b32c4fe 100644 --- a/examples/rollerball/main.cpp +++ b/examples/rollerball/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <Qt3DBulletPhysics/bulletphysicsaspect.h> #include <exampleresources.h> @@ -58,6 +59,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); engine.aspectEngine()->registerAspect(new Qt3D::BulletPhysicsAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/rollerball/rollerball.pro b/examples/rollerball/rollerball.pro index e7c906f97..601b3811f 100644 --- a/examples/rollerball/rollerball.pro +++ b/examples/rollerball/rollerball.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dbulletphysics 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dbulletphysics 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/examples/shadow-map-qml/main.cpp b/examples/shadow-map-qml/main.cpp index 2e70ba22b..886dfe35a 100644 --- a/examples/shadow-map-qml/main.cpp +++ b/examples/shadow-map-qml/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> #include <QQmlContext> @@ -59,6 +60,7 @@ int main(int argc, char* argv[]) view.resize(1600, 800); engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/shadow-map-qml/shadow-map-qml.pro b/examples/shadow-map-qml/shadow-map-qml.pro index 5d7467f5a..7d7670022 100644 --- a/examples/shadow-map-qml/shadow-map-qml.pro +++ b/examples/shadow-map-qml/shadow-map-qml.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/examples/simple-cpp/main.cpp b/examples/simple-cpp/main.cpp index 720308d68..4f1fab7fc 100644 --- a/examples/simple-cpp/main.cpp +++ b/examples/simple-cpp/main.cpp @@ -52,6 +52,8 @@ #include <Qt3DCore/QTranslateTransform> #include <Qt3DCore/QAspectEngine> +#include <Qt3DInput/QInputAspect> + #include <Qt3DRenderer/QRenderAspect> #include <Qt3DRenderer/QFrameGraph> #include <Qt3DRenderer/QForwardRenderer> @@ -70,6 +72,8 @@ int main(int argc, char* argv[]) Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -87,7 +91,7 @@ int main(int argc, char* argv[]) cameraEntity->setPosition(QVector3D(0, 0, -40.0f)); cameraEntity->setUpVector(QVector3D(0, 1, 0)); cameraEntity->setViewCenter(QVector3D(0, 0, 0)); - view.setCamera(cameraEntity); + input->setCamera(cameraEntity); // FrameGraph diff --git a/examples/simple-cpp/simple-cpp.pro b/examples/simple-cpp/simple-cpp.pro index 9bf36fff7..c7f008ae9 100644 --- a/examples/simple-cpp/simple-cpp.pro +++ b/examples/simple-cpp/simple-cpp.pro @@ -1,5 +1,5 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput SOURCES += \ main.cpp diff --git a/examples/simple-qml/main.cpp b/examples/simple-qml/main.cpp index a9d5d101d..3488ffa52 100644 --- a/examples/simple-qml/main.cpp +++ b/examples/simple-qml/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> @@ -52,6 +53,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); engine.aspectEngine()->initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/simple-qml/simple-qml.pro b/examples/simple-qml/simple-qml.pro index b5fdfffe7..0df3ee3e6 100644 --- a/examples/simple-qml/simple-qml.pro +++ b/examples/simple-qml/simple-qml.pro @@ -1,5 +1,5 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick SOURCES += \ main.cpp diff --git a/examples/tessellation-modes/main.cpp b/examples/tessellation-modes/main.cpp index 93c006e02..7b503356a 100644 --- a/examples/tessellation-modes/main.cpp +++ b/examples/tessellation-modes/main.cpp @@ -43,6 +43,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <exampleresources.h> @@ -59,6 +60,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); diff --git a/examples/tessellation-modes/tessellation-modes.pro b/examples/tessellation-modes/tessellation-modes.pro index b95545243..683dd7f9f 100644 --- a/examples/tessellation-modes/tessellation-modes.pro +++ b/examples/tessellation-modes/tessellation-modes.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/examples/torus-cpp/main.cpp b/examples/torus-cpp/main.cpp index 330700d4c..4ca4a3df8 100644 --- a/examples/torus-cpp/main.cpp +++ b/examples/torus-cpp/main.cpp @@ -46,6 +46,8 @@ #include <Qt3DCore/qentity.h> #include <Qt3DCore/qcameralens.h> +#include <Qt3DInput/QInputAspect> + #include <Qt3DRenderer/qtorusmesh.h> #include <Qt3DRenderer/qmesh.h> #include <Qt3DRenderer/qtechnique.h> @@ -72,6 +74,8 @@ int main(int argc, char **argv) Qt3D::Window view; Qt3D::QAspectEngine engine; engine.registerAspect(new Qt3D::QRenderAspect()); + Qt3D::QInputAspect *input = new Qt3D::QInputAspect; + engine.registerAspect(input); engine.initialize(); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); @@ -89,7 +93,7 @@ int main(int argc, char **argv) cameraEntity->setPosition(QVector3D(0, 0, -20.0f)); cameraEntity->setUpVector(QVector3D(0, 1, 0)); cameraEntity->setViewCenter(QVector3D(0, 0, 0)); - view.setCamera(cameraEntity); + input->setCamera(cameraEntity); // FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(); diff --git a/examples/torus-cpp/torus-cpp.pro b/examples/torus-cpp/torus-cpp.pro index 2bee5ff07..5ad940ff1 100644 --- a/examples/torus-cpp/torus-cpp.pro +++ b/examples/torus-cpp/torus-cpp.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer +QT += 3dcore 3drenderer 3dinput SOURCES += main.cpp diff --git a/examples/torus-qml/main.cpp b/examples/torus-qml/main.cpp index 30ce9b65e..baa6daefb 100644 --- a/examples/torus-qml/main.cpp +++ b/examples/torus-qml/main.cpp @@ -41,7 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> - +#include <Qt3DInput/QInputAspect> #include <QGuiApplication> #include <QtQml> @@ -54,6 +54,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); QVariantMap data; data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(&view))); data.insert(QStringLiteral("window"), QVariant::fromValue(&view)); diff --git a/examples/torus-qml/torus-qml.pro b/examples/torus-qml/torus-qml.pro index cb1a88003..060164fa9 100644 --- a/examples/torus-qml/torus-qml.pro +++ b/examples/torus-qml/torus-qml.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick SOURCES += \ main.cpp diff --git a/examples/wireframe/main.cpp b/examples/wireframe/main.cpp index 71d792ac9..1dbdec85e 100644 --- a/examples/wireframe/main.cpp +++ b/examples/wireframe/main.cpp @@ -41,6 +41,7 @@ #include <Qt3DQuick/quickwindow.h> #include <Qt3DRenderer/qrenderaspect.h> +#include <Qt3DInput/QInputAspect> #include <exampleresources.h> @@ -57,6 +58,7 @@ int main(int argc, char* argv[]) Qt3D::Quick::QQmlAspectEngine engine; engine.aspectEngine()->registerAspect(new Qt3D::QRenderAspect()); + engine.aspectEngine()->registerAspect(new Qt3D::QInputAspect()); // Expose the window as a context property so we can set the aspect ratio engine.qmlEngine()->rootContext()->setContextProperty("_window", &view); diff --git a/examples/wireframe/wireframe.pro b/examples/wireframe/wireframe.pro index 7dc5eb255..2b2fd991a 100644 --- a/examples/wireframe/wireframe.pro +++ b/examples/wireframe/wireframe.pro @@ -1,6 +1,6 @@ TEMPLATE = app -QT += 3dcore 3drenderer 3dquick qml quick +QT += 3dcore 3drenderer 3dinput 3dquick qml quick include("../exampleresources/exampleresources.pri") diff --git a/src/core/core.pri b/src/core/core.pri index 59c2c4b59..1ffa7c75d 100644 --- a/src/core/core.pri +++ b/src/core/core.pri @@ -22,7 +22,6 @@ HEADERS += \ $$PWD/window.h \ $$PWD/qtickclock_p.h \ $$PWD/qscheduler_p.h \ - $$PWD/cameracontroller.h \ $$PWD/corelogging_p.h \ $$PWD/qscenechange.h \ $$PWD/qscenepropertychange.h \ @@ -43,7 +42,6 @@ SOURCES += \ $$PWD/window.cpp \ $$PWD/qtickclock.cpp \ $$PWD/qscheduler.cpp \ - $$PWD/cameracontroller.cpp \ $$PWD/qchangearbiter.cpp \ $$PWD/corelogging.cpp \ $$PWD/qobservableinterface.cpp \ diff --git a/src/core/window.cpp b/src/core/window.cpp index 3ea9a8a8c..00d4d4b16 100644 --- a/src/core/window.cpp +++ b/src/core/window.cpp @@ -49,7 +49,6 @@ #include "qcamera.h" #include "qentity.h" #include "qaspectengine.h" -#include "cameracontroller.h" #include <Qt3DCore/private/corelogging_p.h> QT_BEGIN_NAMESPACE @@ -58,7 +57,6 @@ namespace Qt3D { Window::Window(QScreen *screen) : QWindow(screen) - , m_controller(new CameraController(this)) { setSurfaceType(QSurface::OpenGLSurface); @@ -72,19 +70,12 @@ Window::Window(QScreen *screen) format.setProfile(QSurfaceFormat::CoreProfile); setFormat(format); create(); - - installEventFilter(m_controller); } Window::~Window() { } -void Window::setCamera(QCamera *camera) -{ - m_controller->setCamera(camera); -} - void Window::keyPressEvent( QKeyEvent* e ) { switch ( e->key() ) diff --git a/src/core/window.h b/src/core/window.h index d82aa8b44..8257bd716 100644 --- a/src/core/window.h +++ b/src/core/window.h @@ -49,14 +49,6 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QAbstractAspect; -class QAspectEngine; -class QCamera; -class QEntity; - -// temporary solution to get control over camera -class CameraController; - class QT3DCORESHARED_EXPORT Window : public QWindow { Q_OBJECT @@ -64,14 +56,8 @@ public: explicit Window(QScreen *screen = 0); ~Window(); - void setCamera(QCamera *camera); - protected: virtual void keyPressEvent(QKeyEvent *e); - -protected: - // temporary, borrowed from training material - CameraController *m_controller; }; } // namespace Qt3D diff --git a/src/core/cameracontroller.cpp b/src/input/cameracontroller.cpp index 1b3ef7f87..508b0ff0d 100644 --- a/src/core/cameracontroller.cpp +++ b/src/input/cameracontroller.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "cameracontroller.h" +#include "cameracontroller_p.h" #include <QMouseEvent> #include <QKeyEvent> @@ -52,8 +52,8 @@ QT_BEGIN_NAMESPACE -namespace Qt3D -{ +using namespace Qt3D; +using namespace Qt3D::Input; CameraController::CameraController(QObject *parent) : QObject(parent), @@ -95,6 +95,11 @@ void CameraController::setCamera( QCamera* cam ) m_updateTimer->stop(); } +QCamera *CameraController::camera() const +{ + return m_camera; +} + void CameraController::setLinearSpeed( float speed ) { if ( qFuzzyCompare( m_linearSpeed, speed ) ) @@ -328,6 +333,4 @@ void CameraController::onUpdate() update(1.0 / 60.0); } -} // of namespace Qt3D - QT_END_NAMESPACE diff --git a/src/core/cameracontroller.h b/src/input/cameracontroller_p.h index 50690677d..51b717ddf 100644 --- a/src/core/cameracontroller.h +++ b/src/input/cameracontroller_p.h @@ -43,7 +43,6 @@ #define CAMERA_CONTROLLER_H #include <QObject> -#include <Qt3DCore/qt3dcore_global.h> #include <QPoint> @@ -54,13 +53,14 @@ class QWheelEvent; class QKeyEvent; class QTimer; -namespace Qt3D -{ +namespace Qt3D { class QCamera; class QEntity; -class QT3DCORESHARED_EXPORT CameraController : public QObject +namespace Input { + +class CameraController : public QObject { Q_OBJECT @@ -73,6 +73,8 @@ public: explicit CameraController(QObject *parent = 0); void setCamera( QCamera* cam ); + QCamera *camera() const; + void setLinearSpeed( float speed ); float linearSpeed() const; @@ -135,6 +137,8 @@ private: QTimer *m_updateTimer; }; +} // of namespace Input + } // of namespace Qt3D QT_END_NAMESPACE diff --git a/src/input/input.pri b/src/input/input.pri index 9c9b82fb4..e83bc69f5 100644 --- a/src/input/input.pri +++ b/src/input/input.pri @@ -1,4 +1,5 @@ HEADERS += \ + $$PWD/cameracontroller_p.h \ $$PWD/qinputaspect.h \ $$PWD/qkeyboardcontroller.h \ $$PWD/qkeyboardcontroller_p.h \ @@ -16,6 +17,7 @@ HEADERS += \ $$PWD/q3dkeyevent.h SOURCES += \ + $$PWD/cameracontroller.cpp \ $$PWD/qinputaspect.cpp \ $$PWD/qkeyboardcontroller.cpp \ $$PWD/qkeyboardinput.cpp \ diff --git a/src/input/qinputaspect.cpp b/src/input/qinputaspect.cpp index b43f24ae2..6068acf79 100644 --- a/src/input/qinputaspect.cpp +++ b/src/input/qinputaspect.cpp @@ -41,6 +41,7 @@ #include "qinputaspect.h" #include "qinputaspect_p.h" +#include "cameracontroller_p.h" #include "inputhandler_p.h" #include "keyboardcontroller_p.h" #include "keyboardinput_p.h" @@ -57,6 +58,7 @@ namespace Qt3D { QInputAspectPrivate::QInputAspectPrivate(QInputAspect *qq) : QAbstractAspectPrivate(qq) , m_inputHandler(new Input::InputHandler()) + , m_cameraController(new Input::CameraController()) { m_aspectType = QAbstractAspect::AspectOther; } @@ -68,6 +70,18 @@ QInputAspect::QInputAspect(QObject *parent) registerBackendType<QKeyboardInput>(QBackendNodeFunctorPtr(new Input::KeyboardInputFunctor(d_func()->m_inputHandler))); } +QCamera *QInputAspect::camera() const +{ + Q_D(const QInputAspect); + return d->m_cameraController->camera(); +} + +void QInputAspect::setCamera(QCamera *camera) +{ + Q_D(QInputAspect); + d->m_cameraController->setCamera(camera); +} + QVector<QAspectJobPtr> QInputAspect::jobsToExecute(qint64 time) { Q_UNUSED(time); @@ -110,12 +124,15 @@ void QInputAspect::onInitialize(const QVariantMap &data) if (v.isValid()) w = v.value<QWindow *>(); Q_D(QInputAspect); + if (w) + w->installEventFilter(d->m_cameraController); d->m_inputHandler->setWindow(w); } void QInputAspect::onCleanup() { Q_D(QInputAspect); + d->m_inputHandler->window()->removeEventFilter(d->m_cameraController); d->m_inputHandler->setWindow(Q_NULLPTR); } diff --git a/src/input/qinputaspect.h b/src/input/qinputaspect.h index b3b20c5ab..c411c19aa 100644 --- a/src/input/qinputaspect.h +++ b/src/input/qinputaspect.h @@ -49,14 +49,22 @@ QT_BEGIN_NAMESPACE namespace Qt3D { +class QCamera; class QInputAspectPrivate; class QT3DINPUTSHARED_EXPORT QInputAspect : public QAbstractAspect { Q_OBJECT + Q_PROPERTY(Qt3D::QCamera* camera READ camera WRITE setCamera) public: explicit QInputAspect(QObject *parent = 0); + QCamera *camera() const; + +public Q_SLOTS: + void setCamera(QCamera *camera); + +public: QVector<QAspectJobPtr> jobsToExecute(qint64 time) Q_DECL_OVERRIDE; void sceneNodeAdded(QSceneChangePtr &e) Q_DECL_OVERRIDE; diff --git a/src/input/qinputaspect_p.h b/src/input/qinputaspect_p.h index 8b11dd02a..62c399009 100644 --- a/src/input/qinputaspect_p.h +++ b/src/input/qinputaspect_p.h @@ -52,6 +52,7 @@ class QInputAspect; namespace Input { +class CameraController; class InputHandler; } @@ -63,6 +64,7 @@ public: Q_DECLARE_PUBLIC(QInputAspect) Input::InputHandler *m_inputHandler; + Input::CameraController *m_cameraController; }; } // Qt3D diff --git a/src/quick3d/quick3d/items/quick3dconfiguration.cpp b/src/quick3d/quick3d/items/quick3dconfiguration.cpp index e511c981a..cc532b2cc 100644 --- a/src/quick3d/quick3d/items/quick3dconfiguration.cpp +++ b/src/quick3d/quick3d/items/quick3dconfiguration.cpp @@ -40,9 +40,15 @@ ****************************************************************************/ #include "quick3dconfiguration.h" -#include "quickwindow.h" #include <QDebug> +#include <Qt3DCore/QAspectEngine> +#include <Qt3DCore/QCamera> +#include <Qt3DCore/QScene> +#include <Qt3DCore/private/qnode_p.h> + +#include <Qt3DInput/QInputAspect> + QT_BEGIN_NAMESPACE namespace Qt3D { @@ -60,7 +66,7 @@ void Quick3DConfiguration::setControlledCamera(QCamera *camera) if (m_camera != camera) { m_camera = camera; emit controlledCameraChanged(); - Qt3D::Quick::QuickWindow::getInstance()->setCamera(camera); + QMetaObject::invokeMethod(this, "applyControlledCameraChange", Qt::QueuedConnection); } } @@ -69,6 +75,24 @@ QCamera *Quick3DConfiguration::controlledCamera() const return m_camera; } +void Quick3DConfiguration::applyControlledCameraChange() +{ + QScene *scene = static_cast<QScene*>(QNodePrivate::get(m_camera)->scene()); + + // Too early, let's try again later + if (!scene) { + QMetaObject::invokeMethod(this, "applyControlledCameraChange", Qt::QueuedConnection); + return; + } + + Q_FOREACH (QAbstractAspect *aspect, scene->engine()->aspects()) { + if (aspect->property("camera").isValid()) { + aspect->setProperty("camera", QVariant::fromValue(m_camera)); + break; + } + } +} + } // Quick } // Qt3D diff --git a/src/quick3d/quick3d/items/quick3dconfiguration.h b/src/quick3d/quick3d/items/quick3dconfiguration.h index 2e14640e4..c2464400f 100644 --- a/src/quick3d/quick3d/items/quick3dconfiguration.h +++ b/src/quick3d/quick3d/items/quick3dconfiguration.h @@ -66,6 +66,9 @@ public: Q_SIGNALS: void controlledCameraChanged(); +private Q_SLOTS: + void applyControlledCameraChange(); + private: QCamera *m_camera; }; diff --git a/src/quick3d/quick3d/quickwindow.cpp b/src/quick3d/quick3d/quickwindow.cpp index 574dea235..c176b510f 100644 --- a/src/quick3d/quick3d/quickwindow.cpp +++ b/src/quick3d/quick3d/quickwindow.cpp @@ -41,8 +41,6 @@ #include "quickwindow.h" -#include <Qt3DCore/cameracontroller.h> - QT_BEGIN_NAMESPACE namespace Qt3D { diff --git a/src/src.pro b/src/src.pro index e1a6851ce..ad5508322 100644 --- a/src/src.pro +++ b/src/src.pro @@ -22,7 +22,7 @@ src_input.depends = src_render # Quick3D libs src_quick3d_core.subdir = $$PWD/quick3d/quick3d src_quick3d_core.target = sub-quick3d-core -src_quick3d_core.depends = src_core +src_quick3d_core.depends = src_core src_input src_quick3d_render.subdir = $$PWD/quick3d/quick3drenderer src_quick3d_render.target = sub-quick3d-render |