blob: 46f2fee455994b0d33546d79b014f112cd92cccd (
plain) (
tree)
|
|
#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);
};
#ifdef CHECK_STRUCT_SIZES
static_assert(sizeof(CAnimBlendNode) == 0x1C, "CAnimBlendNode: error");
#endif
|