re3/src/animation/AnimBlendSequence.h
Sergeanur 0aa7f13c32 Merge branch 'master' into miami
# Conflicts:
#	src/animation/AnimBlendAssociation.h
#	src/animation/AnimBlendClumpData.h
#	src/animation/AnimManager.h
#	src/animation/FrameUpdate.cpp
#	src/control/AutoPilot.h
#	src/control/PathFind.h
#	src/core/PlayerInfo.h
#	src/entities/Building.h
#	src/entities/Dummy.h
#	src/entities/Entity.h
#	src/entities/Physical.h
#	src/entities/Treadable.h
#	src/modelinfo/BaseModelInfo.h
#	src/modelinfo/ClumpModelInfo.cpp
#	src/modelinfo/ClumpModelInfo.h
#	src/modelinfo/PedModelInfo.h
#	src/modelinfo/SimpleModelInfo.h
#	src/modelinfo/TimeModelInfo.h
#	src/modelinfo/VehicleModelInfo.h
#	src/objects/CutsceneHead.h
#	src/objects/CutsceneObject.h
#	src/objects/DummyObject.h
#	src/objects/Object.h
#	src/peds/DummyPed.h
#	src/peds/PedIK.cpp
#	src/rw/VisibilityPlugins.cpp
#	src/vehicles/Automobile.h
#	src/vehicles/Boat.h
#	src/vehicles/Heli.h
#	src/vehicles/Plane.h
#	src/vehicles/Train.h
#	src/vehicles/Vehicle.h
2020-05-11 21:07:12 +03:00

60 lines
1.3 KiB
C++

#pragma once
#include "Quaternion.h"
// TODO: put them somewhere else?
struct KeyFrame {
CQuaternion rotation;
float deltaTime; // relative to previous key frame
};
struct KeyFrameTrans : KeyFrame {
CVector translation;
};
// The sequence of key frames of one animated node
class CAnimBlendSequence
{
public:
enum {
KF_ROT = 1,
KF_TRANS = 2
};
int32 type;
char name[24];
int32 numFrames;
#ifdef PED_SKIN
int16 boneTag;
#endif
void *keyFrames;
void *keyFramesCompressed;
CAnimBlendSequence(void);
virtual ~CAnimBlendSequence(void);
void SetName(char *name);
void SetNumFrames(int numFrames, bool translation, bool compressed);
void RemoveQuaternionFlips(void);
KeyFrame *GetKeyFrame(int n) {
return type & KF_TRANS ?
&((KeyFrameTrans*)keyFrames)[n] :
&((KeyFrame*)keyFrames)[n];
}
KeyFrame *GetKeyFrameCompressed(int n) {
return type & KF_TRANS ?
&((KeyFrameTrans*)keyFramesCompressed)[n] :
&((KeyFrame*)keyFramesCompressed)[n];
}
bool HasTranslation(void) { return !!(type & KF_TRANS); }
// TODO? these are unused
// void Uncompress(void);
// void CompressKeyframes(void);
// void RemoveUncompressedData(void);
#ifdef PED_SKIN
void SetBoneTag(int tag) { boneTag = tag; }
#endif
};
#ifndef PED_SKIN
VALIDATE_SIZE(CAnimBlendSequence, 0x2C);
#endif