10bool QSSGSceneDesc::PropertyCall::set(QQuick3DObject &,
const char *,
const void *) {
return false; }
11bool QSSGSceneDesc::PropertyCall::get(
const QQuick3DObject &,
const void *[])
const {
return false; }
16 return ++scene.nodeId;
21 Q_ASSERT(parent.scene);
22 node.scene = parent.scene;
23 node.id = getNextNodeId(*parent.scene);
25 if (QSSGRenderGraphObject::isResource(node.runtimeType) || node.nodeType == Node::Type::Mesh || node.nodeType == Node::Type::Skeleton)
26 node.scene->resources.push_back(&node);
28 parent.children.push_back(&node);
34 addNode(*scene.root, node);
36 Q_ASSERT(node.id == 0);
42void QSSGSceneDesc::Scene::reset()
51void QSSGSceneDesc::Scene::cleanup()
59 root->cleanupChildren();
64 qDeleteAll(resources);
67 for (
auto *anim : std::as_const(animations)) {
68 for (
auto *ch : std::as_const(anim->channels)) {
80 return QMetaType::fromType<QSSGSceneDesc::ListView *>();
88 if (value.metaType() == QMetaType::fromType<QSSGSceneDesc::NodeList *>())
89 delete value.value<NodeList *>();
90 else if (value.metaType() == QMetaType::fromType<QSSGSceneDesc::ListView *>())
91 delete value.value<ListView *>();
93 else if ((value.metaType().flags() & QMetaType::TypeFlag::IsPointer)
95 && (value.metaType() != QMetaType::fromType<QSSGSceneDesc::Mesh *>())
98 && (value.metaType().id() != qMetaTypeId<QSSGSceneDesc::Node *>())) {
99 qWarning() << value.metaType().name() <<
" was not destroyed correctly.";
105 for (
auto *prop : std::as_const(node.properties))
110QSSGSceneDesc::Node::~Node() { destructNode(*
this); }
112void QSSGSceneDesc::Node::cleanupChildren()
114 auto firstIt = children.begin();
115 auto lastIt = children.end();
116 for (
auto it = firstIt; it != lastIt; ++it) {
118 node->cleanupChildren();
123QSSGSceneDesc::Property *
QSSGSceneDesc::setProperty(Node &node,
const char *name, QVariant &&value)
125 Q_ASSERT(node.scene);
126 QSSGSceneDesc::Property *prop =
new QSSGSceneDesc::Property;
128 prop->call =
nullptr;
130 node.properties.push_back(prop);
134QSSGSceneDesc::Model::Model() : Node(Node::Type::Model, Node::RuntimeType::Model) {}
136QSSGSceneDesc::Camera::Camera(RuntimeType rt) : Node(Node::Type::Camera, rt) {}
138QSSGSceneDesc::Light::Light(RuntimeType rt) : Node(Node::Type::Light, rt) {}
140QSSGSceneDesc::Skin::Skin() : Node(Node::Type::Skin, Node::RuntimeType::Skin) {}
142QSSGSceneDesc::Skeleton::Skeleton() : Node(Node::Type::Skeleton, Node::RuntimeType::Skeleton) {}
144QSSGSceneDesc::Joint::Joint() : Node(Node::Type::Joint, Node::RuntimeType::Joint) {}
146QSSGSceneDesc::MorphTarget::MorphTarget() : Node(Node::Type::MorphTarget, Node::RuntimeType::MorphTarget) {}
148QSSGSceneDesc::Material::Material(RuntimeType rt) : Node(Node::Type::Material, rt) {}
150QSSGSceneDesc::Texture::Texture(RuntimeType rt,
const QByteArray &name)
151 : Node(name, Node::Type::Texture, rt)
155QSSGSceneDesc::TextureData::TextureData(
const QByteArray &textureData, QSize size,
const QByteArray &format, quint8 flags, QByteArray name)
156 : Node(name, Node::Type::Texture, RuntimeType::TextureData)
163QSSGSceneDesc::Mesh::Mesh(QByteArray name, qsizetype index)
164 : Node(name, Node::Type::Mesh, RuntimeType::Node)
Q_QUICK3DASSETUTILS_EXPORT void addNode(Node &parent, Node &node)
Q_QUICK3DASSETUTILS_EXPORT void addNode(Scene &scene, Node &node)
Q_QUICK3DASSETUTILS_EXPORT void destructNode(QSSGSceneDesc::Node &node)
Q_QUICK3DASSETUTILS_EXPORT void destructValue(QVariant &value)
Combined button and popup list for selecting options.
static quint16 getNextNodeId(QSSGSceneDesc::Scene &scene)