mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-25 01:34:18 +00:00
Player: AnimMovement (#2245)
* name top level stuff * newlines * Document Player AnimMovement * tweak comment * spelling * review * rework comment
This commit is contained in:
parent
e9cbcb7ad9
commit
6b31fdad53
2 changed files with 145 additions and 100 deletions
|
@ -144,7 +144,7 @@ typedef enum AnimationTapers {
|
|||
// frames have their translation occur relative to this new starting point.
|
||||
//
|
||||
// Note that for Player, this flag is only relevant when transitioning from an animation that was also using
|
||||
// ActorMovement. This is because of how `prevTransl` gets reset in `Player_AnimReplaceApplyFlags`.
|
||||
// ActorMovement. This is because of how `prevTransl` gets reset in `Player_StartAnimMovement`.
|
||||
#define ANIM_FLAG_ADJUST_STARTING_POS (1 << 4)
|
||||
|
||||
// Disables "normal" movement from sources like speed/velocity and collisions, which allows the
|
||||
|
|
|
@ -1693,7 +1693,7 @@ void Player_AnimPlayOnceAdjusted(PlayState* play, Player* this, LinkAnimationHea
|
|||
LinkAnimation_PlayOnceSetSpeed(play, &this->skelAnime, anim, PLAYER_ANIM_ADJUSTED_SPEED);
|
||||
}
|
||||
|
||||
void func_808322FC(Player* this) {
|
||||
void Player_ApplyYawFromAnim(Player* this) {
|
||||
this->actor.shape.rot.y += this->skelAnime.jointTable[1].y;
|
||||
this->skelAnime.jointTable[1].y = 0;
|
||||
}
|
||||
|
@ -1969,13 +1969,14 @@ s32 func_80832CB0(PlayState* play, Player* this, LinkAnimationHeader* anim) {
|
|||
}
|
||||
}
|
||||
|
||||
void Player_SkelAnimeResetPrevTranslRot(Player* this) {
|
||||
void Player_ResetAnimMovement(Player* this) {
|
||||
this->skelAnime.prevTransl = this->skelAnime.baseTransl;
|
||||
this->skelAnime.prevRot = this->actor.shape.rot.y;
|
||||
}
|
||||
|
||||
void Player_SkelAnimeResetPrevTranslRotAgeScale(Player* this) {
|
||||
Player_SkelAnimeResetPrevTranslRot(this);
|
||||
void Player_ResetAnimMovementScaledByAge(Player* this) {
|
||||
Player_ResetAnimMovement(this);
|
||||
|
||||
this->skelAnime.prevTransl.x *= this->ageProperties->unk_08;
|
||||
this->skelAnime.prevTransl.y *= this->ageProperties->unk_08;
|
||||
this->skelAnime.prevTransl.z *= this->ageProperties->unk_08;
|
||||
|
@ -1985,11 +1986,19 @@ void Player_ZeroRootLimbYaw(Player* this) {
|
|||
this->skelAnime.jointTable[1].y = 0;
|
||||
}
|
||||
|
||||
void func_80832DBC(Player* this) {
|
||||
/**
|
||||
* Finishes "AnimMovement" by resetting various aspects of Player's SkelAnime structure.
|
||||
*
|
||||
* This function is called in Player_SetupAction so it will run on every action change, but
|
||||
* it can also be called within action functions to change animations in the middle of an action.
|
||||
*/
|
||||
void Player_FinishAnimMovement(Player* this) {
|
||||
if (this->skelAnime.movementFlags != 0) {
|
||||
func_808322FC(this);
|
||||
Player_ApplyYawFromAnim(this);
|
||||
|
||||
this->skelAnime.jointTable[0].x = this->skelAnime.baseTransl.x;
|
||||
this->skelAnime.jointTable[0].z = this->skelAnime.baseTransl.z;
|
||||
|
||||
if (this->skelAnime.movementFlags & ANIM_FLAG_ENABLE_MOVEMENT) {
|
||||
if (this->skelAnime.movementFlags & ANIM_FLAG_UPDATE_Y) {
|
||||
this->skelAnime.jointTable[0].y = this->skelAnime.prevTransl.y;
|
||||
|
@ -1997,59 +2006,95 @@ void func_80832DBC(Player* this) {
|
|||
} else {
|
||||
this->skelAnime.jointTable[0].y = this->skelAnime.baseTransl.y;
|
||||
}
|
||||
Player_SkelAnimeResetPrevTranslRot(this);
|
||||
|
||||
Player_ResetAnimMovement(this);
|
||||
|
||||
this->skelAnime.movementFlags = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80832E48(Player* this, s32 flags) {
|
||||
Vec3f pos;
|
||||
/**
|
||||
* This is a reimplementation of `AnimTask_ActorMovement`.
|
||||
*
|
||||
* This achieves the same goal as `AnimTask_ActorMovement`but it adds
|
||||
* the ability to scale the resulting movement according to age.
|
||||
*
|
||||
* When using the AnimTask variant, age specific scaling can only be applied visually
|
||||
* to the root bone position and does not affect world position.
|
||||
*/
|
||||
void Player_ApplyAnimMovementScaledByAge(Player* this, s32 movementFlags) {
|
||||
Vec3f diff;
|
||||
|
||||
this->skelAnime.movementFlags = flags;
|
||||
this->skelAnime.movementFlags = movementFlags;
|
||||
this->skelAnime.prevTransl = this->skelAnime.baseTransl;
|
||||
SkelAnime_UpdateTranslation(&this->skelAnime, &pos, this->actor.shape.rot.y);
|
||||
|
||||
if (flags & 1) {
|
||||
SkelAnime_UpdateTranslation(&this->skelAnime, &diff, this->actor.shape.rot.y);
|
||||
|
||||
if (movementFlags & ANIM_FLAG_UPDATE_XZ) {
|
||||
if (!LINK_IS_ADULT) {
|
||||
pos.x *= 0.64f;
|
||||
pos.z *= 0.64f;
|
||||
}
|
||||
this->actor.world.pos.x += pos.x * this->actor.scale.x;
|
||||
this->actor.world.pos.z += pos.z * this->actor.scale.z;
|
||||
diff.x *= 0.64f;
|
||||
diff.z *= 0.64f;
|
||||
}
|
||||
|
||||
if (flags & 2) {
|
||||
if (!(flags & 4)) {
|
||||
pos.y *= this->ageProperties->unk_08;
|
||||
}
|
||||
this->actor.world.pos.y += pos.y * this->actor.scale.y;
|
||||
this->actor.world.pos.x += diff.x * this->actor.scale.x;
|
||||
this->actor.world.pos.z += diff.z * this->actor.scale.z;
|
||||
}
|
||||
|
||||
func_808322FC(this);
|
||||
if (movementFlags & ANIM_FLAG_UPDATE_Y) {
|
||||
if (!(movementFlags & ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT)) {
|
||||
diff.y *= this->ageProperties->unk_08;
|
||||
}
|
||||
|
||||
#define ANIM_REPLACE_APPLY_FLAG_8 (1 << 8)
|
||||
#define ANIM_REPLACE_APPLY_FLAG_9 (1 << 9)
|
||||
this->actor.world.pos.y += diff.y * this->actor.scale.y;
|
||||
}
|
||||
|
||||
void Player_AnimReplaceApplyFlags(PlayState* play, Player* this, s32 flags) {
|
||||
if (flags & ANIM_REPLACE_APPLY_FLAG_9) {
|
||||
Player_SkelAnimeResetPrevTranslRotAgeScale(this);
|
||||
} else if ((flags & ANIM_REPLACE_APPLY_FLAG_8) || (this->skelAnime.movementFlags != 0)) {
|
||||
Player_SkelAnimeResetPrevTranslRot(this);
|
||||
Player_ApplyYawFromAnim(this);
|
||||
}
|
||||
|
||||
#define PLAYER_ANIM_MOVEMENT_RESET (1 << 8)
|
||||
#define PLAYER_ANIM_MOVEMENT_RESET_BY_AGE (1 << 9)
|
||||
|
||||
/**
|
||||
* Starts "AnimMovement" so that Player will move according to the translation and rotation specified
|
||||
* by the animation that is playing.
|
||||
*
|
||||
* The `flags` field can be any of the SkelAnime system's `ANIM_FLAG_` flags, as well as Player-specific
|
||||
* `PLAYER_ANIM_MOVEMENT_` flags.
|
||||
*
|
||||
* For AnimMovement features to be enabled, it is usually required to pass `ANIM_FLAG_ENABLE_MOVEMENT`
|
||||
* as one of the flags, but there are a few niche cases where it can be desirable to omit it
|
||||
* (for example to use `ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT` without any actual AnimMovement).
|
||||
*
|
||||
* Note: AnimMovement is always disabled during every action change.
|
||||
* This means the order that functions are called matters.
|
||||
* `Player_StartAnimMovement` must be called *after* a call to `Player_SetupAction`.
|
||||
*/
|
||||
void Player_StartAnimMovement(PlayState* play, Player* this, s32 flags) {
|
||||
if (flags & PLAYER_ANIM_MOVEMENT_RESET_BY_AGE) {
|
||||
Player_ResetAnimMovementScaledByAge(this);
|
||||
} else if ((flags & PLAYER_ANIM_MOVEMENT_RESET) || (this->skelAnime.movementFlags != 0)) {
|
||||
// If AnimMovement is already in use when this function is called and
|
||||
// `PLAYER_ANIM_MOVEMENT_RESET_BY_AGE` is not set, then this case will be used.
|
||||
Player_ResetAnimMovement(this);
|
||||
} else {
|
||||
// Default case used when AnimMovement was not enabled previously.
|
||||
// This sets prevTransl and prevRot to Players current translation and yaw.
|
||||
this->skelAnime.prevTransl = this->skelAnime.jointTable[0];
|
||||
this->skelAnime.prevRot = this->actor.shape.rot.y;
|
||||
}
|
||||
|
||||
// Remove Player specific flags by masking the lower byte before setting to `skelAnime.movementFlags`
|
||||
this->skelAnime.movementFlags = flags & 0xFF;
|
||||
|
||||
Player_ZeroSpeedXZ(this);
|
||||
AnimTaskQueue_DisableTransformTasksForGroup(play);
|
||||
}
|
||||
|
||||
// TODO: Change all of these wrapper functions below to use "AnimMovement" instead of "AnimReplace"
|
||||
void Player_AnimReplacePlayOnceSetSpeed(PlayState* play, Player* this, LinkAnimationHeader* anim, s32 flags,
|
||||
f32 playbackSpeed) {
|
||||
LinkAnimation_PlayOnceSetSpeed(play, &this->skelAnime, anim, playbackSpeed);
|
||||
Player_AnimReplaceApplyFlags(play, this, flags);
|
||||
Player_StartAnimMovement(play, this, flags);
|
||||
}
|
||||
|
||||
void Player_AnimReplacePlayOnce(PlayState* play, Player* this, LinkAnimationHeader* anim, s32 flags) {
|
||||
|
@ -2069,7 +2114,7 @@ void Player_AnimReplaceNormalPlayOnceAdjusted(PlayState* play, Player* this, Lin
|
|||
void Player_AnimReplacePlayLoopSetSpeed(PlayState* play, Player* this, LinkAnimationHeader* anim, s32 flags,
|
||||
f32 playbackSpeed) {
|
||||
LinkAnimation_PlayLoopSetSpeed(play, &this->skelAnime, anim, playbackSpeed);
|
||||
Player_AnimReplaceApplyFlags(play, this, flags);
|
||||
Player_StartAnimMovement(play, this, flags);
|
||||
}
|
||||
|
||||
void Player_AnimReplacePlayLoop(PlayState* play, Player* this, LinkAnimationHeader* anim, s32 flags) {
|
||||
|
@ -3309,7 +3354,7 @@ s32 Player_SetupAction(PlayState* play, Player* this, PlayerActionFunc actionFun
|
|||
this->stateFlags1 &= ~PLAYER_STATE1_22;
|
||||
}
|
||||
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
|
||||
this->stateFlags1 &= ~(PLAYER_STATE1_2 | PLAYER_STATE1_6 | PLAYER_STATE1_26 | PLAYER_STATE1_28 | PLAYER_STATE1_29 |
|
||||
PLAYER_STATE1_31);
|
||||
|
@ -3541,7 +3586,7 @@ s32 Player_UpdateUpperBody(Player* this, PlayState* play) {
|
|||
Player_SetupAction(play, this, Player_Action_80850AEC, 1);
|
||||
this->stateFlags3 |= PLAYER_STATE3_FLYING_WITH_HOOKSHOT;
|
||||
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_hook_fly_start);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
func_80832224(this);
|
||||
|
@ -4355,8 +4400,8 @@ void func_80837948(PlayState* play, Player* this, s32 arg2) {
|
|||
|
||||
Player_AnimPlayOnceAdjusted(play, this, D_80854190[arg2].unk_00);
|
||||
if ((arg2 != PLAYER_MWA_FLIPSLASH_START) && (arg2 != PLAYER_MWA_JUMPSLASH_START)) {
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
ANIM_REPLACE_APPLY_FLAG_9 | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_ENABLE_MOVEMENT);
|
||||
Player_StartAnimMovement(play, this,
|
||||
PLAYER_ANIM_MOVEMENT_RESET_BY_AGE | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_ENABLE_MOVEMENT);
|
||||
}
|
||||
|
||||
this->yaw = this->actor.shape.rot.y;
|
||||
|
@ -4424,7 +4469,7 @@ s32 func_80837B18(PlayState* play, Player* this, s32 damage) {
|
|||
|
||||
void func_80837B60(Player* this) {
|
||||
this->skelAnime.prevTransl = this->skelAnime.jointTable[0];
|
||||
func_80832E48(this, ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y);
|
||||
Player_ApplyAnimMovementScaledByAge(this, ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y);
|
||||
}
|
||||
|
||||
void func_80837B9C(Player* this, PlayState* play) {
|
||||
|
@ -5297,8 +5342,8 @@ s32 Player_ActionHandler_1(Player* this, PlayState* play) {
|
|||
}
|
||||
|
||||
func_80832224(this);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
ANIM_REPLACE_APPLY_FLAG_9 | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
Player_StartAnimMovement(play, this,
|
||||
PLAYER_ANIM_MOVEMENT_RESET_BY_AGE | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
|
||||
|
@ -5555,7 +5600,7 @@ void func_8083A5C4(PlayState* play, Player* this, CollisionPoly* arg2, f32 arg3,
|
|||
this->actor.shape.rot.y = this->yaw = Math_Atan2S(nz, nx);
|
||||
|
||||
func_80832224(this);
|
||||
Player_SkelAnimeResetPrevTranslRot(this);
|
||||
Player_ResetAnimMovement(this);
|
||||
}
|
||||
|
||||
s32 func_8083A6AC(Player* this, PlayState* play) {
|
||||
|
@ -5609,7 +5654,7 @@ s32 func_8083A6AC(Player* this, PlayState* play) {
|
|||
this->actor.shape.rot.y = this->yaw;
|
||||
|
||||
this->stateFlags1 |= PLAYER_STATE1_21;
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
|
@ -6352,7 +6397,7 @@ s32 Player_ActionHandler_11(Player* this, PlayState* play) {
|
|||
LinkAnimation_Change(play, &this->skelAnime, anim, 1.0f, frame, frame, ANIMMODE_ONCE, 0.0f);
|
||||
|
||||
if (Player_IsChildWithHylianShield(this)) {
|
||||
Player_AnimReplaceApplyFlags(play, this, ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT);
|
||||
Player_StartAnimMovement(play, this, ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT);
|
||||
}
|
||||
|
||||
Player_PlaySfx(this, NA_SE_IT_SHIELD_POSTURE);
|
||||
|
@ -7028,7 +7073,7 @@ s32 Player_ActionHandler_3(Player* this, PlayState* play) {
|
|||
|
||||
Actor_MountHorse(play, this, &rideActor->actor);
|
||||
Player_AnimPlayOnce(play, this, D_80854578[temp].anim);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
|
||||
|
@ -7196,9 +7241,9 @@ s32 Player_ActionHandler_2(Player* this, PlayState* play) {
|
|||
if ((giEntry->itemId != ITEM_NONE) && (giEntry->gi >= 0) &&
|
||||
(Item_CheckObtainability(giEntry->itemId) == ITEM_NONE)) {
|
||||
Player_AnimPlayOnceAdjusted(play, this, this->ageProperties->unk_98);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
ANIM_REPLACE_APPLY_FLAG_9 | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT |
|
||||
Player_StartAnimMovement(play, this,
|
||||
PLAYER_ANIM_MOVEMENT_RESET_BY_AGE | ANIM_FLAG_UPDATE_XZ |
|
||||
ANIM_FLAG_UPDATE_Y | ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT |
|
||||
ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
chest->unk_1F4 = 1;
|
||||
Camera_RequestSetting(Play_GetCamera(play, CAM_ID_MAIN), CAM_SET_SLOW_CHEST_CS);
|
||||
|
@ -7375,10 +7420,10 @@ s32 func_8083EC18(Player* this, PlayState* play, u32 wallFlags) {
|
|||
func_80832224(this);
|
||||
Math_Vec3f_Copy(&this->actor.prevPos, &this->actor.world.pos);
|
||||
Player_AnimPlayOnce(play, this, anim);
|
||||
Player_AnimReplaceApplyFlags(
|
||||
play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y | ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT |
|
||||
ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -7457,7 +7502,7 @@ s32 Player_TryEnteringCrawlspace(Player* this, PlayState* play, u32 interactWall
|
|||
func_80832224(this);
|
||||
this->actor.prevPos = this->actor.world.pos;
|
||||
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_child_tunnel_start);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT |
|
||||
ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_ADJUST_STARTING_POS |
|
||||
ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
|
@ -7548,7 +7593,7 @@ s32 Player_TryLeavingCrawlspace(Player* this, PlayState* play) {
|
|||
// Leaving a crawlspace forwards
|
||||
this->actor.shape.rot.y = this->actor.wallYaw + 0x8000;
|
||||
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_child_tunnel_end);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT |
|
||||
ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_ADJUST_STARTING_POS |
|
||||
ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
|
@ -7559,7 +7604,7 @@ s32 Player_TryLeavingCrawlspace(Player* this, PlayState* play) {
|
|||
LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_child_tunnel_start, -1.0f,
|
||||
Animation_GetLastFrame(&gPlayerAnim_link_child_tunnel_start), 0.0f, ANIMMODE_ONCE,
|
||||
0.0f);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT |
|
||||
ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_ADJUST_STARTING_POS |
|
||||
ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
|
@ -7867,7 +7912,7 @@ void Player_Action_80840450(Player* this, PlayState* play) {
|
|||
|
||||
if (this->av2.actionVar2 != 0) {
|
||||
if (LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
Player_AnimPlayLoop(play, this, func_808334E4(this));
|
||||
this->av2.actionVar2 = 0;
|
||||
this->stateFlags3 &= ~PLAYER_STATE3_3;
|
||||
|
@ -7940,7 +7985,7 @@ void Player_Action_808407CC(Player* this, PlayState* play) {
|
|||
s32 temp3;
|
||||
|
||||
if (LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
Player_AnimPlayOnce(play, this, Player_GetIdleAnimationForCurrentModelAnimType(this));
|
||||
}
|
||||
|
||||
|
@ -8063,7 +8108,7 @@ void Player_Action_80840BC8(Player* this, PlayState* play) {
|
|||
this->skelAnime.jointTable[0].y =
|
||||
(this->skelAnime.jointTable[0].y + ((this->av2.actionVar2 & 1) * 0x50)) - 0x28;
|
||||
} else {
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
func_808409CC(play, this);
|
||||
}
|
||||
}
|
||||
|
@ -8970,7 +9015,7 @@ void Player_Action_80843188(Player* this, PlayState* play) {
|
|||
LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_clink_normal_defense_ALL, 1.0f,
|
||||
Animation_GetLastFrame(&gPlayerAnim_clink_normal_defense_ALL), 0.0f,
|
||||
ANIMMODE_ONCE, 0.0f);
|
||||
Player_AnimReplaceApplyFlags(play, this, ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT);
|
||||
Player_StartAnimMovement(play, this, ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT);
|
||||
} else {
|
||||
if (this->itemAction < 0) {
|
||||
func_8008EC70(this);
|
||||
|
@ -9616,7 +9661,7 @@ void Player_Action_80844E68(Player* this, PlayState* play) {
|
|||
this->stateFlags1 |= PLAYER_STATE1_CHARGING_SPIN_ATTACK;
|
||||
|
||||
if (LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
Player_SetParallel(this);
|
||||
this->stateFlags1 &= ~PLAYER_STATE1_PARALLEL;
|
||||
Player_AnimPlayLoop(play, this, D_80854360[Player_HoldsTwoHandedWeapon(this)]);
|
||||
|
@ -10304,8 +10349,8 @@ void func_808467D4(PlayState* play, Player* this) {
|
|||
this->yaw = this->actor.shape.rot.y = -0x8000;
|
||||
LinkAnimation_Change(play, &this->skelAnime, this->ageProperties->unk_A0, 2.0f / 3.0f, 0.0f, 0.0f, ANIMMODE_ONCE,
|
||||
0.0f);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
ANIM_REPLACE_APPLY_FLAG_9 | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
Player_StartAnimMovement(play, this,
|
||||
PLAYER_ANIM_MOVEMENT_RESET_BY_AGE | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
if (LINK_IS_ADULT) {
|
||||
|
@ -10316,7 +10361,7 @@ void func_808467D4(PlayState* play, Player* this) {
|
|||
|
||||
void func_808468A8(PlayState* play, Player* this) {
|
||||
Player_SetupAction(play, this, Player_Action_8084F9A0, 0);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
}
|
||||
|
@ -11485,7 +11530,7 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) {
|
|||
func_8083A360(play, this);
|
||||
this->stateFlags1 |= PLAYER_STATE1_23;
|
||||
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_uma_wait_1);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
this->av2.actionVar2 = 99;
|
||||
|
@ -12295,7 +12340,7 @@ void Player_Action_8084B530(Player* this, PlayState* play) {
|
|||
Player_Action_8084D610(this, play);
|
||||
} else if (!Player_CheckHostileLockOn(this) && LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
if (this->skelAnime.movementFlags != 0) {
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
if ((this->talkActor->category == ACTORCAT_NPC) && (this->heldItemAction != PLAYER_IA_FISHING_POLE)) {
|
||||
Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_normal_talk_free);
|
||||
} else {
|
||||
|
@ -12508,7 +12553,7 @@ void Player_Action_8084BDFC(Player* this, PlayState* play) {
|
|||
this->stateFlags2 |= PLAYER_STATE2_6;
|
||||
|
||||
if (LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
func_80832E48(this, ANIM_FLAG_UPDATE_XZ);
|
||||
Player_ApplyAnimMovementScaledByAge(this, ANIM_FLAG_UPDATE_XZ);
|
||||
func_8083C0E8(this, play);
|
||||
return;
|
||||
}
|
||||
|
@ -13379,7 +13424,7 @@ void func_8084DF6C(PlayState* play, Player* this) {
|
|||
|
||||
void func_8084DFAC(PlayState* play, Player* this) {
|
||||
func_8084DF6C(play, this);
|
||||
func_808322FC(this);
|
||||
Player_ApplyYawFromAnim(this);
|
||||
func_8083C0E8(this, play);
|
||||
this->yaw = this->actor.shape.rot.y;
|
||||
}
|
||||
|
@ -13590,7 +13635,7 @@ void Player_Action_8084E6D4(Player* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
|
||||
if (this->getItemId == GI_ICE_TRAP) {
|
||||
this->stateFlags1 &= ~(PLAYER_STATE1_10 | PLAYER_STATE1_CARRYING_ACTOR);
|
||||
|
@ -14965,7 +15010,7 @@ void func_808511FC(PlayState* play, Player* this, void* anim) {
|
|||
|
||||
void func_80851248(PlayState* play, Player* this, void* anim) {
|
||||
if (LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
Player_AnimPlayLoopAdjusted(play, this, anim);
|
||||
}
|
||||
}
|
||||
|
@ -15178,8 +15223,8 @@ void func_808519EC(PlayState* play, Player* this, CsCmdActorCue* cue) {
|
|||
Math_Vec3f_Copy(&this->actor.world.pos, &D_80855198);
|
||||
this->actor.shape.rot.y = -0x8000;
|
||||
Player_AnimPlayOnceAdjusted(play, this, this->ageProperties->unk_9C);
|
||||
Player_AnimReplaceApplyFlags(play, this,
|
||||
ANIM_REPLACE_APPLY_FLAG_9 | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
Player_StartAnimMovement(play, this,
|
||||
PLAYER_ANIM_MOVEMENT_RESET_BY_AGE | ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_UPDATE_Y |
|
||||
ANIM_FLAG_DISABLE_CHILD_ROOT_ADJUSTMENT | ANIM_FLAG_ENABLE_MOVEMENT |
|
||||
ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
}
|
||||
|
@ -15420,8 +15465,8 @@ void func_80852234(PlayState* play, Player* this, CsCmdActorCue* cue) {
|
|||
}
|
||||
|
||||
void func_8085225C(PlayState* play, Player* this, CsCmdActorCue* cue) {
|
||||
Player_AnimReplaceApplyFlags(
|
||||
play, this, ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
Player_StartAnimMovement(play, this,
|
||||
ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_ADJUST_STARTING_POS | ANIM_FLAG_OVERRIDE_MOVEMENT);
|
||||
}
|
||||
|
||||
void func_80852280(PlayState* play, Player* this, CsCmdActorCue* cue) {
|
||||
|
@ -15704,7 +15749,7 @@ void func_80852C50(PlayState* play, Player* this, CsCmdActorCue* cueUnused) {
|
|||
|
||||
D_80858AA0 = this->skelAnime.movementFlags;
|
||||
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
PRINTF("TOOL MODE=%d\n", csAction);
|
||||
func_80852C0C(play, this, ABS(csAction));
|
||||
func_80852B4C(play, this, cue, &D_80854B18[ABS(csAction)]);
|
||||
|
@ -15723,7 +15768,7 @@ void Player_Action_CsAction(Player* this, PlayState* play) {
|
|||
if (this->csAction != this->prevCsAction) {
|
||||
D_80858AA0 = this->skelAnime.movementFlags;
|
||||
|
||||
func_80832DBC(this);
|
||||
Player_FinishAnimMovement(this);
|
||||
this->prevCsAction = this->csAction;
|
||||
PRINTF("DEMO MODE=%d\n", this->csAction);
|
||||
func_80852C0C(play, this, this->csAction);
|
||||
|
@ -15856,7 +15901,7 @@ void func_80853148(PlayState* play, Actor* actor) {
|
|||
}
|
||||
|
||||
if (this->skelAnime.animation == &gPlayerAnim_link_normal_backspace) {
|
||||
Player_AnimReplaceApplyFlags(
|
||||
Player_StartAnimMovement(
|
||||
play, this, ANIM_FLAG_UPDATE_XZ | ANIM_FLAG_ENABLE_MOVEMENT | ANIM_FLAG_ADJUST_STARTING_POS);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue