31 Q_PROPERTY(
int maxAmount READ maxAmount WRITE setMaxAmount NOTIFY maxAmountChanged)
32 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged RESET resetColor)
33 Q_PROPERTY(QVector4D colorVariation READ colorVariation WRITE setColorVariation NOTIFY colorVariationChanged)
34 Q_PROPERTY(
bool unifiedColorVariation READ unifiedColorVariation WRITE setUnifiedColorVariation NOTIFY unifiedColorVariationChanged)
35 Q_PROPERTY(FadeType fadeInEffect READ fadeInEffect WRITE setFadeInEffect NOTIFY fadeInEffectChanged)
36 Q_PROPERTY(FadeType fadeOutEffect READ fadeOutEffect WRITE setFadeOutEffect NOTIFY fadeOutEffectChanged)
37 Q_PROPERTY(
int fadeInDuration READ fadeInDuration WRITE setFadeInDuration NOTIFY fadeInDurationChanged)
38 Q_PROPERTY(
int fadeOutDuration READ fadeOutDuration WRITE setFadeOutDuration NOTIFY fadeOutDurationChanged)
39 Q_PROPERTY(AlignMode alignMode READ alignMode WRITE setAlignMode NOTIFY alignModeChanged)
40 Q_PROPERTY(QVector3D alignTargetPosition READ alignTargetPosition WRITE setAlignTargetPosition NOTIFY alignTargetPositionChanged)
41 Q_PROPERTY(
bool hasTransparency READ hasTransparency WRITE setHasTransparency NOTIFY hasTransparencyChanged)
42 Q_PROPERTY(SortMode sortMode READ sortMode WRITE setSortMode NOTIFY sortModeChanged)
44 QML_NAMED_ELEMENT(Particle3D)
45 QML_UNCREATABLE(
"Particle3D is abstract")
46 QML_ADDED_IN_VERSION(6, 2)
49 QQuick3DParticle(QQuick3DObject *parent =
nullptr);
50 ~QQuick3DParticle() override;
64 AlignTowardsStartVelocity
77 QQuick3DParticleSystem *system()
const;
78 int maxAmount()
const;
80 QVector4D colorVariation()
const;
81 bool unifiedColorVariation()
const;
82 FadeType fadeInEffect()
const;
83 FadeType fadeOutEffect()
const;
84 int fadeInDuration()
const;
85 int fadeOutDuration()
const;
86 AlignMode alignMode()
const;
87 QVector3D alignTargetPosition()
const;
88 bool hasTransparency()
const;
89 SortMode sortMode()
const;
91 float opacity()
const;
95 void setSystem(QQuick3DParticleSystem *system);
96 void setMaxAmount(
int maxAmount);
97 void setColor(QColor color);
98 void setColorVariation(QVector4D colorVariation);
99 void setUnifiedColorVariation(
bool unified);
100 void setFadeInEffect(QQuick3DParticle::FadeType fadeInEffect);
101 void setFadeOutEffect(QQuick3DParticle::FadeType fadeOutEffect);
102 void setFadeInDuration(
int fadeInDuration);
103 void setFadeOutDuration(
int fadeOutDuration);
104 void setAlignMode(QQuick3DParticle::AlignMode alignMode);
105 void setAlignTargetPosition(
const QVector3D &alignPosition);
106 void setHasTransparency(
bool transparency);
107 void setSortMode(QQuick3DParticle::SortMode sortMode);
110 void systemChanged();
111 void maxAmountChanged();
113 void colorVariationChanged();
114 void unifiedColorVariationChanged();
115 void fadeInEffectChanged();
116 void fadeOutEffectChanged();
117 void fadeInDurationChanged();
118 void fadeOutDurationChanged();
119 void alignModeChanged();
120 void alignTargetPositionChanged();
121 void hasTransparencyChanged();
122 void sortModeChanged();
126 void componentComplete() override;
127 QQuick3DParticle(QQuick3DObjectPrivate &dd, QQuick3DNode *parent =
nullptr);
129 virtual void reset();
130 virtual void doSetMaxAmount(
int amount);
132 void updateBurstIndex(
int amount);
134 virtual int nextCurrentIndex(
const QQuick3DParticleEmitter *emitter);
135 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override
140 QList<QQuick3DParticleData> m_particleData;
141 QQuick3DParticleSpriteSequence *m_spriteSequence =
nullptr;
143 int m_maxAmount = 100;
144 int m_currentIndex = -1;
145 int m_lastBurstIndex = 0;
146 AlignMode m_alignMode = AlignNone;
147 QVector3D m_alignTarget;
148 virtual void setDepthBias(
float bias)
152 float depthBias()
const
158 friend class QQuick3DParticleSystem;
159 friend class QQuick3DParticleEmitter;
160 friend class QQuick3DParticleSpriteSequence;
162 QQuick3DParticleSystem *m_system =
nullptr;
165 QVector4D m_colorVariation;
166 bool m_unifiedColorVariation =
false;
167 FadeType m_fadeInEffect = FadeOpacity;
168 FadeType m_fadeOutEffect = FadeOpacity;
169 int m_fadeInDuration = 250;
170 int m_fadeOutDuration = 250;
171 float m_depthBias = 0.0f;
172 bool m_hasTransparency =
true;
173 SortMode m_sortMode = SortNone;