mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 04:10:00 +00:00
fixed hanim for 64 bit
This commit is contained in:
parent
15918feb8e
commit
b5b64ca351
|
@ -18,7 +18,7 @@ struct AnimBlendFrameData
|
||||||
#ifdef PED_SKIN
|
#ifdef PED_SKIN
|
||||||
union {
|
union {
|
||||||
RwFrame *frame;
|
RwFrame *frame;
|
||||||
RpHAnimStdKeyFrame *hanimFrame;
|
RpHAnimStdInterpFrame *hanimFrame;
|
||||||
};
|
};
|
||||||
int32 nodeID;
|
int32 nodeID;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -236,7 +236,7 @@ FrameUpdateCallBackSkinned(AnimBlendFrameData *frame, void *arg)
|
||||||
CVector vec, pos(0.0f, 0.0f, 0.0f);
|
CVector vec, pos(0.0f, 0.0f, 0.0f);
|
||||||
CQuaternion q, rot(0.0f, 0.0f, 0.0f, 0.0f);
|
CQuaternion q, rot(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
float totalBlendAmount = 0.0f;
|
float totalBlendAmount = 0.0f;
|
||||||
RpHAnimStdKeyFrame *xform = frame->hanimFrame;
|
RpHAnimStdInterpFrame *xform = frame->hanimFrame;
|
||||||
CAnimBlendNode **node;
|
CAnimBlendNode **node;
|
||||||
AnimBlendFrameUpdateData *updateData = (AnimBlendFrameUpdateData*)arg;
|
AnimBlendFrameUpdateData *updateData = (AnimBlendFrameUpdateData*)arg;
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ FrameUpdateCallBackWithVelocityExtractionSkinned(AnimBlendFrameData *frame, void
|
||||||
float curx = 0.0f, cury = 0.0f;
|
float curx = 0.0f, cury = 0.0f;
|
||||||
float endx = 0.0f, endy = 0.0f;
|
float endx = 0.0f, endy = 0.0f;
|
||||||
bool looped = false;
|
bool looped = false;
|
||||||
RpHAnimStdKeyFrame *xform = frame->hanimFrame;
|
RpHAnimStdInterpFrame *xform = frame->hanimFrame;
|
||||||
CAnimBlendNode **node;
|
CAnimBlendNode **node;
|
||||||
AnimBlendFrameUpdateData *updateData = (AnimBlendFrameUpdateData*)arg;
|
AnimBlendFrameUpdateData *updateData = (AnimBlendFrameUpdateData*)arg;
|
||||||
|
|
||||||
|
@ -383,7 +383,7 @@ FrameUpdateCallBackWith3dVelocityExtractionSkinned(AnimBlendFrameData *frame, vo
|
||||||
CVector cur(0.0f, 0.0f, 0.0f);
|
CVector cur(0.0f, 0.0f, 0.0f);
|
||||||
CVector end(0.0f, 0.0f, 0.0f);
|
CVector end(0.0f, 0.0f, 0.0f);
|
||||||
bool looped = false;
|
bool looped = false;
|
||||||
RpHAnimStdKeyFrame *xform = frame->hanimFrame;
|
RpHAnimStdInterpFrame *xform = frame->hanimFrame;
|
||||||
CAnimBlendNode **node;
|
CAnimBlendNode **node;
|
||||||
AnimBlendFrameUpdateData *updateData = (AnimBlendFrameUpdateData*)arg;
|
AnimBlendFrameUpdateData *updateData = (AnimBlendFrameUpdateData*)arg;
|
||||||
|
|
||||||
|
|
|
@ -170,7 +170,7 @@ RpAnimBlendClumpInitSkinned(RpClump *clump)
|
||||||
for(i = 0; i < numBones; i++){
|
for(i = 0; i < numBones; i++){
|
||||||
frames[i].nodeID = HIERNODEID(hier, i);
|
frames[i].nodeID = HIERNODEID(hier, i);
|
||||||
frames[i].resetPos = boneTab[i];
|
frames[i].resetPos = boneTab[i];
|
||||||
frames[i].hanimFrame = (RpHAnimStdKeyFrame*)rpHANIMHIERARCHYGETINTERPFRAME(hier, i);
|
frames[i].hanimFrame = (RpHAnimStdInterpFrame*)rpHANIMHIERARCHYGETINTERPFRAME(hier, i);
|
||||||
}
|
}
|
||||||
clumpData->ForAllFrames(FrameInitCBskin, nil);
|
clumpData->ForAllFrames(FrameInitCBskin, nil);
|
||||||
clumpData->frames[0].flag |= AnimBlendFrameData::VELOCITY_EXTRACTION;
|
clumpData->frames[0].flag |= AnimBlendFrameData::VELOCITY_EXTRACTION;
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#define HIERNODEINFO(hier) ((hier)->pNodeInfo)
|
#define HIERNODEINFO(hier) ((hier)->pNodeInfo)
|
||||||
#define HIERNODEID(hier, i) ((hier)->pNodeInfo[i].nodeID)
|
#define HIERNODEID(hier, i) ((hier)->pNodeInfo[i].nodeID)
|
||||||
#define HANIMFRAME(anim, i) ((RwUInt8*)(anim)->pFrames + (i)*(anim)->interpInfo->keyFrameSize)
|
#define HANIMFRAME(anim, i) ((RwUInt8*)(anim)->pFrames + (i)*(anim)->interpInfo->keyFrameSize)
|
||||||
|
#define RpHAnimStdInterpFrame RpHAnimStdKeyFrame
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RWHALFPIXEL
|
#ifdef RWHALFPIXEL
|
||||||
|
|
|
@ -579,7 +579,7 @@ CEntity::UpdateRpHAnim(void)
|
||||||
char buf[256];
|
char buf[256];
|
||||||
if(this == (CEntity*)FindPlayerPed())
|
if(this == (CEntity*)FindPlayerPed())
|
||||||
for(i = 0; i < hier->numNodes; i++){
|
for(i = 0; i < hier->numNodes; i++){
|
||||||
RpHAnimStdKeyFrame *kf = (RpHAnimStdKeyFrame*)rpHANIMHIERARCHYGETINTERPFRAME(hier, i);
|
RpHAnimStdInterpFrame *kf = (RpHAnimStdInterpFrame*)rpHANIMHIERARCHYGETINTERPFRAME(hier, i);
|
||||||
sprintf(buf, "%6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %d %s",
|
sprintf(buf, "%6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %d %s",
|
||||||
kf->q.imag.x, kf->q.imag.y, kf->q.imag.z, kf->q.real,
|
kf->q.imag.x, kf->q.imag.y, kf->q.imag.z, kf->q.real,
|
||||||
kf->t.x, kf->t.y, kf->t.z,
|
kf->t.x, kf->t.y, kf->t.z,
|
||||||
|
|
|
@ -17,7 +17,15 @@ struct RpHAnimStdKeyFrame
|
||||||
RtQuat q;
|
RtQuat q;
|
||||||
RwV3d t;
|
RwV3d t;
|
||||||
};
|
};
|
||||||
|
// same story, this one only exists in later RW versions
|
||||||
|
// but we need it for 64 bit builds because offset and size differs!
|
||||||
|
struct RpHAnimStdInterpFrame
|
||||||
|
{
|
||||||
|
RpHAnimStdKeyFrame *keyFrame1;
|
||||||
|
RpHAnimStdKeyFrame *keyFrame2;
|
||||||
|
RtQuat q;
|
||||||
|
RwV3d t;
|
||||||
|
};
|
||||||
|
|
||||||
enum RpHAnimHierarchyFlag
|
enum RpHAnimHierarchyFlag
|
||||||
{
|
{
|
||||||
|
@ -56,7 +64,7 @@ RwBool RpHAnimHierarchyUpdateMatrices(RpHAnimHierarchy *hierarchy);
|
||||||
#define rpHANIMHIERARCHYGETINTERPFRAME( hierarchy, nodeIndex ) \
|
#define rpHANIMHIERARCHYGETINTERPFRAME( hierarchy, nodeIndex ) \
|
||||||
( (void *)( ( (RwUInt8 *)&(hierarchy->interpolator[1]) + \
|
( (void *)( ( (RwUInt8 *)&(hierarchy->interpolator[1]) + \
|
||||||
((nodeIndex) * \
|
((nodeIndex) * \
|
||||||
hierarchy->interpolator->currentAnimKeyFrameSize) ) ) )
|
hierarchy->interpolator->currentInterpKeyFrameSize) ) ) )
|
||||||
|
|
||||||
|
|
||||||
RpHAnimAnimation *RpHAnimAnimationCreate(RwInt32 typeID, RwInt32 numFrames, RwInt32 flags, RwReal duration);
|
RpHAnimAnimation *RpHAnimAnimationCreate(RwInt32 typeID, RwInt32 numFrames, RwInt32 flags, RwReal duration);
|
||||||
|
|
Loading…
Reference in a new issue