33 Q_PROPERTY(
int maxAmount READ maxAmount WRITE setMaxAmount NOTIFY maxAmountChanged)
34 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged RESET resetColor)
35 Q_PROPERTY(QVector4D colorVariation READ colorVariation WRITE setColorVariation NOTIFY colorVariationChanged)
36 Q_PROPERTY(
bool unifiedColorVariation READ unifiedColorVariation WRITE setUnifiedColorVariation NOTIFY unifiedColorVariationChanged)
37 Q_PROPERTY(FadeType fadeInEffect READ fadeInEffect WRITE setFadeInEffect NOTIFY fadeInEffectChanged)
38 Q_PROPERTY(FadeType fadeOutEffect READ fadeOutEffect WRITE setFadeOutEffect NOTIFY fadeOutEffectChanged)
39 Q_PROPERTY(
int fadeInDuration READ fadeInDuration WRITE setFadeInDuration NOTIFY fadeInDurationChanged)
40 Q_PROPERTY(
int fadeOutDuration READ fadeOutDuration WRITE setFadeOutDuration NOTIFY fadeOutDurationChanged)
41 Q_PROPERTY(AlignMode alignMode READ alignMode WRITE setAlignMode NOTIFY alignModeChanged)
42 Q_PROPERTY(QVector3D alignTargetPosition READ alignTargetPosition WRITE setAlignTargetPosition NOTIFY alignTargetPositionChanged)
43 Q_PROPERTY(
bool hasTransparency READ hasTransparency WRITE setHasTransparency NOTIFY hasTransparencyChanged)
44 Q_PROPERTY(SortMode sortMode READ sortMode WRITE setSortMode NOTIFY sortModeChanged)
46 QML_NAMED_ELEMENT(Particle3D)
47 QML_UNCREATABLE(
"Particle3D is abstract")
48 QML_ADDED_IN_VERSION(6, 2)
51 QQuick3DParticle(QQuick3DObject *parent =
nullptr);
52 ~QQuick3DParticle() override;
66 AlignTowardsStartVelocity
79 QQuick3DParticleSystem *system()
const;
80 int maxAmount()
const;
82 QVector4D colorVariation()
const;
83 bool unifiedColorVariation()
const;
84 FadeType fadeInEffect()
const;
85 FadeType fadeOutEffect()
const;
86 int fadeInDuration()
const;
87 int fadeOutDuration()
const;
88 AlignMode alignMode()
const;
89 QVector3D alignTargetPosition()
const;
90 bool hasTransparency()
const;
91 SortMode sortMode()
const;
93 float opacity()
const;
97 void setSystem(QQuick3DParticleSystem *system);
98 void setMaxAmount(
int maxAmount);
99 void setColor(QColor color);
100 void setColorVariation(QVector4D colorVariation);
101 void setUnifiedColorVariation(
bool unified);
102 void setFadeInEffect(QQuick3DParticle::FadeType fadeInEffect);
103 void setFadeOutEffect(QQuick3DParticle::FadeType fadeOutEffect);
104 void setFadeInDuration(
int fadeInDuration);
105 void setFadeOutDuration(
int fadeOutDuration);
106 void setAlignMode(QQuick3DParticle::AlignMode alignMode);
107 void setAlignTargetPosition(
const QVector3D &alignPosition);
108 void setHasTransparency(
bool transparency);
109 void setSortMode(QQuick3DParticle::SortMode sortMode);
112 void systemChanged();
113 void maxAmountChanged();
115 void colorVariationChanged();
116 void unifiedColorVariationChanged();
117 void fadeInEffectChanged();
118 void fadeOutEffectChanged();
119 void fadeInDurationChanged();
120 void fadeOutDurationChanged();
121 void alignModeChanged();
122 void alignTargetPositionChanged();
123 void hasTransparencyChanged();
124 void sortModeChanged();
128 void componentComplete() override;
129 QQuick3DParticle(QQuick3DObjectPrivate &dd, QQuick3DNode *parent =
nullptr);
131 virtual void reset();
132 virtual void doSetMaxAmount(
int amount);
134 void updateBurstIndex(
int amount);
136 virtual int nextCurrentIndex(
const QQuick3DParticleEmitter *emitter);
137 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override
142 QList<QQuick3DParticleData> m_particleData;
143 QQuick3DParticleSpriteSequence *m_spriteSequence =
nullptr;
145 int m_maxAmount = 100;
146 int m_currentIndex = -1;
147 int m_lastBurstIndex = 0;
148 AlignMode m_alignMode = AlignNone;
149 QVector3D m_alignTarget;
150 virtual void setDepthBias(
float bias)
154 float depthBias()
const
160 friend class QQuick3DParticleSystem;
161 friend class QQuick3DParticleEmitter;
162 friend class QQuick3DParticleSpriteSequence;
164 QQuick3DParticleSystem *m_system =
nullptr;
167 QVector4D m_colorVariation;
168 bool m_unifiedColorVariation =
false;
169 FadeType m_fadeInEffect = FadeOpacity;
170 FadeType m_fadeOutEffect = FadeOpacity;
171 int m_fadeInDuration = 250;
172 int m_fadeOutDuration = 250;
173 float m_depthBias = 0.0f;
174 bool m_hasTransparency =
true;
175 SortMode m_sortMode = SortNone;