29 Q_PROPERTY(
bool fill READ fill WRITE setFill NOTIFY fillChanged)
30 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
31 QML_NAMED_ELEMENT(ParticleModelShape3D)
32 QML_ADDED_IN_VERSION(6, 2)
35 QQuick3DParticleModelShape(QObject *parent =
nullptr);
36 ~QQuick3DParticleModelShape() override;
39 QQmlComponent *delegate()
const;
42 void setFill(
bool fill);
43 void setDelegate(QQmlComponent *delegate);
46 QVector3D getPosition(
int particleIndex) override;
47 QVector3D getSurfaceNormal(
int particleIndex) override;
51 void delegateChanged();
54 QVector3D randomPositionModel(
int particleIndex);
56 void clearModelVertexPositions();
57 void calculateModelVertexPositions();
59 QQmlComponent *m_delegate =
nullptr;
60 QQuick3DModel *m_model =
nullptr;
61 QVector<QVector3D> m_vertexPositions;
62 float m_modelTriangleAreasSum = 0;
63 QVector<
float> m_modelTriangleAreas;
64 QVector3D m_modelTriangleCenter;
65 QVector3D m_cachedNormal;
66 int m_cachedIndex = -1;
static QSSGMesh::Mesh loadModelShapeMesh(const QString &source)