1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-25 17:54:15 +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) { void func_800359B8(Actor* actor, s16 arg1, Vec3s* arg2) {
f32 sp44; f32 floorPolyNormalX;
f32 sp40; f32 floorPolyNormalY;
f32 sp3C; f32 floorPolyNormalZ;
f32 sp38; f32 sp38;
f32 sp34; f32 sp34;
f32 sp30; f32 sp30;
@ -4172,19 +4172,19 @@ void func_800359B8(Actor* actor, s16 arg1, Vec3s* arg2) {
if (actor->floorPoly != NULL) { if (actor->floorPoly != NULL) {
floorPoly = actor->floorPoly; floorPoly = actor->floorPoly;
sp44 = COLPOLY_GET_NORMAL(floorPoly->normal.x); floorPolyNormalX = COLPOLY_GET_NORMAL(floorPoly->normal.x);
sp40 = COLPOLY_GET_NORMAL(floorPoly->normal.y); floorPolyNormalY = COLPOLY_GET_NORMAL(floorPoly->normal.y);
sp3C = COLPOLY_GET_NORMAL(floorPoly->normal.z); floorPolyNormalZ = COLPOLY_GET_NORMAL(floorPoly->normal.z);
sp38 = Math_SinS(arg1); sp38 = Math_SinS(arg1);
sp34 = Math_CosS(arg1); sp34 = Math_CosS(arg1);
sp28 = (-(sp44 * sp38) - (sp3C * sp34)); sp28 = (-(floorPolyNormalX * sp38) - (floorPolyNormalZ * sp34));
arg2->x = -(s16)(Math_FAtan2F(sp28 * sp40, 1.0f) * (32768 / M_PI)); arg2->x = -(s16)(Math_FAtan2F(sp28 * floorPolyNormalY, 1.0f) * (32768 / M_PI));
sp2C = Math_SinS(arg1 - 16375); sp2C = Math_SinS(arg1 - 16375);
sp30 = Math_CosS(arg1 - 16375); sp30 = Math_CosS(arg1 - 16375);
sp24 = (-(sp44 * sp2C) - (sp3C * sp30)); sp24 = (-(floorPolyNormalX * sp2C) - (floorPolyNormalZ * sp30));
arg2->z = -(s16)(Math_FAtan2F(sp24 * sp40, 1.0f) * (32768 / M_PI)); 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) { void EnBubble_Fly(EnBubble* this, GlobalContext* globalCtx) {
CollisionPoly* sp94; CollisionPoly* poly;
Actor* bumpActor; Actor* bumpActor;
Vec3f sp84; Vec3f sp84;
Vec3f sp78; Vec3f sp78;
@ -233,10 +233,10 @@ void EnBubble_Fly(EnBubble* this, GlobalContext* globalCtx) {
sp6C.x += (sp54.x * 24.0f); sp6C.x += (sp54.x * 24.0f);
sp6C.y += (sp54.y * 24.0f); sp6C.y += (sp54.y * 24.0f);
sp6C.z += (sp54.z * 24.0f); sp6C.z += (sp54.z * 24.0f);
if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &sp78, &sp6C, &sp84, &sp94, true, true, true, false, &bgId)) { if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &sp78, &sp6C, &sp84, &poly, true, true, true, false, &bgId)) {
sp60.x = COLPOLY_GET_NORMAL(sp94->normal.x); sp60.x = COLPOLY_GET_NORMAL(poly->normal.x);
sp60.y = COLPOLY_GET_NORMAL(sp94->normal.y); sp60.y = COLPOLY_GET_NORMAL(poly->normal.y);
sp60.z = COLPOLY_GET_NORMAL(sp94->normal.z); sp60.z = COLPOLY_GET_NORMAL(poly->normal.z);
EnBubble_Vec3fNormalizedRelfect(&sp54, &sp60, &sp54); EnBubble_Vec3fNormalizedRelfect(&sp54, &sp60, &sp54);
this->bounceDirection = sp54; this->bounceDirection = sp54;
bounceCount = this->bounceCount; bounceCount = this->bounceCount;

View file

@ -407,7 +407,7 @@ void func_80AAE224(EnMm* this, GlobalContext* globalCtx) {
} }
void func_80AAE294(EnMm* this, GlobalContext* globalCtx) { void func_80AAE294(EnMm* this, GlobalContext* globalCtx) {
f32 floorYNorm; f32 floorPolyNormalY;
Vec3f dustPos; Vec3f dustPos;
if (!Player_InCsMode(globalCtx)) { if (!Player_InCsMode(globalCtx)) {
@ -439,9 +439,9 @@ void func_80AAE294(EnMm* this, GlobalContext* globalCtx) {
if (func_80AADA70() == 0) { if (func_80AADA70() == 0) {
if (this->actor.floorPoly != NULL) { 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) { if (this->sitTimer > 30) {
EnMm_ChangeAnim(this, RM_ANIM_SIT, &this->curAnimIndex); EnMm_ChangeAnim(this, RM_ANIM_SIT, &this->curAnimIndex);
this->actionFunc = func_80AAE224; 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) { s32 func_80B0BE20(EnSw* this, CollisionPoly* poly) {
Vec3f sp44; Vec3f polyNormal;
Vec3f sp38; Vec3f sp38;
f32 sp34; f32 sp34;
f32 temp_f0; f32 temp_f0;
s32 pad; s32 pad;
this->actor.floorPoly = poly; this->actor.floorPoly = poly;
sp44.x = COLPOLY_GET_NORMAL(poly->normal.x); polyNormal.x = COLPOLY_GET_NORMAL(poly->normal.x);
sp44.y = COLPOLY_GET_NORMAL(poly->normal.y); polyNormal.y = COLPOLY_GET_NORMAL(poly->normal.y);
sp44.z = COLPOLY_GET_NORMAL(poly->normal.z); polyNormal.z = COLPOLY_GET_NORMAL(poly->normal.z);
sp34 = Math_FAcosF(DOTXYZ(sp44, this->unk_364)); sp34 = Math_FAcosF(DOTXYZ(polyNormal, this->unk_364));
EnSw_CrossProduct(&this->unk_364, &sp44, &sp38); EnSw_CrossProduct(&this->unk_364, &polyNormal, &sp38);
Matrix_RotateAxis(sp34, &sp38, MTXMODE_NEW); Matrix_RotateAxis(sp34, &sp38, MTXMODE_NEW);
Matrix_MultVec3f(&this->unk_370, &sp38); Matrix_MultVec3f(&this->unk_370, &sp38);
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); temp_f0 = Math3D_Vec3fMagnitude(&this->unk_37C);
if (temp_f0 < 0.001f) { if (temp_f0 < 0.001f) {
return 0; 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.x = this->unk_37C.x * (1.0f / temp_f0);
this->unk_37C.y = this->unk_37C.y * (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_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.xx = this->unk_370.x;
this->unk_3D8.yx = this->unk_370.y; this->unk_3D8.yx = this->unk_370.y;
this->unk_3D8.zx = this->unk_370.z; 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) { s32 func_80B0CCF4(EnSw* this, f32* arg1) {
CollisionPoly* temp_v1; CollisionPoly* floorPoly;
f32 temp_f0; f32 temp_f0;
Vec3f sp6C; Vec3f floorPolyNormal;
MtxF sp2C; MtxF sp2C;
if (this->actor.floorPoly == NULL) { if (this->actor.floorPoly == NULL) {
return false; return false;
} }
temp_v1 = this->actor.floorPoly; floorPoly = this->actor.floorPoly;
sp6C.x = COLPOLY_GET_NORMAL(temp_v1->normal.x); floorPolyNormal.x = COLPOLY_GET_NORMAL(floorPoly->normal.x);
sp6C.y = COLPOLY_GET_NORMAL(temp_v1->normal.y); floorPolyNormal.y = COLPOLY_GET_NORMAL(floorPoly->normal.y);
sp6C.z = COLPOLY_GET_NORMAL(temp_v1->normal.z); floorPolyNormal.z = COLPOLY_GET_NORMAL(floorPoly->normal.z);
Matrix_RotateAxis(*arg1, &sp6C, MTXMODE_NEW); Matrix_RotateAxis(*arg1, &floorPolyNormal, MTXMODE_NEW);
Matrix_MultVec3f(&this->unk_370, &sp6C); Matrix_MultVec3f(&this->unk_370, &floorPolyNormal);
this->unk_370 = sp6C; this->unk_370 = floorPolyNormal;
EnSw_CrossProduct(&this->unk_370, &this->unk_364, &this->unk_37C); EnSw_CrossProduct(&this->unk_370, &this->unk_364, &this->unk_37C);
temp_f0 = Math3D_Vec3fMagnitude(&this->unk_37C); temp_f0 = Math3D_Vec3fMagnitude(&this->unk_37C);
if (temp_f0 < 0.001f) { if (temp_f0 < 0.001f) {

View file

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

View file

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