diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/code/z_skelanime.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index 43e7e02d8..6be89bafe 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -716,7 +716,7 @@ Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32 s32 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable) { LegacyAnimationHeader* animHeader = SEGMENTED_TO_VIRTUAL(animation); s32 limbCount = animHeader->limbCount; - JointKey* key = SEGMENTED_TO_VIRTUAL(animHeader->jointKey); + LegacyJointKey* key = SEGMENTED_TO_VIRTUAL(animHeader->jointKey); s16* frameData = SEGMENTED_TO_VIRTUAL(animHeader->frameData); s16* staticData = &frameData[0]; s16* dynamicData = &frameData[frame]; @@ -829,6 +829,10 @@ AnimationEntry* AnimationContext_AddEntry(AnimationContext* animationCtx, Animat return entry; } +#define LINK_ANIMATION_OFFSET(addr, offset) \ + (((uintptr_t)_link_animetionSegmentRomStart) + ((uintptr_t)(addr)) - ((uintptr_t)_link_animetionSegmentStart) + \ + (offset)) + /** * Requests loading frame data from the Link animation into frameTable */ @@ -1011,6 +1015,8 @@ void AnimationContext_MoveActor(PlayState* play, AnimationEntryData* data) { actor->world.pos.z += diff.z * actor->scale.z; } +typedef void (*AnimationEntryCallback)(struct PlayState* play, AnimationEntryData* data); + /** * Performs all requests in the animation queue, then resets the queue flags. */ @@ -1784,7 +1790,7 @@ void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle) { f32 sin; f32 cos; - if (skelAnime->moveFlags & ANIM_FLAG_NOMOVE) { + if (skelAnime->moveFlags & ANIM_FLAG_NO_MOVE) { diff->x = diff->z = 0.0f; } else { x = skelAnime->jointTable[0].x; @@ -1806,8 +1812,8 @@ void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle) { skelAnime->jointTable[0].x = skelAnime->baseTransl.x; skelAnime->prevTransl.z = skelAnime->jointTable[0].z; skelAnime->jointTable[0].z = skelAnime->baseTransl.z; - if (skelAnime->moveFlags & ANIM_FLAG_UPDATEY) { - if (skelAnime->moveFlags & ANIM_FLAG_NOMOVE) { + if (skelAnime->moveFlags & ANIM_FLAG_UPDATE_Y) { + if (skelAnime->moveFlags & ANIM_FLAG_NO_MOVE) { diff->y = 0.0f; } else { diff->y = skelAnime->jointTable[0].y - skelAnime->prevTransl.y; @@ -1818,7 +1824,7 @@ void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle) { diff->y = 0.0f; skelAnime->prevTransl.y = skelAnime->jointTable[0].y; } - skelAnime->moveFlags &= ~ANIM_FLAG_NOMOVE; + skelAnime->moveFlags &= ~ANIM_FLAG_NO_MOVE; } /** |
