mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-12 10:54:44 +00:00
Colliders: colType -> colMaterial (#2186)
* colType -> colMaterial * fixups
This commit is contained in:
parent
64570e871f
commit
f193311013
249 changed files with 448 additions and 448 deletions
|
@ -81,7 +81,7 @@ void Collider_DrawPoly(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC,
|
|||
|
||||
s32 Collider_InitBase(PlayState* play, Collider* col) {
|
||||
static Collider init = {
|
||||
NULL, NULL, NULL, NULL, AT_NONE, AC_NONE, OC1_NONE, OC2_NONE, COLTYPE_HIT3, COLSHAPE_MAX,
|
||||
NULL, NULL, NULL, NULL, AT_NONE, AC_NONE, OC1_NONE, OC2_NONE, COL_MATERIAL_HIT3, COLSHAPE_MAX,
|
||||
};
|
||||
|
||||
*col = init;
|
||||
|
@ -93,7 +93,7 @@ s32 Collider_DestroyBase(PlayState* play, Collider* col) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Uses default OC2_TYPE_1 and COLTYPE_HIT0
|
||||
* Uses default OC2_TYPE_1 and COL_MATERIAL_HIT0
|
||||
*/
|
||||
s32 Collider_SetBaseToActor(PlayState* play, Collider* col, ColliderInitToActor* src) {
|
||||
col->actor = src->actor;
|
||||
|
@ -110,7 +110,7 @@ s32 Collider_SetBaseToActor(PlayState* play, Collider* col, ColliderInitToActor*
|
|||
*/
|
||||
s32 Collider_SetBaseType1(PlayState* play, Collider* col, Actor* actor, ColliderInitType1* src) {
|
||||
col->actor = actor;
|
||||
col->colType = src->colType;
|
||||
col->colMaterial = src->colMaterial;
|
||||
col->atFlags = src->atFlags;
|
||||
col->acFlags = src->acFlags;
|
||||
col->ocFlags1 = src->ocFlags1;
|
||||
|
@ -121,7 +121,7 @@ s32 Collider_SetBaseType1(PlayState* play, Collider* col, Actor* actor, Collider
|
|||
|
||||
s32 Collider_SetBase(PlayState* play, Collider* col, Actor* actor, ColliderInit* src) {
|
||||
col->actor = actor;
|
||||
col->colType = src->colType;
|
||||
col->colMaterial = src->colMaterial;
|
||||
col->atFlags = src->atFlags;
|
||||
col->acFlags = src->acFlags;
|
||||
col->ocFlags1 = src->ocFlags1;
|
||||
|
@ -339,7 +339,7 @@ s32 Collider_DestroyJntSph(PlayState* play, ColliderJntSph* jntSph) {
|
|||
|
||||
/**
|
||||
* Sets up the ColliderJntSph using the values in src, sets it to the actor specified in src, and dynamically allocates
|
||||
* the element array. Uses default OC2_TYPE_1 and COLTYPE_HIT0. Unused.
|
||||
* the element array. Uses default OC2_TYPE_1 and COL_MATERIAL_HIT0. Unused.
|
||||
*/
|
||||
s32 Collider_SetJntSphToActor(PlayState* play, ColliderJntSph* dest, ColliderJntSphInitToActor* src) {
|
||||
ColliderJntSphElement* destElem;
|
||||
|
@ -524,7 +524,7 @@ s32 Collider_DestroyCylinder(PlayState* play, ColliderCylinder* cyl) {
|
|||
|
||||
/**
|
||||
* Sets up the ColliderCylinder using the values in src and sets it to the actor specified in src. Uses default
|
||||
* OC2_TYPE_1 and COLTYPE_0. Used only by DekuJr, who sets it to himself anyways.
|
||||
* OC2_TYPE_1 and COL_MATERIAL_0. Used only by DekuJr, who sets it to himself anyways.
|
||||
*/
|
||||
s32 Collider_SetCylinderToActor(PlayState* play, ColliderCylinder* dest, ColliderCylinderInitToActor* src) {
|
||||
Collider_SetBaseToActor(play, &dest->base, &src->base);
|
||||
|
@ -1546,7 +1546,7 @@ void CollisionCheck_RedBloodUnused(PlayState* play, Collider* collider, Vec3f* v
|
|||
void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* collider, Vec3f* hitPos) {
|
||||
s32 flags = elem->atElemFlags & ATELEM_SFX_MASK;
|
||||
|
||||
if (flags == ATELEM_SFX_NORMAL && collider->colType != COLTYPE_METAL) {
|
||||
if (flags == ATELEM_SFX_NORMAL && collider->colMaterial != COL_MATERIAL_METAL) {
|
||||
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_WHITE, hitPos);
|
||||
if (collider->actor == NULL) {
|
||||
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
|
@ -1555,7 +1555,7 @@ void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* c
|
|||
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &collider->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
}
|
||||
} else if (flags == ATELEM_SFX_NORMAL) { // collider->colType == COLTYPE_METAL
|
||||
} else if (flags == ATELEM_SFX_NORMAL) { // collider->colMaterial == COL_MATERIAL_METAL
|
||||
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_METAL, hitPos);
|
||||
if (collider->actor == NULL) {
|
||||
CollisionCheck_SpawnShieldParticlesMetal(play, hitPos);
|
||||
|
@ -1640,24 +1640,24 @@ static ColChkBloodFunc sBloodFuncs[] = {
|
|||
};
|
||||
|
||||
static HitInfo sHitInfo[] = {
|
||||
{ BLOOD_BLUE, HIT_WHITE }, // COLTYPE_HIT0
|
||||
{ BLOOD_NONE, HIT_DUST }, // COLTYPE_HIT1
|
||||
{ BLOOD_GREEN, HIT_DUST }, // COLTYPE_HIT2
|
||||
{ BLOOD_NONE, HIT_WHITE }, // COLTYPE_HIT3
|
||||
{ BLOOD_WATER, HIT_NONE }, // COLTYPE_HIT4
|
||||
{ BLOOD_NONE, HIT_RED }, // COLTYPE_HIT5
|
||||
{ BLOOD_GREEN, HIT_WHITE }, // COLTYPE_HIT6
|
||||
{ BLOOD_RED, HIT_WHITE }, // COLTYPE_HIT7
|
||||
{ BLOOD_BLUE, HIT_RED }, // COLTYPE_HIT8
|
||||
{ BLOOD_NONE, HIT_SOLID }, // COLTYPE_METAL
|
||||
{ BLOOD_NONE, HIT_NONE }, // COLTYPE_NONE
|
||||
{ BLOOD_NONE, HIT_SOLID }, // COLTYPE_WOOD
|
||||
{ BLOOD_NONE, HIT_SOLID }, // COLTYPE_HARD
|
||||
{ BLOOD_NONE, HIT_WOOD }, // COLTYPE_TREE
|
||||
{ BLOOD_BLUE, HIT_WHITE }, // COL_MATERIAL_HIT0
|
||||
{ BLOOD_NONE, HIT_DUST }, // COL_MATERIAL_HIT1
|
||||
{ BLOOD_GREEN, HIT_DUST }, // COL_MATERIAL_HIT2
|
||||
{ BLOOD_NONE, HIT_WHITE }, // COL_MATERIAL_HIT3
|
||||
{ BLOOD_WATER, HIT_NONE }, // COL_MATERIAL_HIT4
|
||||
{ BLOOD_NONE, HIT_RED }, // COL_MATERIAL_HIT5
|
||||
{ BLOOD_GREEN, HIT_WHITE }, // COL_MATERIAL_HIT6
|
||||
{ BLOOD_RED, HIT_WHITE }, // COL_MATERIAL_HIT7
|
||||
{ BLOOD_BLUE, HIT_RED }, // COL_MATERIAL_HIT8
|
||||
{ BLOOD_NONE, HIT_SOLID }, // COL_MATERIAL_METAL
|
||||
{ BLOOD_NONE, HIT_NONE }, // COL_MATERIAL_NONE
|
||||
{ BLOOD_NONE, HIT_SOLID }, // COL_MATERIAL_WOOD
|
||||
{ BLOOD_NONE, HIT_SOLID }, // COL_MATERIAL_HARD
|
||||
{ BLOOD_NONE, HIT_WOOD }, // COL_MATERIAL_TREE
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles hitmarks, blood, and sound effects for each AC collision, determined by the AC collider's colType
|
||||
* Handles hitmarks, blood, and sound effects for each AC collision, determined by the AC collider's colMaterial
|
||||
*/
|
||||
void CollisionCheck_HitEffects(PlayState* play, Collider* atCol, ColliderElement* atElem, Collider* acCol,
|
||||
ColliderElement* acElem, Vec3f* hitPos) {
|
||||
|
@ -1668,12 +1668,12 @@ void CollisionCheck_HitEffects(PlayState* play, Collider* atCol, ColliderElement
|
|||
return;
|
||||
}
|
||||
if (acCol->actor != NULL) {
|
||||
sBloodFuncs[sHitInfo[acCol->colType].blood](play, acCol, hitPos);
|
||||
sBloodFuncs[sHitInfo[acCol->colMaterial].blood](play, acCol, hitPos);
|
||||
}
|
||||
if (acCol->actor != NULL) {
|
||||
if (sHitInfo[acCol->colType].effect == HIT_SOLID) {
|
||||
if (sHitInfo[acCol->colMaterial].effect == HIT_SOLID) {
|
||||
CollisionCheck_HitSolid(play, atElem, acCol, hitPos);
|
||||
} else if (sHitInfo[acCol->colType].effect == HIT_WOOD) {
|
||||
} else if (sHitInfo[acCol->colMaterial].effect == HIT_WOOD) {
|
||||
if (atCol->actor == NULL) {
|
||||
CollisionCheck_SpawnShieldParticles(play, hitPos);
|
||||
Audio_PlaySfxGeneral(NA_SE_IT_REFLECTION_WOOD, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
|
@ -1681,8 +1681,8 @@ void CollisionCheck_HitEffects(PlayState* play, Collider* atCol, ColliderElement
|
|||
} else {
|
||||
CollisionCheck_SpawnShieldParticlesWood(play, hitPos, &atCol->actor->projectedPos);
|
||||
}
|
||||
} else if (sHitInfo[acCol->colType].effect != HIT_NONE) {
|
||||
EffectSsHitMark_SpawnFixedScale(play, sHitInfo[acCol->colType].effect, hitPos);
|
||||
} else if (sHitInfo[acCol->colMaterial].effect != HIT_NONE) {
|
||||
EffectSsHitMark_SpawnFixedScale(play, sHitInfo[acCol->colMaterial].effect, hitPos);
|
||||
if (!(acElem->acElemFlags & ACELEM_NO_SWORD_SFX)) {
|
||||
CollisionCheck_SwordHitAudio(atCol, acElem);
|
||||
}
|
||||
|
@ -1736,8 +1736,8 @@ s32 CollisionCheck_SetATvsAC(PlayState* play, Collider* atCol, ColliderElement*
|
|||
acElem->acDmgInfo.hitPos.x = hitPos->x;
|
||||
acElem->acDmgInfo.hitPos.y = hitPos->y;
|
||||
acElem->acDmgInfo.hitPos.z = hitPos->z;
|
||||
if (!(atElem->atElemFlags & ATELEM_AT_HITMARK) && acCol->colType != COLTYPE_METAL &&
|
||||
acCol->colType != COLTYPE_WOOD && acCol->colType != COLTYPE_HARD) {
|
||||
if (!(atElem->atElemFlags & ATELEM_AT_HITMARK) && acCol->colMaterial != COL_MATERIAL_METAL &&
|
||||
acCol->colMaterial != COL_MATERIAL_WOOD && acCol->colMaterial != COL_MATERIAL_HARD) {
|
||||
acElem->acElemFlags |= ACELEM_DRAW_HITMARK;
|
||||
} else {
|
||||
CollisionCheck_HitEffects(play, atCol, atElem, acCol, acElem, hitPos);
|
||||
|
|
|
@ -34,7 +34,7 @@ ActorProfile En_A_Obj_Profile = {
|
|||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_ALL,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
|
|
|
@ -34,7 +34,7 @@ ActorProfile En_Item00_Profile = {
|
|||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
|
|
|
@ -1312,17 +1312,17 @@ u8 func_80090480(PlayState* play, ColliderQuad* collider, WeaponInfo* weaponInfo
|
|||
}
|
||||
|
||||
void Player_UpdateShieldCollider(PlayState* play, Player* this, ColliderQuad* collider, Vec3f* quadSrc) {
|
||||
static u8 shieldColTypes[PLAYER_SHIELD_MAX] = {
|
||||
COLTYPE_METAL,
|
||||
COLTYPE_WOOD,
|
||||
COLTYPE_METAL,
|
||||
COLTYPE_METAL,
|
||||
static u8 shieldColMaterials[PLAYER_SHIELD_MAX] = {
|
||||
COL_MATERIAL_METAL,
|
||||
COL_MATERIAL_WOOD,
|
||||
COL_MATERIAL_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
};
|
||||
|
||||
if (this->stateFlags1 & PLAYER_STATE1_22) {
|
||||
Vec3f quadDest[4];
|
||||
|
||||
this->shieldQuad.base.colType = shieldColTypes[this->currentShield];
|
||||
this->shieldQuad.base.colMaterial = shieldColMaterials[this->currentShield];
|
||||
|
||||
Matrix_MultVec3f(&quadSrc[0], &quadDest[0]);
|
||||
Matrix_MultVec3f(&quadSrc[1], &quadDest[1]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue