1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-11 19:43:44 +00:00

cleanup around ColliderTrisElementInit, ColliderTrisInit usage

This commit is contained in:
Dragorn421 2025-02-15 11:33:27 +01:00
parent d90beb2655
commit 763dfeffa6
No known key found for this signature in database
GPG key ID: 381AEBAF3D429335
5 changed files with 45 additions and 43 deletions

View file

@ -41,7 +41,7 @@ ActorProfile Bg_Mizu_Bwall_Profile = {
/**/ BgMizuBwall_Draw, /**/ BgMizuBwall_Draw,
}; };
static ColliderTrisElementInit sTrisElementInitFloor[2] = { static ColliderTrisElementInit sTrisElementsInitFloor[2] = {
{ {
{ {
ELEM_MATERIAL_UNK0, ELEM_MATERIAL_UNK0,
@ -76,10 +76,10 @@ static ColliderTrisInit sTrisInitFloor = {
COLSHAPE_TRIS, COLSHAPE_TRIS,
}, },
2, 2,
sTrisElementInitFloor, sTrisElementsInitFloor,
}; };
static ColliderTrisElementInit sTrisElementInitRutoWall[1] = { static ColliderTrisElementInit sTrisElementsInitRutoWall[1] = {
{ {
{ {
ELEM_MATERIAL_UNK0, ELEM_MATERIAL_UNK0,
@ -103,10 +103,10 @@ static ColliderTrisInit sTrisInitRutoWall = {
COLSHAPE_TRIS, COLSHAPE_TRIS,
}, },
1, 1,
sTrisElementInitRutoWall, sTrisElementsInitRutoWall,
}; };
static ColliderTrisElementInit sTrisElementInitWall[2] = { static ColliderTrisElementInit sTrisElementsInitWall[2] = {
{ {
{ {
ELEM_MATERIAL_UNK0, ELEM_MATERIAL_UNK0,
@ -141,7 +141,7 @@ static ColliderTrisInit sTrisInitUnusedWall = {
COLSHAPE_TRIS, COLSHAPE_TRIS,
}, },
2, 2,
sTrisElementInitWall, sTrisElementsInitWall,
}; };
static ColliderTrisInit sTrisInitStingerWall = { static ColliderTrisInit sTrisInitStingerWall = {
@ -154,7 +154,7 @@ static ColliderTrisInit sTrisInitStingerWall = {
COLSHAPE_TRIS, COLSHAPE_TRIS,
}, },
2, 2,
sTrisElementInitWall, sTrisElementsInitWall,
}; };
static Gfx* sDLists[] = { static Gfx* sDLists[] = {
@ -215,7 +215,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y); sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y); cos = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) { for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) { for (j = 0; j < 3; j++) {
offset.x = sTrisInitFloor.elements[i].dim.vtx[j].x; offset.x = sTrisInitFloor.elements[i].dim.vtx[j].x;
offset.y = sTrisInitFloor.elements[i].dim.vtx[j].y; offset.y = sTrisInitFloor.elements[i].dim.vtx[j].y;
@ -255,7 +255,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y); sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y); cos = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < ARRAY_COUNT(sTrisElementInitRutoWall); i++) { for (i = 0; i < ARRAY_COUNT(sTrisElementsInitRutoWall); i++) {
for (j = 0; j < 3; j++) { for (j = 0; j < 3; j++) {
offset.x = sTrisInitRutoWall.elements[i].dim.vtx[j].x; offset.x = sTrisInitRutoWall.elements[i].dim.vtx[j].x;
offset.y = sTrisInitRutoWall.elements[i].dim.vtx[j].y; offset.y = sTrisInitRutoWall.elements[i].dim.vtx[j].y;
@ -295,7 +295,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y); sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y); cos = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) { for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) { for (j = 0; j < 3; j++) {
//! @bug This uses the wrong set of collision triangles, causing the collider to be //! @bug This uses the wrong set of collision triangles, causing the collider to be
//! flat to the ground instead of vertical. It should use sTrisInitUnusedWall. //! flat to the ground instead of vertical. It should use sTrisInitUnusedWall.
@ -337,7 +337,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y); sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y); cos = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) { for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) { for (j = 0; j < 3; j++) {
//! @bug This uses the wrong set of collision triangles, causing the collider to be //! @bug This uses the wrong set of collision triangles, causing the collider to be
//! flat to the ground instead of vertical. It should use sTrisInitStingerWall. //! flat to the ground instead of vertical. It should use sTrisInitStingerWall.
@ -379,7 +379,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y); sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y); cos = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) { for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) { for (j = 0; j < 3; j++) {
//! @bug This uses the wrong set of collision triangles, causing the collider to be //! @bug This uses the wrong set of collision triangles, causing the collider to be
//! flat to the ground instead of vertical. It should use sTrisInitStingerWall. //! flat to the ground instead of vertical. It should use sTrisInitStingerWall.

View file

@ -102,7 +102,7 @@ void BgPoEvent_InitPaintings(BgPoEvent* this, PlayState* play) {
static s16 paintingPosX[] = { -1302, -866, 1421, 985 }; static s16 paintingPosX[] = { -1302, -866, 1421, 985 };
static s16 paintingPosY[] = { 1107, 1091 }; static s16 paintingPosY[] = { 1107, 1091 };
static s16 paintingPosZ[] = { -3384, -3252 }; static s16 paintingPosZ[] = { -3384, -3252 };
ColliderTrisElementInit* item; ColliderTrisElementInit* elementInit;
Vec3f* vtxVec; Vec3f* vtxVec;
s32 i1; s32 i1;
s32 i2; s32 i2;
@ -123,10 +123,10 @@ void BgPoEvent_InitPaintings(BgPoEvent* this, PlayState* play) {
scaleY = 1.0f; scaleY = 1.0f;
} }
for (i1 = 0; i1 < sTrisInit.count; i1++) { for (i1 = 0; i1 < sTrisInit.count; i1++) {
item = &sTrisInit.elements[i1]; elementInit = &sTrisInit.elements[i1];
if (1) {} // This section looks like a macro of some sort. if (1) {} // This section looks like a macro of some sort.
for (i2 = 0; i2 < 3; i2++) { for (i2 = 0; i2 < 3; i2++) {
vtxVec = &item->dim.vtx[i2]; vtxVec = &elementInit->dim.vtx[i2];
sp9C[i2].x = (vtxVec->x * coss) + (this->dyna.actor.home.pos.x + (sins * vtxVec->z)); sp9C[i2].x = (vtxVec->x * coss) + (this->dyna.actor.home.pos.x + (sins * vtxVec->z));
sp9C[i2].y = (vtxVec->y * scaleY) + this->dyna.actor.home.pos.y; sp9C[i2].y = (vtxVec->y * scaleY) + this->dyna.actor.home.pos.y;
sp9C[i2].z = this->dyna.actor.home.pos.z + (coss * vtxVec->z) - (vtxVec->x * sins); sp9C[i2].z = this->dyna.actor.home.pos.z + (coss * vtxVec->z) - (vtxVec->x * sins);

View file

@ -89,7 +89,7 @@ void BgYdanMaruta_Init(Actor* thisx, PlayState* play) {
f32 sinRotY; f32 sinRotY;
f32 cosRotY; f32 cosRotY;
CollisionHeader* colHeader = NULL; CollisionHeader* colHeader = NULL;
ColliderTrisElementInit* triInit; ColliderTrisElementInit* triElemInit;
Actor_ProcessInitChain(&this->dyna.actor, sInitChain); Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
Collider_InitTris(play, &this->collider); Collider_InitTris(play, &this->collider);
@ -99,10 +99,10 @@ void BgYdanMaruta_Init(Actor* thisx, PlayState* play) {
thisx->params = PARAMS_GET_U(thisx->params, 8, 8); // thisx is required to match here thisx->params = PARAMS_GET_U(thisx->params, 8, 8); // thisx is required to match here
if (this->dyna.actor.params == 0) { if (this->dyna.actor.params == 0) {
triInit = &sTrisElementsInit[0]; triElemInit = &sTrisElementsInit[0];
this->actionFunc = func_808BEFF4; this->actionFunc = func_808BEFF4;
} else { } else {
triInit = &sTrisElementsInit[1]; triElemInit = &sTrisElementsInit[1];
DynaPolyActor_Init(&this->dyna, 0); DynaPolyActor_Init(&this->dyna, 0);
CollisionHeader_GetVirtual(&gDTFallingLadderCol, &colHeader); CollisionHeader_GetVirtual(&gDTFallingLadderCol, &colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, thisx, colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, thisx, colHeader);
@ -119,16 +119,16 @@ void BgYdanMaruta_Init(Actor* thisx, PlayState* play) {
cosRotY = Math_CosS(this->dyna.actor.shape.rot.y); cosRotY = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
sp4C[i].x = (triInit->dim.vtx[i].x * cosRotY) + this->dyna.actor.world.pos.x; sp4C[i].x = (triElemInit->dim.vtx[i].x * cosRotY) + this->dyna.actor.world.pos.x;
sp4C[i].y = triInit->dim.vtx[i].y + this->dyna.actor.world.pos.y; sp4C[i].y = triElemInit->dim.vtx[i].y + this->dyna.actor.world.pos.y;
sp4C[i].z = this->dyna.actor.world.pos.z - (triInit->dim.vtx[i].x * sinRotY); sp4C[i].z = this->dyna.actor.world.pos.z - (triElemInit->dim.vtx[i].x * sinRotY);
} }
Collider_SetTrisVertices(&this->collider, 0, &sp4C[0], &sp4C[1], &sp4C[2]); Collider_SetTrisVertices(&this->collider, 0, &sp4C[0], &sp4C[1], &sp4C[2]);
sp4C[1].x = (triInit->dim.vtx[2].x * cosRotY) + this->dyna.actor.world.pos.x; sp4C[1].x = (triElemInit->dim.vtx[2].x * cosRotY) + this->dyna.actor.world.pos.x;
sp4C[1].y = triInit->dim.vtx[0].y + this->dyna.actor.world.pos.y; sp4C[1].y = triElemInit->dim.vtx[0].y + this->dyna.actor.world.pos.y;
sp4C[1].z = this->dyna.actor.world.pos.z - (triInit->dim.vtx[2].x * sinRotY); sp4C[1].z = this->dyna.actor.world.pos.z - (triElemInit->dim.vtx[2].x * sinRotY);
Collider_SetTrisVertices(&this->collider, 1, &sp4C[0], &sp4C[2], &sp4C[1]); Collider_SetTrisVertices(&this->collider, 1, &sp4C[0], &sp4C[2], &sp4C[1]);
} }

View file

@ -51,7 +51,7 @@ ActorProfile Bg_Ydan_Sp_Profile = {
/**/ BgYdanSp_Draw, /**/ BgYdanSp_Draw,
}; };
static ColliderTrisElementInit sTrisItemsInit[2] = { static ColliderTrisElementInit sTrisElementsInit[2] = {
{ {
{ {
ELEM_MATERIAL_UNK0, ELEM_MATERIAL_UNK0,
@ -86,7 +86,7 @@ static ColliderTrisInit sTrisInit = {
COLSHAPE_TRIS, COLSHAPE_TRIS,
}, },
2, 2,
sTrisItemsInit, sTrisElementsInit,
}; };
static InitChainEntry sInitChain[] = { static InitChainEntry sInitChain[] = {
@ -95,11 +95,11 @@ static InitChainEntry sInitChain[] = {
void BgYdanSp_Init(Actor* thisx, PlayState* play) { void BgYdanSp_Init(Actor* thisx, PlayState* play) {
BgYdanSp* this = (BgYdanSp*)thisx; BgYdanSp* this = (BgYdanSp*)thisx;
ColliderTrisElementInit* ti0 = &sTrisItemsInit[0]; ColliderTrisElementInit* triElemInit0 = &sTrisElementsInit[0];
Vec3f tri[3]; Vec3f tri[3];
s32 i; s32 i;
CollisionHeader* colHeader = NULL; CollisionHeader* colHeader = NULL;
ColliderTrisElementInit* ti1 = &sTrisItemsInit[1]; ColliderTrisElementInit* triElemInit1 = &sTrisElementsInit[1];
f32 cossY; f32 cossY;
f32 sinsY; f32 sinsY;
f32 cossX; f32 cossX;
@ -117,9 +117,9 @@ void BgYdanSp_Init(Actor* thisx, PlayState* play) {
this->actionFunc = BgYdanSp_FloorWebIdle; this->actionFunc = BgYdanSp_FloorWebIdle;
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
tri[i].x = ti0->dim.vtx[i].x + this->dyna.actor.world.pos.x; tri[i].x = triElemInit0->dim.vtx[i].x + this->dyna.actor.world.pos.x;
tri[i].y = ti0->dim.vtx[i].y + this->dyna.actor.world.pos.y; tri[i].y = triElemInit0->dim.vtx[i].y + this->dyna.actor.world.pos.y;
tri[i].z = ti0->dim.vtx[i].z + this->dyna.actor.world.pos.z; tri[i].z = triElemInit0->dim.vtx[i].z + this->dyna.actor.world.pos.z;
} }
Collider_SetTrisVertices(&this->colliderTris, 0, &tri[0], &tri[1], &tri[2]); Collider_SetTrisVertices(&this->colliderTris, 0, &tri[0], &tri[1], &tri[2]);
@ -137,18 +137,20 @@ void BgYdanSp_Init(Actor* thisx, PlayState* play) {
cossX = Math_CosS(this->dyna.actor.shape.rot.x); cossX = Math_CosS(this->dyna.actor.shape.rot.x);
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
tri[i].x = tri[i].x = this->dyna.actor.world.pos.x + (cossY * triElemInit1->dim.vtx[i].x) -
this->dyna.actor.world.pos.x + (cossY * ti1->dim.vtx[i].x) - (sinsY * ti1->dim.vtx[i].y * nSinsX); (sinsY * triElemInit1->dim.vtx[i].y * nSinsX);
tri[i].y = this->dyna.actor.world.pos.y + (ti1->dim.vtx[i].y * cossX); tri[i].y = this->dyna.actor.world.pos.y + (triElemInit1->dim.vtx[i].y * cossX);
tri[i].z = tri[i].z = this->dyna.actor.world.pos.z - (sinsY * triElemInit1->dim.vtx[i].x) +
this->dyna.actor.world.pos.z - (sinsY * ti1->dim.vtx[i].x) + (ti1->dim.vtx[i].y * cossY * nSinsX); (triElemInit1->dim.vtx[i].y * cossY * nSinsX);
} }
Collider_SetTrisVertices(&this->colliderTris, 0, &tri[0], &tri[1], &tri[2]); Collider_SetTrisVertices(&this->colliderTris, 0, &tri[0], &tri[1], &tri[2]);
tri[1].x = this->dyna.actor.world.pos.x + (cossY * ti1->dim.vtx[0].x) - (ti1->dim.vtx[2].y * sinsY * nSinsX); tri[1].x = this->dyna.actor.world.pos.x + (cossY * triElemInit1->dim.vtx[0].x) -
tri[1].y = this->dyna.actor.world.pos.y + (ti1->dim.vtx[2].y * cossX); (triElemInit1->dim.vtx[2].y * sinsY * nSinsX);
tri[1].z = this->dyna.actor.world.pos.z - (sinsY * ti1->dim.vtx[0].x) + (ti1->dim.vtx[2].y * cossY * nSinsX); tri[1].y = this->dyna.actor.world.pos.y + (triElemInit1->dim.vtx[2].y * cossX);
tri[1].z = this->dyna.actor.world.pos.z - (sinsY * triElemInit1->dim.vtx[0].x) +
(triElemInit1->dim.vtx[2].y * cossY * nSinsX);
Collider_SetTrisVertices(&this->colliderTris, 1, &tri[0], &tri[2], &tri[1]); Collider_SetTrisVertices(&this->colliderTris, 1, &tri[0], &tri[2], &tri[1]);
} }
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);

View file

@ -126,7 +126,7 @@ static ColliderCylinderInit sBodyColliderInit = {
{ 20, 70, 0, { 0, 0, 0 } }, { 20, 70, 0, { 0, 0, 0 } },
}; };
static ColliderTrisElementInit sFrontShieldingTrisInit[2] = { static ColliderTrisElementInit sFrontShieldingTrisElementsInit[2] = {
{ {
{ {
ELEM_MATERIAL_UNK2, ELEM_MATERIAL_UNK2,
@ -151,7 +151,7 @@ static ColliderTrisElementInit sFrontShieldingTrisInit[2] = {
}, },
}; };
static ColliderTrisInit sFrontShieldingInit = { static ColliderTrisInit sFrontShieldingTrisInit = {
{ {
COL_MATERIAL_METAL, COL_MATERIAL_METAL,
AT_NONE, AT_NONE,
@ -161,7 +161,7 @@ static ColliderTrisInit sFrontShieldingInit = {
COLSHAPE_TRIS, COLSHAPE_TRIS,
}, },
2, 2,
sFrontShieldingTrisInit, sFrontShieldingTrisElementsInit,
}; };
static ColliderQuadInit sAttackColliderInit = { static ColliderQuadInit sAttackColliderInit = {
@ -285,7 +285,7 @@ void EnMb_Init(Actor* thisx, PlayState* play) {
Collider_InitCylinder(play, &this->bodyCollider); Collider_InitCylinder(play, &this->bodyCollider);
Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sBodyColliderInit); Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sBodyColliderInit);
Collider_InitTris(play, &this->frontShieldingCollider); Collider_InitTris(play, &this->frontShieldingCollider);
Collider_SetTris(play, &this->frontShieldingCollider, &this->actor, &sFrontShieldingInit, this->frontShieldingColliderElements); Collider_SetTris(play, &this->frontShieldingCollider, &this->actor, &sFrontShieldingTrisInit, this->frontShieldingColliderElements);
Collider_InitQuad(play, &this->attackCollider); Collider_InitQuad(play, &this->attackCollider);
Collider_SetQuad(play, &this->attackCollider, &this->actor, &sAttackColliderInit); Collider_SetQuad(play, &this->attackCollider, &this->actor, &sAttackColliderInit);