added animation system (with skin support for now)

This commit is contained in:
aap 2019-06-11 08:59:28 +02:00
commit e7ed4d0096
23 changed files with 3075 additions and 2 deletions

View file

@ -0,0 +1,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");