Animation Cleanup: En_P* (#1507)

* anim P cleanup

* PR Review

* PR Review

* Postbox Idle
This commit is contained in:
engineer124
2023-11-22 16:10:55 +11:00
committed by GitHub
parent 2b4610670f
commit 5ef277df2d
59 changed files with 601 additions and 446 deletions
+8 -7
View File
@@ -2096,14 +2096,14 @@ s32 func_800B886C(Actor* actor, PlayState* play) {
return false;
}
void Actor_GetScreenPos(PlayState* play, Actor* actor, s16* x, s16* y) {
void Actor_GetScreenPos(PlayState* play, Actor* actor, s16* posX, s16* posY) {
Vec3f projectedPos;
f32 invW;
Actor_GetProjectedPos(play, &actor->focus.pos, &projectedPos, &invW);
*x = PROJECTED_TO_SCREEN_X(projectedPos, invW);
*y = PROJECTED_TO_SCREEN_Y(projectedPos, invW);
*posX = PROJECTED_TO_SCREEN_X(projectedPos, invW);
*posY = PROJECTED_TO_SCREEN_Y(projectedPos, invW);
}
bool Actor_OnScreen(PlayState* play, Actor* actor) {
@@ -3499,12 +3499,13 @@ Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, PlayState* play) {
}
bool Target_InTargetableScreenRegion(PlayState* play, Actor* actor) {
s16 x;
s16 y;
s16 screenPosX;
s16 screenPosY;
Actor_GetScreenPos(play, actor, &x, &y);
Actor_GetScreenPos(play, actor, &screenPosX, &screenPosY);
return (x > -20) && (x < gScreenWidth + 20) && (y > -160) && (y < gScreenHeight + 160);
return (screenPosX > -20) && (screenPosX < gScreenWidth + 20) && (screenPosY > -160) &&
(screenPosY < gScreenHeight + 160);
}
/**
+24 -23
View File
@@ -1313,8 +1313,8 @@ s32 Camera_CalcAtForScreen(Camera* camera, VecGeo* eyeAtDir, f32 yOffset, f32* f
s32 pad;
f32 clampedDeltaY;
f32 clampedAbsScreenY;
s16 absScreenY;
s16 screenY;
s16 absScreenPosY;
s16 screenPosY;
PosRot* focalActorPosRot = &camera->focalActorPosRot;
f32 focalActorHeight = Camera_GetFocalActorHeight(camera);
@@ -1322,21 +1322,21 @@ s32 Camera_CalcAtForScreen(Camera* camera, VecGeo* eyeAtDir, f32 yOffset, f32* f
focalActorAtOffsetTarget.x = 0.0f;
focalActorAtOffsetTarget.z = 0.0f;
Actor_GetScreenPos(camera->play, camera->focalActor, &absScreenY, &screenY);
screenY -= SCREEN_HEIGHT / 2;
absScreenY = ABS(screenY);
Actor_GetScreenPos(camera->play, camera->focalActor, &absScreenPosY, &screenPosY);
screenPosY -= SCREEN_HEIGHT / 2;
absScreenPosY = ABS(screenPosY);
// result unused
clampedAbsScreenY = OLib_ClampMaxDist(absScreenY / (f32)(SCREEN_HEIGHT / 2), 1.0f);
clampedAbsScreenY = OLib_ClampMaxDist(absScreenPosY / (f32)(SCREEN_HEIGHT / 2), 1.0f);
deltaY = focalActorPosRot->pos.y - *focalActorPosY;
clampedDeltaY = OLib_ClampMaxDist(deltaY, deltaYMax);
if (absScreenY > (SCREEN_HEIGHT / 4)) {
absScreenY = SCREEN_HEIGHT / 4;
if (absScreenPosY > (SCREEN_HEIGHT / 4)) {
absScreenPosY = SCREEN_HEIGHT / 4;
}
clampedAbsScreenY = OLib_ClampMaxDist(absScreenY / (f32)(SCREEN_HEIGHT / 4), 1.0f);
clampedAbsScreenY = OLib_ClampMaxDist(absScreenPosY / (f32)(SCREEN_HEIGHT / 4), 1.0f);
focalActorAtOffsetTarget.y -= clampedDeltaY * clampedAbsScreenY * clampedAbsScreenY;
Camera_ScaledStepToCeilVec3f(&focalActorAtOffsetTarget, &camera->focalActorAtOffset, camera->xzOffsetUpdateRate,
@@ -3785,8 +3785,8 @@ s32 Camera_Battle1(Camera* camera) {
rwData->unk_1A &= ~0x10;
} else if (!camera->play->envCtx.skyboxDisabled || (roData->interfaceFlags & BATTLE1_FLAG_0)) {
if (func_800CBC84(camera, at, &spC4, 0) != 0) {
s16 screenX;
s16 screenY;
s16 screenPosX;
s16 screenPosY;
rwData->unk_1A |= 0x1000;
spF8 = OLib_Vec3fDist(at, &focalActorFocus->pos);
@@ -3796,10 +3796,10 @@ s32 Camera_Battle1(Camera* camera) {
spF4 = OLib_Vec3fDist(at, &spC4.pos);
spF8 += (rwData->unk_1A & 0x10) ? 40.0f : 0.0f;
Actor_GetScreenPos(camera->play, camera->focalActor, &screenX, &screenY);
Actor_GetScreenPos(camera->play, camera->focalActor, &screenPosX, &screenPosY);
if ((spF4 < spF8) ||
((screenX >= 0) && (screenX <= SCREEN_WIDTH) && (screenY >= 0) && (screenY <= SCREEN_HEIGHT))) {
if ((spF4 < spF8) || ((screenPosX >= 0) && (screenPosX <= SCREEN_WIDTH) && (screenPosY >= 0) &&
(screenPosY <= SCREEN_HEIGHT))) {
rwData->unk_1A |= 0x10;
spB4.yaw = spA4.yaw + 0x8000;
spB4.pitch = -spA4.pitch;
@@ -4140,18 +4140,18 @@ s32 Camera_KeepOn1(Camera* camera) {
rwData->unk_18 &= ~0x10;
} else if (!camera->play->envCtx.skyboxDisabled || (roData->interfaceFlags & KEEPON1_FLAG_0)) {
if (func_800CBC84(camera, at, &sp7C, 0) != 0) {
s16 screenX;
s16 screenY;
s16 screenPosX;
s16 screenPosY;
rwData->unk_18 |= 0x1000;
spF8 = OLib_Vec3fDist(at, &focalActorFocus->pos);
spF4 = OLib_Vec3fDist(at, &sp7C.pos);
spF8 += (rwData->unk_18 & 0x10) ? 40 : 0.0f;
Actor_GetScreenPos(camera->play, camera->focalActor, &screenX, &screenY);
Actor_GetScreenPos(camera->play, camera->focalActor, &screenPosX, &screenPosY);
if ((spF4 < spF8) ||
((screenX >= 0) && (screenX <= SCREEN_WIDTH) && (screenY >= 0) && (screenY <= SCREEN_HEIGHT))) {
if ((spF4 < spF8) || ((screenPosX >= 0) && (screenPosX <= SCREEN_WIDTH) && (screenPosY >= 0) &&
(screenPosY <= SCREEN_HEIGHT))) {
rwData->unk_18 |= 0x10;
spE0.yaw = (s16)(spD0.yaw + 0x8000);
spE0.pitch = -spD0.pitch;
@@ -5642,8 +5642,8 @@ s32 Camera_Demo1(Camera* camera) {
PosRot* targetPosRot = &camera->targetPosRot;
f32 temp_f0;
Actor* sp98[1];
s16 screenX;
s16 screenY;
s16 screenPosX;
s16 screenPosY;
s32 phi_v0;
VecGeo sp88;
PosRot sp74;
@@ -5671,10 +5671,11 @@ s32 Camera_Demo1(Camera* camera) {
camera->animState++;
}
Actor_GetScreenPos(camera->play, camera->target, &screenX, &screenY);
Actor_GetScreenPos(camera->play, camera->target, &screenPosX, &screenPosY);
temp_f0 = rwData->unk_0C.r;
if ((screenX > 20) && (screenX < (SCREEN_WIDTH - 20)) && (screenY > 40) && (screenY < (SCREEN_HEIGHT - 40))) {
if ((screenPosX > 20) && (screenPosX < (SCREEN_WIDTH - 20)) && (screenPosY > 40) &&
(screenPosY < (SCREEN_HEIGHT - 40))) {
if (temp_f0 < 700.0f) {
phi_v0 = 0;
} else {
+12 -12
View File
@@ -5208,11 +5208,11 @@ void Message_Update(PlayState* play) {
PauseContext* pauseCtx = &play->pauseCtx;
InterfaceContext* interfaceCtx = &play->interfaceCtx;
Input* input = CONTROLLER1(&play->state);
s16 averageY;
s16 sp50;
s16 avgScreenPosY;
s16 screenPosX;
u16 temp_v1_2;
s16 sp4C;
s16 sp4A;
s16 playerScreenPosY;
s16 actorScreenPosY;
s16 sp48;
s32 sp44;
s32 sp40;
@@ -5223,7 +5223,7 @@ void Message_Update(PlayState* play) {
msgCtx->stickAdjX = input->rel.stick_x;
msgCtx->stickAdjY = input->rel.stick_y;
averageY = 0;
avgScreenPosY = 0;
// If stickAdj is held, set a delay to allow the cursor to read the next input.
// The first delay is given a longer time than all subsequent delays.
@@ -5309,12 +5309,12 @@ void Message_Update(PlayState* play) {
}
if (temp) {
if (msgCtx->talkActor != NULL) {
Actor_GetScreenPos(play, &GET_PLAYER(play)->actor, &sp50, &sp4C);
Actor_GetScreenPos(play, msgCtx->talkActor, &sp50, &sp4A);
if (sp4C >= sp4A) {
averageY = ((sp4C - sp4A) / 2) + sp4A;
Actor_GetScreenPos(play, &GET_PLAYER(play)->actor, &screenPosX, &playerScreenPosY);
Actor_GetScreenPos(play, msgCtx->talkActor, &screenPosX, &actorScreenPosY);
if (playerScreenPosY >= actorScreenPosY) {
avgScreenPosY = ((playerScreenPosY - actorScreenPosY) / 2) + actorScreenPosY;
} else {
averageY = ((sp4A - sp4C) / 2) + sp4C;
avgScreenPosY = ((actorScreenPosY - playerScreenPosY) / 2) + playerScreenPosY;
}
} else {
msgCtx->textboxX = msgCtx->textboxXTarget;
@@ -5326,13 +5326,13 @@ void Message_Update(PlayState* play) {
if ((u32)msgCtx->textBoxPos == 0) {
if ((play->sceneId == SCENE_UNSET_04) || (play->sceneId == SCENE_UNSET_05) ||
(play->sceneId == SCENE_UNSET_06)) {
if (averageY < 0x64) {
if (avgScreenPosY < 100) {
msgCtx->textboxYTarget = sTextboxLowerYPositions[var_v1];
} else {
msgCtx->textboxYTarget = sTextboxUpperYPositions[var_v1];
}
} else {
if (averageY < 0xA0) {
if (avgScreenPosY < 160) {
msgCtx->textboxYTarget = sTextboxLowerYPositions[var_v1];
} else {
msgCtx->textboxYTarget = sTextboxUpperYPositions[var_v1];
+11 -8
View File
@@ -826,11 +826,11 @@ s32 SubS_CopyPointFromPathCheckBounds(Path* path, s32 pointIndex, Vec3f* dst) {
*/
s32 SubS_Offer(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 itemId, SubSOfferMode mode) {
s32 canAccept = false;
s16 x;
s16 y;
s16 screenPosX;
s16 screenPosY;
f32 xzDistToPlayerTemp;
Actor_GetScreenPos(play, actor, &x, &y);
Actor_GetScreenPos(play, actor, &screenPosX, &screenPosY);
switch (mode) {
case SUBS_OFFER_MODE_GET_ITEM:
@@ -847,7 +847,8 @@ s32 SubS_Offer(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 itemI
case SUBS_OFFER_MODE_ONSCREEN:
//! @bug: Both x and y conditionals are always true, || should be an &&
if (((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT))) {
if (((screenPosX >= 0) || (screenPosX < SCREEN_WIDTH)) &&
((screenPosY >= 0) || (screenPosY < SCREEN_HEIGHT))) {
canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId);
}
break;
@@ -864,8 +865,9 @@ s32 SubS_Offer(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 itemI
case SUBS_OFFER_MODE_AUTO_TARGETED:
//! @bug: Both x and y conditionals are always true, || should be an &&
if (((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT)) &&
(fabsf(actor->playerHeightRel) <= yRange) && (actor->xzDistToPlayer <= xzRange) && actor->isLockedOn) {
if (((screenPosX >= 0) || (screenPosX < SCREEN_WIDTH)) &&
((screenPosY >= 0) || (screenPosY < SCREEN_HEIGHT)) && (fabsf(actor->playerHeightRel) <= yRange) &&
(actor->xzDistToPlayer <= xzRange) && actor->isLockedOn) {
actor->flags |= ACTOR_FLAG_10000;
canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId);
}
@@ -873,8 +875,9 @@ s32 SubS_Offer(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 itemI
case SUBS_OFFER_MODE_AUTO_NEARBY_ONSCREEN:
//! @bug: Both x and y conditionals are always true, || should be an &&
if (((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT)) &&
(fabsf(actor->playerHeightRel) <= yRange) && (actor->xzDistToPlayer <= xzRange)) {
if (((screenPosX >= 0) || (screenPosX < SCREEN_WIDTH)) &&
((screenPosY >= 0) || (screenPosY < SCREEN_HEIGHT)) && (fabsf(actor->playerHeightRel) <= yRange) &&
(actor->xzDistToPlayer <= xzRange)) {
actor->flags |= ACTOR_FLAG_10000;
canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId);
}