summaryrefslogtreecommitdiff
path: root/lyt/animation.h
blob: efd626a3b5bc4a8ebcd056103f8d45040b5418e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#ifndef LYTANIMATION_H
#define LYTANIMATION_H

#include <QString>
#include <QVector>
#include <QList>
#include <QStringList>

struct LYTAnimGroupInfo {
	QString name;
	quint8 unusedFlag;
};

struct LYTAnimStepKey {
	float frame;
	quint16 value;
};

struct LYTAnimHermiteKey {
	float frame, value, slope;
};

struct LYTAnimEntry {
	quint8 id, target, curveType;
	QVector<LYTAnimHermiteKey> keys;
	QVector<LYTAnimStepKey> stepKeys;
};

struct LYTAnimPiece {
	enum Type {
		PaneAnim = 0,
		TexSRTAnim,
		VisAnim,
		VtxClrAnim,
		MatClrAnim,
		TexPatAnim,
		IndTexSRTAnim
	};

	Type type;
	QList<LYTAnimEntry> entries;
};

struct LYTAnimBlock {
	QString name;
	bool isMaterial;
	QList<LYTAnimPiece> pieces;
};

class LYTAnimation {
public:
	LYTAnimation(QByteArray data);
	~LYTAnimation();

	QString name;
	quint16 sourceTagNumber;
	quint16 sourceStartFrame, sourceEndFrame;
	bool recursiveBind;

	QList<LYTAnimGroupInfo> groups;

	quint16 frameSize;
	bool loop;
	QStringList importedFiles;
	QList<LYTAnimBlock> blocks;
};

#endif // LYTANIMATION_H