blob: ea75fbfa5343bbd73d5aa72fb63d0b3cddc97a24 (
plain) (
blame)
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
|
#pragma once
#include "AnimBlendSequence.h"
class CAnimBlendAssociation;
// The interpolated state between two key frames in a sequence
class CAnimBlendNode
{
public:
// for slerp
float theta; // angle between quaternions
float invSin; // 1/sin(theta)
// indices into array in sequence
int32 frameA; // next key frame
int32 frameB; // previous key frame
float remainingTime; // time until frames have to advance
CAnimBlendSequence *sequence;
CAnimBlendAssociation *association;
void Init(void);
bool Update(CVector &trans, CQuaternion &rot, float weight);
bool NextKeyFrame(void);
bool FindKeyFrame(float t);
void CalcDeltas(void);
void GetCurrentTranslation(CVector &trans, float weight);
void GetEndTranslation(CVector &trans, float weight);
};
static_assert(sizeof(CAnimBlendNode) == 0x1C, "CAnimBlendNode: error");
|