31 Q_PROPERTY(
bool fill READ fill WRITE setFill NOTIFY fillChanged)
32 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
33 QML_NAMED_ELEMENT(ParticleModelShape3D)
34 QML_ADDED_IN_VERSION(6, 2)
37 QQuick3DParticleModelShape(QObject *parent =
nullptr);
38 ~QQuick3DParticleModelShape() override;
41 QQmlComponent *delegate()
const;
44 void setFill(
bool fill);
45 void setDelegate(QQmlComponent *delegate);
48 QVector3D getPosition(
int particleIndex) override;
49 QVector3D getSurfaceNormal(
int particleIndex) override;
53 void delegateChanged();
56 QVector3D randomPositionModel(
int particleIndex);
58 void clearModelVertexPositions();
59 void calculateModelVertexPositions();
61 QQmlComponent *m_delegate =
nullptr;
62 QQuick3DModel *m_model =
nullptr;
63 QVector<QVector3D> m_vertexPositions;
64 float m_modelTriangleAreasSum = 0;
65 QVector<
float> m_modelTriangleAreas;
66 QVector3D m_modelTriangleCenter;
67 QVector3D m_cachedNormal;
68 int m_cachedIndex = -1;