1
0
mirror of https://github.com/zeldaret/oot.git synced 2024-09-21 04:24:43 +00:00

Name variables holding poly normals and variables used in COLPOLY_GET_NORMAL (#1168)

This commit is contained in:
Dragorn421 2022-03-09 01:43:07 +01:00 committed by GitHub
parent e53ec1962b
commit c73053db6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 104 additions and 99 deletions

View File

@ -4158,9 +4158,9 @@ Actor* func_800358DC(Actor* actor, Vec3f* spawnPos, Vec3s* spawnRot, f32* arg3,
}
void func_800359B8(Actor* actor, s16 arg1, Vec3s* arg2) {
f32 sp44;
f32 sp40;
f32 sp3C;
f32 floorPolyNormalX;
f32 floorPolyNormalY;
f32 floorPolyNormalZ;
f32 sp38;
f32 sp34;
f32 sp30;
@ -4172,19 +4172,19 @@ void func_800359B8(Actor* actor, s16 arg1, Vec3s* arg2) {
if (actor->floorPoly != NULL) {
floorPoly = actor->floorPoly;
sp44 = COLPOLY_GET_NORMAL(floorPoly->normal.x);
sp40 = COLPOLY_GET_NORMAL(floorPoly->normal.y);
sp3C = COLPOLY_GET_NORMAL(floorPoly->normal.z);
floorPolyNormalX = COLPOLY_GET_NORMAL(floorPoly->normal.x);
floorPolyNormalY = COLPOLY_GET_NORMAL(floorPoly->normal.y);
floorPolyNormalZ = COLPOLY_GET_NORMAL(floorPoly->normal.z);
sp38 = Math_SinS(arg1);
sp34 = Math_CosS(arg1);
sp28 = (-(sp44 * sp38) - (sp3C * sp34));
arg2->x = -(s16)(Math_FAtan2F(sp28 * sp40, 1.0f) * (32768 / M_PI));
sp28 = (-(floorPolyNormalX * sp38) - (floorPolyNormalZ * sp34));
arg2->x = -(s16)(Math_FAtan2F(sp28 * floorPolyNormalY, 1.0f) * (32768 / M_PI));
sp2C = Math_SinS(arg1 - 16375);
sp30 = Math_CosS(arg1 - 16375);
sp24 = (-(sp44 * sp2C) - (sp3C * sp30));
arg2->z = -(s16)(Math_FAtan2F(sp24 * sp40, 1.0f) * (32768 / M_PI));
sp24 = (-(floorPolyNormalX * sp2C) - (floorPolyNormalZ * sp30));
arg2->z = -(s16)(Math_FAtan2F(sp24 * floorPolyNormalY, 1.0f) * (32768 / M_PI));
}
}

View File

@ -197,7 +197,7 @@ void EnBubble_Vec3fNormalize(Vec3f* vec) {
}
void EnBubble_Fly(EnBubble* this, GlobalContext* globalCtx) {
CollisionPoly* sp94;
CollisionPoly* poly;
Actor* bumpActor;
Vec3f sp84;
Vec3f sp78;
@ -233,10 +233,10 @@ void EnBubble_Fly(EnBubble* this, GlobalContext* globalCtx) {
sp6C.x += (sp54.x * 24.0f);
sp6C.y += (sp54.y * 24.0f);
sp6C.z += (sp54.z * 24.0f);
if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &sp78, &sp6C, &sp84, &sp94, true, true, true, false, &bgId)) {
sp60.x = COLPOLY_GET_NORMAL(sp94->normal.x);
sp60.y = COLPOLY_GET_NORMAL(sp94->normal.y);
sp60.z = COLPOLY_GET_NORMAL(sp94->normal.z);
if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &sp78, &sp6C, &sp84, &poly, true, true, true, false, &bgId)) {
sp60.x = COLPOLY_GET_NORMAL(poly->normal.x);
sp60.y = COLPOLY_GET_NORMAL(poly->normal.y);
sp60.z = COLPOLY_GET_NORMAL(poly->normal.z);
EnBubble_Vec3fNormalizedRelfect(&sp54, &sp60, &sp54);
this->bounceDirection = sp54;
bounceCount = this->bounceCount;

View File

@ -407,7 +407,7 @@ void func_80AAE224(EnMm* this, GlobalContext* globalCtx) {
}
void func_80AAE294(EnMm* this, GlobalContext* globalCtx) {
f32 floorYNorm;
f32 floorPolyNormalY;
Vec3f dustPos;
if (!Player_InCsMode(globalCtx)) {
@ -439,9 +439,9 @@ void func_80AAE294(EnMm* this, GlobalContext* globalCtx) {
if (func_80AADA70() == 0) {
if (this->actor.floorPoly != NULL) {
floorYNorm = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.y);
floorPolyNormalY = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.y);
if ((floorYNorm > 0.9848f) || (floorYNorm < -0.9848f)) {
if ((floorPolyNormalY > 0.9848f) || (floorPolyNormalY < -0.9848f)) {
if (this->sitTimer > 30) {
EnMm_ChangeAnim(this, RM_ANIM_SIT, &this->curAnimIndex);
this->actionFunc = func_80AAE224;

View File

@ -70,22 +70,22 @@ void EnSw_CrossProduct(Vec3f* a, Vec3f* b, Vec3f* dst) {
}
s32 func_80B0BE20(EnSw* this, CollisionPoly* poly) {
Vec3f sp44;
Vec3f polyNormal;
Vec3f sp38;
f32 sp34;
f32 temp_f0;
s32 pad;
this->actor.floorPoly = poly;
sp44.x = COLPOLY_GET_NORMAL(poly->normal.x);
sp44.y = COLPOLY_GET_NORMAL(poly->normal.y);
sp44.z = COLPOLY_GET_NORMAL(poly->normal.z);
sp34 = Math_FAcosF(DOTXYZ(sp44, this->unk_364));
EnSw_CrossProduct(&this->unk_364, &sp44, &sp38);
polyNormal.x = COLPOLY_GET_NORMAL(poly->normal.x);
polyNormal.y = COLPOLY_GET_NORMAL(poly->normal.y);
polyNormal.z = COLPOLY_GET_NORMAL(poly->normal.z);
sp34 = Math_FAcosF(DOTXYZ(polyNormal, this->unk_364));
EnSw_CrossProduct(&this->unk_364, &polyNormal, &sp38);
Matrix_RotateAxis(sp34, &sp38, MTXMODE_NEW);
Matrix_MultVec3f(&this->unk_370, &sp38);
this->unk_370 = sp38;
EnSw_CrossProduct(&this->unk_370, &sp44, &this->unk_37C);
EnSw_CrossProduct(&this->unk_370, &polyNormal, &this->unk_37C);
temp_f0 = Math3D_Vec3fMagnitude(&this->unk_37C);
if (temp_f0 < 0.001f) {
return 0;
@ -93,7 +93,7 @@ s32 func_80B0BE20(EnSw* this, CollisionPoly* poly) {
this->unk_37C.x = this->unk_37C.x * (1.0f / temp_f0);
this->unk_37C.y = this->unk_37C.y * (1.0f / temp_f0);
this->unk_37C.z = this->unk_37C.z * (1.0f / temp_f0);
this->unk_364 = sp44;
this->unk_364 = polyNormal;
this->unk_3D8.xx = this->unk_370.x;
this->unk_3D8.yx = this->unk_370.y;
this->unk_3D8.zx = this->unk_370.z;
@ -384,22 +384,22 @@ void func_80B0CBE8(EnSw* this, GlobalContext* globalCtx) {
}
s32 func_80B0CCF4(EnSw* this, f32* arg1) {
CollisionPoly* temp_v1;
CollisionPoly* floorPoly;
f32 temp_f0;
Vec3f sp6C;
Vec3f floorPolyNormal;
MtxF sp2C;
if (this->actor.floorPoly == NULL) {
return false;
}
temp_v1 = this->actor.floorPoly;
sp6C.x = COLPOLY_GET_NORMAL(temp_v1->normal.x);
sp6C.y = COLPOLY_GET_NORMAL(temp_v1->normal.y);
sp6C.z = COLPOLY_GET_NORMAL(temp_v1->normal.z);
Matrix_RotateAxis(*arg1, &sp6C, MTXMODE_NEW);
Matrix_MultVec3f(&this->unk_370, &sp6C);
this->unk_370 = sp6C;
floorPoly = this->actor.floorPoly;
floorPolyNormal.x = COLPOLY_GET_NORMAL(floorPoly->normal.x);
floorPolyNormal.y = COLPOLY_GET_NORMAL(floorPoly->normal.y);
floorPolyNormal.z = COLPOLY_GET_NORMAL(floorPoly->normal.z);
Matrix_RotateAxis(*arg1, &floorPolyNormal, MTXMODE_NEW);
Matrix_MultVec3f(&this->unk_370, &floorPolyNormal);
this->unk_370 = floorPolyNormal;
EnSw_CrossProduct(&this->unk_370, &this->unk_364, &this->unk_37C);
temp_f0 = Math3D_Vec3fMagnitude(&this->unk_37C);
if (temp_f0 < 0.001f) {

View File

@ -371,7 +371,7 @@ void MirRay_ReflectedBeam(MirRay* this, GlobalContext* globalCtx, MirRayShieldRe
Vec3f sp100;
Vec3f intersection;
f32 spE8[3];
f32 normalVec[3];
f32 polyNormal[3];
MtxF* shieldMtx;
Vec3f vecA;
Vec3f vecC;
@ -404,12 +404,12 @@ void MirRay_ReflectedBeam(MirRay* this, GlobalContext* globalCtx, MirRayShieldRe
for (i = 0; i < 6; i++) {
currentReflection = &reflection[i];
if (currentReflection->reflectionPoly != NULL) {
normalVec[0] = COLPOLY_GET_NORMAL(currentReflection->reflectionPoly->normal.x);
normalVec[1] = COLPOLY_GET_NORMAL(currentReflection->reflectionPoly->normal.y);
normalVec[2] = COLPOLY_GET_NORMAL(currentReflection->reflectionPoly->normal.z);
polyNormal[0] = COLPOLY_GET_NORMAL(currentReflection->reflectionPoly->normal.x);
polyNormal[1] = COLPOLY_GET_NORMAL(currentReflection->reflectionPoly->normal.y);
polyNormal[2] = COLPOLY_GET_NORMAL(currentReflection->reflectionPoly->normal.z);
if (Math3D_LineSegVsPlane(normalVec[0], normalVec[1], normalVec[2], currentReflection->reflectionPoly->dist,
&vecB, &vecD, &sp118, 1)) {
if (Math3D_LineSegVsPlane(polyNormal[0], polyNormal[1], polyNormal[2],
currentReflection->reflectionPoly->dist, &vecB, &vecD, &sp118, 1)) {
currentReflection->pos.x = sp118.x;
currentReflection->pos.y = sp118.y;
@ -445,7 +445,7 @@ void MirRay_ReflectedBeam(MirRay* this, GlobalContext* globalCtx, MirRayShieldRe
currentReflection->mtx.xz = currentReflection->mtx.yz = currentReflection->mtx.wz =
currentReflection->mtx.xw = currentReflection->mtx.yw = currentReflection->mtx.zw;
if (Math3D_LineSegVsPlane(normalVec[0], normalVec[1], normalVec[2],
if (Math3D_LineSegVsPlane(polyNormal[0], polyNormal[1], polyNormal[2],
currentReflection->reflectionPoly->dist, &sp10C, &sp100, &intersection, 1)) {
currentReflection->mtx.xx = intersection.x - sp118.x;
currentReflection->mtx.yx = intersection.y - sp118.y;
@ -460,7 +460,7 @@ void MirRay_ReflectedBeam(MirRay* this, GlobalContext* globalCtx, MirRayShieldRe
sp100.y = (spE8[1] * 4.0f) + sp10C.y;
sp100.z = (spE8[2] * 4.0f) + sp10C.z;
if (Math3D_LineSegVsPlane(normalVec[0], normalVec[1], normalVec[2],
if (Math3D_LineSegVsPlane(polyNormal[0], polyNormal[1], polyNormal[2],
currentReflection->reflectionPoly->dist, &sp10C, &sp100, &intersection, 1)) {
currentReflection->mtx.xy = intersection.x - sp118.x;
currentReflection->mtx.yy = intersection.y - sp118.y;

View File

@ -3790,8 +3790,8 @@ s32 func_80838A14(Player* this, GlobalContext* globalCtx) {
LinkAnimationHeader* sp38;
f32 sp34;
f32 temp;
f32 sp2C;
f32 sp28;
f32 wallPolyNormalX;
f32 wallPolyNormalZ;
f32 sp24;
if (!(this->stateFlags1 & PLAYER_STATE1_11) && (this->unk_88C >= 2) &&
@ -3833,8 +3833,8 @@ s32 func_80838A14(Player* this, GlobalContext* globalCtx) {
sp38 = &gPlayerAnim_002D48;
this->linearVelocity = 1.0f;
} else {
sp2C = COLPOLY_GET_NORMAL(this->actor.wallPoly->normal.x);
sp28 = COLPOLY_GET_NORMAL(this->actor.wallPoly->normal.z);
wallPolyNormalX = COLPOLY_GET_NORMAL(this->actor.wallPoly->normal.x);
wallPolyNormalZ = COLPOLY_GET_NORMAL(this->actor.wallPoly->normal.z);
sp24 = this->wallDistance + 0.5f;
this->stateFlags1 |= PLAYER_STATE1_14;
@ -3853,9 +3853,9 @@ s32 func_80838A14(Player* this, GlobalContext* globalCtx) {
this->actor.shape.yOffset -= sp34 * 100.0f;
this->actor.world.pos.x -= sp24 * sp2C;
this->actor.world.pos.x -= sp24 * wallPolyNormalX;
this->actor.world.pos.y += this->wallHeight;
this->actor.world.pos.z -= sp24 * sp28;
this->actor.world.pos.z -= sp24 * wallPolyNormalZ;
func_80832224(this);
}
@ -4455,16 +4455,16 @@ s32 func_8083A4A8(Player* this, GlobalContext* globalCtx) {
}
void func_8083A5C4(GlobalContext* globalCtx, Player* this, CollisionPoly* arg2, f32 arg3, LinkAnimationHeader* arg4) {
f32 sp24 = COLPOLY_GET_NORMAL(arg2->normal.x);
f32 sp20 = COLPOLY_GET_NORMAL(arg2->normal.z);
f32 nx = COLPOLY_GET_NORMAL(arg2->normal.x);
f32 nz = COLPOLY_GET_NORMAL(arg2->normal.z);
func_80835C58(globalCtx, this, func_8084BBE4, 0);
func_80832564(globalCtx, this);
func_80832264(globalCtx, this, arg4);
this->actor.world.pos.x -= (arg3 + 1.0f) * sp24;
this->actor.world.pos.z -= (arg3 + 1.0f) * sp20;
this->actor.shape.rot.y = this->currentYaw = Math_Atan2S(sp20, sp24);
this->actor.world.pos.x -= (arg3 + 1.0f) * nx;
this->actor.world.pos.z -= (arg3 + 1.0f) * nz;
this->actor.shape.rot.y = this->currentYaw = Math_Atan2S(nz, nx);
func_80832224(this);
func_80832CFC(this);
@ -6042,7 +6042,7 @@ s32 func_8083EC18(Player* this, GlobalContext* globalCtx, u32 arg2) {
if ((sp8C != 0) || (arg2 & 2) ||
func_80041E4C(&globalCtx->colCtx, this->actor.wallPoly, this->actor.wallBgId)) {
f32 phi_f20;
CollisionPoly* sp84 = this->actor.wallPoly;
CollisionPoly* wallPoly = this->actor.wallPoly;
f32 sp80;
f32 sp7C;
f32 phi_f12;
@ -6060,7 +6060,7 @@ s32 func_8083EC18(Player* this, GlobalContext* globalCtx, u32 arg2) {
Vec3f* sp44 = &sp50[0];
s32 pad;
CollisionPoly_GetVerticesByBgId(sp84, this->actor.wallBgId, &globalCtx->colCtx, sp50);
CollisionPoly_GetVerticesByBgId(wallPoly, this->actor.wallBgId, &globalCtx->colCtx, sp50);
sp80 = phi_f12 = sp44->x;
sp7C = phi_f14 = sp44->z;
@ -6087,8 +6087,8 @@ s32 func_8083EC18(Player* this, GlobalContext* globalCtx, u32 arg2) {
sp80 = (sp80 + phi_f12) * 0.5f;
sp7C = (sp7C + phi_f14) * 0.5f;
phi_f12 = ((this->actor.world.pos.x - sp80) * COLPOLY_GET_NORMAL(sp84->normal.z)) -
((this->actor.world.pos.z - sp7C) * COLPOLY_GET_NORMAL(sp84->normal.x));
phi_f12 = ((this->actor.world.pos.x - sp80) * COLPOLY_GET_NORMAL(wallPoly->normal.z)) -
((this->actor.world.pos.z - sp7C) * COLPOLY_GET_NORMAL(wallPoly->normal.x));
sp48 = this->actor.world.pos.y - phi_f20;
phi_f20 = ((f32)(s32)((sp48 / 15.000000223517418) + 0.5) * 15.000000223517418) - sp48;
@ -6096,8 +6096,8 @@ s32 func_8083EC18(Player* this, GlobalContext* globalCtx, u32 arg2) {
}
if (phi_f12 < 8.0f) {
f32 sp3C = COLPOLY_GET_NORMAL(sp84->normal.x);
f32 sp38 = COLPOLY_GET_NORMAL(sp84->normal.z);
f32 wallPolyNormalX = COLPOLY_GET_NORMAL(wallPoly->normal.x);
f32 wallPolyNormalZ = COLPOLY_GET_NORMAL(wallPoly->normal.z);
f32 sp34 = this->wallDistance;
LinkAnimationHeader* sp30;
@ -6126,8 +6126,8 @@ s32 func_8083EC18(Player* this, GlobalContext* globalCtx, u32 arg2) {
this->actor.shape.rot.y = this->currentYaw = this->actor.wallYaw;
}
this->actor.world.pos.x = (sp34 * sp3C) + sp80;
this->actor.world.pos.z = (sp34 * sp38) + sp7C;
this->actor.world.pos.x = (sp34 * wallPolyNormalX) + sp80;
this->actor.world.pos.z = (sp34 * wallPolyNormalZ) + sp7C;
func_80832224(this);
Math_Vec3f_Copy(&this->actor.prevPos, &this->actor.world.pos);
func_80832264(globalCtx, this, sp30);
@ -6186,15 +6186,15 @@ s32 func_8083F0C8(Player* this, GlobalContext* globalCtx, u32 arg2) {
this->stateFlags2 |= PLAYER_STATE2_16;
if (CHECK_BTN_ALL(sControlInput->press.button, BTN_A)) {
f32 sp38 = COLPOLY_GET_NORMAL(wallPoly->normal.x);
f32 sp34 = COLPOLY_GET_NORMAL(wallPoly->normal.z);
f32 wallPolyNormalX = COLPOLY_GET_NORMAL(wallPoly->normal.x);
f32 wallPolyNormalZ = COLPOLY_GET_NORMAL(wallPoly->normal.z);
f32 sp30 = this->wallDistance;
func_80836898(globalCtx, this, func_8083A40C);
this->stateFlags2 |= PLAYER_STATE2_18;
this->actor.shape.rot.y = this->currentYaw = this->actor.wallYaw + 0x8000;
this->actor.world.pos.x = sp4C + (sp30 * sp38);
this->actor.world.pos.z = sp44 + (sp30 * sp34);
this->actor.world.pos.x = sp4C + (sp30 * wallPolyNormalX);
this->actor.world.pos.z = sp44 + (sp30 * wallPolyNormalZ);
func_80832224(this);
this->actor.prevPos = this->actor.world.pos;
func_80832264(globalCtx, this, &gPlayerAnim_002708);
@ -6217,8 +6217,8 @@ s32 func_8083F360(GlobalContext* globalCtx, Player* this, f32 arg1, f32 arg2, f3
f32 yawCos;
f32 yawSin;
s32 temp;
f32 temp1;
f32 temp2;
f32 wallPolyNormalX;
f32 wallPolyNormalZ;
yawCos = Math_CosS(this->actor.shape.rot.y);
yawSin = Math_SinS(this->actor.shape.rot.y);
@ -6238,9 +6238,9 @@ s32 func_8083F360(GlobalContext* globalCtx, Player* this, f32 arg1, f32 arg2, f3
D_808535F0 = func_80041DB8(&globalCtx->colCtx, wallPoly, sp78);
temp1 = COLPOLY_GET_NORMAL(wallPoly->normal.x);
temp2 = COLPOLY_GET_NORMAL(wallPoly->normal.z);
temp = Math_Atan2S(-temp2, -temp1);
wallPolyNormalX = COLPOLY_GET_NORMAL(wallPoly->normal.x);
wallPolyNormalZ = COLPOLY_GET_NORMAL(wallPoly->normal.z);
temp = Math_Atan2S(-wallPolyNormalZ, -wallPolyNormalX);
Math_ScaledStepToS(&this->actor.shape.rot.y, temp, 800);
this->currentYaw = this->actor.shape.rot.y;
@ -9397,7 +9397,7 @@ static Vec3f D_80854798 = { 0.0f, 18.0f, 0.0f };
void func_80847BA0(GlobalContext* globalCtx, Player* this) {
u8 spC7 = 0;
CollisionPoly* spC0;
CollisionPoly* floorPoly;
Vec3f spB4;
f32 spB0;
f32 spAC;
@ -9453,10 +9453,10 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) {
D_80853600 = this->actor.world.pos.y - this->actor.floorHeight;
D_808535F4 = 0;
spC0 = this->actor.floorPoly;
floorPoly = this->actor.floorPoly;
if (spC0 != NULL) {
this->unk_A7A = func_80041EA4(&globalCtx->colCtx, spC0, this->actor.floorBgId);
if (floorPoly != NULL) {
this->unk_A7A = func_80041EA4(&globalCtx->colCtx, floorPoly, this->actor.floorBgId);
this->unk_A82 = this->unk_89E;
if (this->actor.bgCheckFlags & BGCHECKFLAG_WATER) {
@ -9469,35 +9469,36 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) {
if (this->stateFlags2 & PLAYER_STATE2_9) {
this->unk_89E = 1;
} else {
this->unk_89E = SurfaceType_GetSfx(&globalCtx->colCtx, spC0, this->actor.floorBgId);
this->unk_89E = SurfaceType_GetSfx(&globalCtx->colCtx, floorPoly, this->actor.floorBgId);
}
}
if (this->actor.category == ACTORCAT_PLAYER) {
Audio_SetCodeReverb(SurfaceType_GetEcho(&globalCtx->colCtx, spC0, this->actor.floorBgId));
Audio_SetCodeReverb(SurfaceType_GetEcho(&globalCtx->colCtx, floorPoly, this->actor.floorBgId));
if (this->actor.floorBgId == BGCHECK_SCENE) {
func_80074CE8(globalCtx,
SurfaceType_GetLightSettingIndex(&globalCtx->colCtx, spC0, this->actor.floorBgId));
SurfaceType_GetLightSettingIndex(&globalCtx->colCtx, floorPoly, this->actor.floorBgId));
} else {
func_80043508(&globalCtx->colCtx, this->actor.floorBgId);
}
}
D_808535F4 = SurfaceType_GetConveyorSpeed(&globalCtx->colCtx, spC0, this->actor.floorBgId);
D_808535F4 = SurfaceType_GetConveyorSpeed(&globalCtx->colCtx, floorPoly, this->actor.floorBgId);
if (D_808535F4 != 0) {
D_808535F8 = SurfaceType_IsConveyor(&globalCtx->colCtx, spC0, this->actor.floorBgId);
D_808535F8 = SurfaceType_IsConveyor(&globalCtx->colCtx, floorPoly, this->actor.floorBgId);
if (((D_808535F8 == 0) && (this->actor.yDistToWater > 20.0f) &&
(this->currentBoots != PLAYER_BOOTS_IRON)) ||
((D_808535F8 != 0) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND))) {
D_808535FC = SurfaceType_GetConveyorDirection(&globalCtx->colCtx, spC0, this->actor.floorBgId) << 10;
D_808535FC = SurfaceType_GetConveyorDirection(&globalCtx->colCtx, floorPoly, this->actor.floorBgId)
<< 10;
} else {
D_808535F4 = 0;
}
}
}
func_80839034(globalCtx, this, spC0, this->actor.floorBgId);
func_80839034(globalCtx, this, floorPoly, this->actor.floorBgId);
this->actor.bgCheckFlags &= ~BGCHECKFLAG_PLAYER_WALL_INTERACT;
@ -9545,9 +9546,9 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) {
CollisionPoly* wallPoly = this->actor.wallPoly;
if (ABS(wallPoly->normal.y) < 600) {
f32 sp8C = COLPOLY_GET_NORMAL(wallPoly->normal.x);
f32 sp88 = COLPOLY_GET_NORMAL(wallPoly->normal.y);
f32 sp84 = COLPOLY_GET_NORMAL(wallPoly->normal.z);
f32 wallPolyNormalX = COLPOLY_GET_NORMAL(wallPoly->normal.x);
f32 wallPolyNormalY = COLPOLY_GET_NORMAL(wallPoly->normal.y);
f32 wallPolyNormalZ = COLPOLY_GET_NORMAL(wallPoly->normal.z);
f32 wallHeight;
CollisionPoly* sp7C;
CollisionPoly* sp78;
@ -9557,11 +9558,12 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) {
f32 sp60;
s32 temp3;
this->wallDistance = Math3D_UDistPlaneToPos(sp8C, sp88, sp84, wallPoly->dist, &this->actor.world.pos);
this->wallDistance = Math3D_UDistPlaneToPos(wallPolyNormalX, wallPolyNormalY, wallPolyNormalZ,
wallPoly->dist, &this->actor.world.pos);
spB0 = this->wallDistance + 10.0f;
sp68.x = this->actor.world.pos.x - (spB0 * sp8C);
sp68.z = this->actor.world.pos.z - (spB0 * sp84);
sp68.x = this->actor.world.pos.x - (spB0 * wallPolyNormalX);
sp68.z = this->actor.world.pos.z - (spB0 * wallPolyNormalZ);
sp68.y = this->actor.world.pos.y + this->ageProperties->unk_0C;
sp64 = BgCheck_EntityRaycastFloor1(&globalCtx->colCtx, &sp7C, &sp68);
@ -9614,12 +9616,12 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) {
}
if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) {
D_808535E4 = func_80041D4C(&globalCtx->colCtx, spC0, this->actor.floorBgId);
D_808535E4 = func_80041D4C(&globalCtx->colCtx, floorPoly, this->actor.floorBgId);
if (!func_80847A78(this)) {
f32 sp58;
f32 sp54;
f32 sp50;
f32 floorPolyNormalX;
f32 invFloorPolyNormalY;
f32 floorPolyNormalZ;
f32 sp4C;
s32 pad2;
f32 sp44;
@ -9629,22 +9631,25 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) {
func_800434C8(&globalCtx->colCtx, this->actor.floorBgId);
}
sp58 = COLPOLY_GET_NORMAL(spC0->normal.x);
sp54 = 1.0f / COLPOLY_GET_NORMAL(spC0->normal.y);
sp50 = COLPOLY_GET_NORMAL(spC0->normal.z);
floorPolyNormalX = COLPOLY_GET_NORMAL(floorPoly->normal.x);
invFloorPolyNormalY = 1.0f / COLPOLY_GET_NORMAL(floorPoly->normal.y);
floorPolyNormalZ = COLPOLY_GET_NORMAL(floorPoly->normal.z);
sp4C = Math_SinS(this->currentYaw);
sp44 = Math_CosS(this->currentYaw);
this->unk_898 = Math_Atan2S(1.0f, (-(sp58 * sp4C) - (sp50 * sp44)) * sp54);
this->unk_89A = Math_Atan2S(1.0f, (-(sp58 * sp44) - (sp50 * sp4C)) * sp54);
this->unk_898 =
Math_Atan2S(1.0f, (-(floorPolyNormalX * sp4C) - (floorPolyNormalZ * sp44)) * invFloorPolyNormalY);
this->unk_89A =
Math_Atan2S(1.0f, (-(floorPolyNormalX * sp44) - (floorPolyNormalZ * sp4C)) * invFloorPolyNormalY);
sp4C = Math_SinS(this->actor.shape.rot.y);
sp44 = Math_CosS(this->actor.shape.rot.y);
D_80853610 = Math_Atan2S(1.0f, (-(sp58 * sp4C) - (sp50 * sp44)) * sp54);
D_80853610 =
Math_Atan2S(1.0f, (-(floorPolyNormalX * sp4C) - (floorPolyNormalZ * sp44)) * invFloorPolyNormalY);
func_8083E318(globalCtx, this, spC0);
func_8083E318(globalCtx, this, floorPoly);
}
} else {
func_80847A78(this);