Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
proceduralmesh_p.h
Go to the documentation of this file.
1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4//
5// W A R N I N G
6// -------------
7//
8// This file is not part of the Qt API. It exists purely as an
9// implementation detail. This header file may change from version to
10// version without notice, or even be removed.
11//
12// We mean it.
13//
14
15#ifndef PROCEDURALMESH_H
16#define PROCEDURALMESH_H
17
18#include <QQuick3DGeometry>
19#include <QQmlEngine>
20#include <QList>
21#include <QVector3D>
22
24
27 Q_PROPERTY(unsigned int offset READ offset WRITE setOffset NOTIFY offsetChanged FINAL)
28 Q_PROPERTY(unsigned int count READ count WRITE setCount NOTIFY countChanged FINAL)
29 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged FINAL)
31
32public:
33 int offset() const;
34 void setOffset(int newOffset);
35
36 int count() const;
37 void setCount(int newCount);
38
39 QString name() const;
40 void setName(const QString &newName);
45 void isDirty();
46
47private:
48 int m_offset = 0;
49 int m_count = 0;
50 QString m_name;
51};
52
54{
69public:
77 };
79
82 void setPositions(const QList<QVector3D> &newPositions);
84 void setPrimitiveMode(PrimitiveMode newPrimitiveMode);
85
87 void setIndexes(const QList<unsigned int> &newIndexes);
88
90 void setNormals(const QList<QVector3D> &newNormals);
91
93 void setTangents(const QList<QVector3D> &newTangents);
94
96 void setBinormals(const QList<QVector3D> &newBinormals);
97
98 QList<QVector2D> uv0s() const;
99 void setUv0s(const QList<QVector2D> &newUv0s);
100
101 QList<QVector2D> uv1s() const;
102 void setUv1s(const QList<QVector2D> &newUv1s);
103
104 QList<QVector4D> colors() const;
105 void setColors(const QList<QVector4D> &newColors);
106
107 QList<QVector4D> joints() const;
108 void setJoints(const QList<QVector4D> &newJoints);
109
111 void setWeights(const QList<QVector4D> &newWeights);
112
114
127
128private Q_SLOTS:
129 void requestUpdate();
130 void updateGeometry();
131 void subsetDestroyed(QObject *subset);
132
133private:
134 bool supportsTriangleFanPrimitive() const;
135
136 static void qmlAppendProceduralMeshSubset(QQmlListProperty<ProceduralMeshSubset> *list, ProceduralMeshSubset *subset);
138 static qsizetype qmlProceduralMeshSubsetCount(QQmlListProperty<ProceduralMeshSubset> *list);
139 static void qmlClearProceduralMeshSubset(QQmlListProperty<ProceduralMeshSubset> *list);
140
141 bool m_updateRequested = false;
142 PrimitiveMode m_primitiveMode = Triangles;
143 QList<QVector3D> m_positions;
144 QList<unsigned int> m_indexes;
145 QList<QVector3D> m_normals;
146 QList<QVector3D> m_tangents;
147 QList<QVector3D> m_binormals;
148 QList<QVector2D> m_uv0s;
149 QList<QVector2D> m_uv1s;
150 QList<QVector4D> m_colors;
151 QList<QVector4D> m_joints;
152 QList<QVector4D> m_weights;
154};
155
157
158#endif // PROCEDURALMESH_H
void setCount(int newCount)
void setOffset(int newOffset)
void setName(const QString &newName)
void colorsChanged()
ProceduralMesh()
\qmlproperty List<QVector3D> ProceduralMesh::positions The positions attribute list.
void setUv1s(const QList< QVector2D > &newUv1s)
void weightsChanged()
void uv1sChanged()
QList< QVector2D > uv0s
void setWeights(const QList< QVector4D > &newWeights)
void jointsChanged()
void primitiveModeChanged()
QList< QVector4D > joints
void setPositions(const QList< QVector3D > &newPositions)
void positionsChanged()
QList< QVector3D > positions
void binormalsChanged()
void normalsChanged()
QList< QVector4D > colors
void setTangents(const QList< QVector3D > &newTangents)
QList< QVector3D > binormals
QQmlListProperty< ProceduralMeshSubset > subsets()
void setNormals(const QList< QVector3D > &newNormals)
void uv0sChanged()
void setJoints(const QList< QVector4D > &newJoints)
PrimitiveMode primitiveMode
void setBinormals(const QList< QVector3D > &newBinormals)
void setIndexes(const QList< unsigned int > &newIndexes)
void setUv0s(const QList< QVector2D > &newUv0s)
void setPrimitiveMode(PrimitiveMode newPrimitiveMode)
QQmlListProperty< ProceduralMeshSubset > subsets
QList< QVector3D > normals
QList< QVector4D > weights
QList< unsigned int > indexes
QList< QVector2D > uv1s
void indexesChanged()
void tangentsChanged()
QList< QVector3D > tangents
void setColors(const QList< QVector4D > &newColors)
Definition qlist.h:74
\inmodule QtCore
Definition qobject.h:90
The QQmlListProperty class allows applications to expose list-like properties of QObject-derived clas...
Definition qqmllist.h:24
\qmltype Geometry \inherits Object3D \inqmlmodule QtQuick3D \instantiates QQuick3DGeometry
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
Combined button and popup list for selecting options.
GLuint index
[2]
GLsizei const GLuint const GLfloat * weights
GLenum GLenum GLsizei count
GLenum GLuint GLintptr offset
GLuint name
#define QML_NAMED_ELEMENT(NAME)
#define QML_ELEMENT
#define Q_ENUM(x)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_SLOTS
#define Q_SIGNALS
ptrdiff_t qsizetype
Definition qtypes.h:70
QList< int > list
[14]