38 QML_NAMED_ELEMENT(RuntimeLoader)
39 QML_ADDED_IN_VERSION(6, 2)
41 Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
42 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
43 Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged)
44 Q_PROPERTY(QQuick3DBounds3 bounds READ bounds NOTIFY boundsChanged)
45 Q_PROPERTY(QQuick3DInstancing *instancing READ instancing WRITE setInstancing NOTIFY instancingChanged)
46 Q_PROPERTY(QStringList supportedExtensions READ supportedExtensions CONSTANT REVISION(6, 7))
47 Q_PROPERTY(QStringList materialVariants READ materialVariants NOTIFY materialVariantsChanged REVISION(6, 13))
48 Q_PROPERTY(QString materialVariant READ materialVariant WRITE setMaterialVariant NOTIFY materialVariantChanged
50#if QT_CONFIG(mimetype)
51 Q_PROPERTY(QList<QMimeType> supportedMimeTypes READ supportedMimeTypes CONSTANT REVISION(6, 7))
55 explicit QQuick3DRuntimeLoader(QQuick3DNode *parent =
nullptr);
57 enum class QueryFilter
69 void setSource(
const QUrl &newSource);
70 void componentComplete() override;
71 Q_REVISION(6, 7)
static QStringList supportedExtensions();
72#if QT_CONFIG(mimetype)
73 Q_REVISION(6, 7)
static QList<QMimeType> supportedMimeTypes();
76 enum class Status { Empty, Success, Error };
78 Status status()
const;
79 QString errorString()
const;
80 const QQuick3DBounds3 &bounds()
const;
82 QQuick3DInstancing *instancing()
const;
83 void setInstancing(QQuick3DInstancing *newInstancing);
85 Q_REVISION(6, 13) QStringList materialVariants()
const;
86 Q_REVISION(6, 13) QString materialVariant()
const;
87 Q_REVISION(6, 13)
void setMaterialVariant(
const QString &variant);
89 Q_REVISION(6, 12) Q_INVOKABLE QQuick3DObject *query(
const QString &name)
const;
90 Q_REVISION(6, 12) Q_INVOKABLE QList<QQuick3DObject *> queryAll(QueryFilter filter)
const;
95 void errorStringChanged();
97 void instancingChanged();
98 Q_REVISION(6, 13)
void materialVariantsChanged();
99 Q_REVISION(6, 13)
void materialVariantChanged();
102 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
105 void calculateBounds();
109 QSSGRuntimeObjectNameMap m_objects;
110 QSSGRuntimeObjectTypeMap m_objectsByType;
112 QPointer<QQuick3DNode> m_root;
113 QPointer<QQuick3DNode> m_imported;
116 Status m_status = Status::Empty;
117 QString m_errorString;
118 bool m_boundsDirty =
false;
119 QQuick3DBounds3 m_bounds;
120 QQuick3DInstancing *m_instancing =
nullptr;
121 bool m_instancingChanged =
false;
123 void applyMaterialVariant();
124 struct ModelVariantMaterials
126 QPointer<QQuick3DModel> model;
127 QList<QList<QQuick3DMaterial *>> perVariant;
128 QList<QQuick3DMaterial *> defaults;
130 QList<ModelVariantMaterials> m_variantModels;
131 QStringList m_materialVariants;
132 QString m_materialVariant;