31 Q_PROPERTY(
int frameCount READ frameCount WRITE setFrameCount NOTIFY frameCountChanged)
32 Q_PROPERTY(
int frameIndex READ frameIndex WRITE setFrameIndex NOTIFY frameIndexChanged)
33 Q_PROPERTY(
bool interpolate READ interpolate WRITE setInterpolate NOTIFY interpolateChanged)
34 Q_PROPERTY(
int duration READ duration WRITE setDuration NOTIFY durationChanged)
35 Q_PROPERTY(
int durationVariation READ durationVariation WRITE setDurationVariation NOTIFY durationVariationChanged)
36 Q_PROPERTY(
bool randomStart READ randomStart WRITE setRandomStart NOTIFY randomStartChanged)
37 Q_PROPERTY(AnimationDirection animationDirection READ animationDirection WRITE setAnimationDirection NOTIFY animationDirectionChanged)
39 QML_NAMED_ELEMENT(SpriteSequence3D)
40 Q_INTERFACES(QQmlParserStatus)
41 QML_ADDED_IN_VERSION(6, 2)
44 enum AnimationDirection
52 Q_ENUM(AnimationDirection)
54 QQuick3DParticleSpriteSequence(QObject *parent =
nullptr);
55 ~QQuick3DParticleSpriteSequence() override;
57 int frameCount()
const;
58 int frameIndex()
const;
59 bool interpolate()
const;
61 int durationVariation()
const;
62 bool randomStart()
const;
63 AnimationDirection animationDirection()
const;
66 void setFrameCount(
int frameCount);
67 void setFrameIndex(
int frameIndex);
68 void setInterpolate(
bool interpolate);
69 void setDuration(
int duration);
70 void setDurationVariation(
int durationVariation);
71 void setRandomStart(
bool randomStart);
72 void setAnimationDirection(QQuick3DParticleSpriteSequence::AnimationDirection animationDirection);
75 void frameCountChanged();
76 void frameIndexChanged();
77 void interpolateChanged();
78 void durationChanged();
79 void durationVariationChanged();
80 void randomStartChanged();
81 void animationDirectionChanged();
85 void componentComplete() override;
86 void classBegin() override {}
89 friend class QQuick3DParticleSpriteParticle;
90 friend class QQuick3DParticleSystem;
92 void markNodesDirty();
93 float firstFrame(
int index,
bool singleFrame);
95 QQuick3DParticleSpriteParticle *m_parentParticle =
nullptr;
98 bool m_interpolate =
true;
100 int m_durationVariation = 0;
101 bool m_randomStart =
false;
102 AnimationDirection m_animationDirection = AnimationDirection::Normal;
static QVector3D reflect(const QVector3D &I, QVector3D &N)
static QMatrix4x4 rotationFromNormal(const QVector3D &n)