mirror of
https://github.com/GTAmodding/re3.git
synced 2025-10-18 01:29:22 +00:00
added animation system (with skin support for now)
This commit is contained in:
parent
a600fa9976
commit
e7ed4d0096
23 changed files with 3075 additions and 2 deletions
29
src/animation/AnimBlendNode.h
Normal file
29
src/animation/AnimBlendNode.h
Normal 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");
|
Loading…
Add table
Add a link
Reference in a new issue