// Copyright (C) 2019 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void initResources() { #ifdef QT_STATIC Q_INIT_RESOURCE(qmake_QtQuick3D); Q_INIT_RESOURCE(res); #endif } QT_BEGIN_NAMESPACE Q_GHS_KEEP_REFERENCE(qml_register_types_QtQuick3D); static QQmlPrivate::AutoParentResult qquick3dobject_autoParent(QObject *obj, QObject *parent) { // When setting a parent (especially during dynamic object creation) in QML, // also try to set up the analogous item/window relationship. if (QQuick3DObject *parentItem = qmlobject_cast(parent)) { QQuick3DObject *item = qmlobject_cast(obj); if (item) { // An Item has another Item item->setParentItem(parentItem); return QQmlPrivate::Parented; } return QQmlPrivate::IncompatibleObject; } else if (qmlobject_cast(obj)) { return QQmlPrivate::IncompatibleParent; } return QQmlPrivate::IncompatibleObject; } static void qt_quick3d_defineModule() { QQmlPrivate::RegisterAutoParent autoparent = { 0, &qquick3dobject_autoParent }; QQmlPrivate::qmlregister(QQmlPrivate::AutoParentRegistration, &autoparent); qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); } class QQuick3DPlugin : public QQmlEngineExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: QQuick3DPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) { volatile auto registration = &qml_register_types_QtQuick3D; Q_UNUSED(registration); qt_quick3d_defineModule(); initResources(); } }; QT_END_NAMESPACE #include "plugin.moc"