diff options
author | aap <aap@papnet.eu> | 2020-06-01 20:28:04 +0200 |
---|---|---|
committer | aap <aap@papnet.eu> | 2020-06-01 20:32:43 +0200 |
commit | d8272b8812fb7e5b6a6045a796c535d10ebb95c2 (patch) | |
tree | 81402ea6f179b491284f13ef5f9d2dba0a39bd7e | |
parent | Merge branch 'miami' of github.com:GTAmodding/re3 into miami (diff) | |
download | re3-d8272b8812fb7e5b6a6045a796c535d10ebb95c2.tar re3-d8272b8812fb7e5b6a6045a796c535d10ebb95c2.tar.gz re3-d8272b8812fb7e5b6a6045a796c535d10ebb95c2.tar.bz2 re3-d8272b8812fb7e5b6a6045a796c535d10ebb95c2.tar.lz re3-d8272b8812fb7e5b6a6045a796c535d10ebb95c2.tar.xz re3-d8272b8812fb7e5b6a6045a796c535d10ebb95c2.tar.zst re3-d8272b8812fb7e5b6a6045a796c535d10ebb95c2.zip |
-rw-r--r-- | src/core/common.h | 4 | ||||
-rw-r--r-- | src/rw/RwHelper.cpp | 10 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/core/common.h b/src/core/common.h index ed331bbb..cc570bef 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -29,14 +29,14 @@ #define STREAMFILE(str) (((rw::StreamFile*)(str))->file) #define HIERNODEINFO(hier) ((hier)->nodeInfo) #define HIERNODEID(hier, i) ((hier)->nodeInfo[i].id) -#define HANIMFRAMES(anim) ((anim)->keyframes) +#define HANIMFRAME(anim, i) ((RwUInt8*)(anim)->keyframes + (i)*(anim)->interpInfo->animKeyFrameSize) #else #define RWHALFPIXEL // always d3d #define STREAMPOS(str) ((str)->Type.memory.position) #define STREAMFILE(str) ((str)->Type.file.fpFile) #define HIERNODEINFO(hier) ((hier)->pNodeInfo) #define HIERNODEID(hier, i) ((hier)->pNodeInfo[i].nodeID) -#define HANIMFRAMES(anim) ((anim)->pFrames) +#define HANIMFRAME(anim, i) ((RwUInt8*)(anim)->pFrames + (i)*(anim)->interpInfo->keyFrameSize) #endif #ifdef RWHALFPIXEL diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index a87874d7..76c6c753 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -329,14 +329,20 @@ HAnimAnimationCreateForHierarchy(RpHAnimHierarchy *hier) RpHAnimAnimation *anim = RpHAnimAnimationCreate(rpHANIMSTDKEYFRAMETYPEID, numNodes, 0, 0.0f); if(anim == nil) return nil; - RpHAnimStdKeyFrame *frame = (RpHAnimStdKeyFrame*)HANIMFRAMES(anim); + RpHAnimStdKeyFrame *frame; for(i = 0; i < numNodes; i++){ + frame = (RpHAnimStdKeyFrame*)HANIMFRAME(anim, i); // games uses struct size here, not safe frame->q.real = 1.0f; frame->q.imag.x = frame->q.imag.y = frame->q.imag.z = 0.0f; frame->t.x = frame->t.y = frame->t.z = 0.0f; +#ifdef FIX_BUGS + // times are subtracted and divided giving NaNs + // so they can't both be 0 + frame->time = i/hier->numNodes; +#else frame->time = 0.0f; +#endif frame->prevFrame = nil; - frame++; } return anim; } |