summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorDragorn421 <Dragorn421@users.noreply.github.com>2022-11-30 18:46:12 +0100
committerGitHub <noreply@github.com>2022-11-30 18:46:12 +0100
commitda2e8a8f2c07b40a7bb4eaeeddaf7a6249933bbe (patch)
treef386e090d07bec414c77561a0e1cb3368a86d9a9 /src/code
parent1587c5505ad66706ee53326c375c614c5c381e34 (diff)
Skelanime/Animation header cleanup (#1434)
* Skelanime/Animation header cleanup * touch up names of the two existing moveFlags macros * formatter is a dum dum D:
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_skelanime.c16
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;
}
/**