33 Q_PROPERTY(
int frameCount READ frameCount WRITE setFrameCount NOTIFY frameCountChanged)
34 Q_PROPERTY(
int frameIndex READ frameIndex WRITE setFrameIndex NOTIFY frameIndexChanged)
35 Q_PROPERTY(
bool interpolate READ interpolate WRITE setInterpolate NOTIFY interpolateChanged)
36 Q_PROPERTY(
int duration READ duration WRITE setDuration NOTIFY durationChanged)
37 Q_PROPERTY(
int durationVariation READ durationVariation WRITE setDurationVariation NOTIFY durationVariationChanged)
38 Q_PROPERTY(
bool randomStart READ randomStart WRITE setRandomStart NOTIFY randomStartChanged)
39 Q_PROPERTY(AnimationDirection animationDirection READ animationDirection WRITE setAnimationDirection NOTIFY animationDirectionChanged)
41 QML_NAMED_ELEMENT(SpriteSequence3D)
42 Q_INTERFACES(QQmlParserStatus)
43 QML_ADDED_IN_VERSION(6, 2)
46 enum AnimationDirection
54 Q_ENUM(AnimationDirection)
56 QQuick3DParticleSpriteSequence(QObject *parent =
nullptr);
57 ~QQuick3DParticleSpriteSequence() override;
59 int frameCount()
const;
60 int frameIndex()
const;
61 bool interpolate()
const;
63 int durationVariation()
const;
64 bool randomStart()
const;
65 AnimationDirection animationDirection()
const;
68 void setFrameCount(
int frameCount);
69 void setFrameIndex(
int frameIndex);
70 void setInterpolate(
bool interpolate);
71 void setDuration(
int duration);
72 void setDurationVariation(
int durationVariation);
73 void setRandomStart(
bool randomStart);
74 void setAnimationDirection(QQuick3DParticleSpriteSequence::AnimationDirection animationDirection);
77 void frameCountChanged();
78 void frameIndexChanged();
79 void interpolateChanged();
80 void durationChanged();
81 void durationVariationChanged();
82 void randomStartChanged();
83 void animationDirectionChanged();
87 void componentComplete() override;
88 void classBegin() override {}
91 friend class QQuick3DParticleSpriteParticle;
92 friend class QQuick3DParticleSystem;
94 void markNodesDirty();
95 float firstFrame(
int index,
bool singleFrame);
97 QQuick3DParticleSpriteParticle *m_parentParticle =
nullptr;
100 bool m_interpolate =
true;
102 int m_durationVariation = 0;
103 bool m_randomStart =
false;
104 AnimationDirection m_animationDirection = AnimationDirection::Normal;
static QVector3D reflect(const QVector3D &I, QVector3D &N)
static QMatrix4x4 rotationFromNormal(const QVector3D &n)