mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-20 22:11:16 +00:00
Small Skin system documentation pass (#1017)
* some docs * rename a bunch of callbacks * more cleanup * format * last cleanup * some updates * more docs * done i think * name flag and format * name unused variable * comments * revert unwanted change * z64skin.h * format * Address review * Rename PostLimbDraw callbacks to PostDraw and some PR addressing * add true/false for setTranslation * ahhhh * remove "you" Co-authored-by: fig02 <fig02srl@gmail.com>
This commit is contained in:
parent
e5ecdfd559
commit
9fec455805
21 changed files with 442 additions and 345 deletions
|
@ -851,8 +851,7 @@ void EnHorse_Init(Actor* thisx, GlobalContext* globalCtx2) {
|
|||
this->stateFlags |= ENHORSE_UNRIDEABLE;
|
||||
}
|
||||
|
||||
func_800A663C(globalCtx, &this->skin, sSkeletonHeaders[this->type],
|
||||
sAnimationHeaders[this->type][ENHORSE_ANIM_IDLE]);
|
||||
Skin_Init(globalCtx, &this->skin, sSkeletonHeaders[this->type], sAnimationHeaders[this->type][ENHORSE_ANIM_IDLE]);
|
||||
this->animationIdx = ENHORSE_ANIM_IDLE;
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animationIdx]);
|
||||
this->numBoosts = 6;
|
||||
|
@ -901,7 +900,7 @@ void EnHorse_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|||
if (this->stateFlags & ENHORSE_DRAW) {
|
||||
Audio_StopSfxByPos(&this->unk_21C);
|
||||
}
|
||||
func_800A6888(globalCtx, &this->skin);
|
||||
Skin_Free(globalCtx, &this->skin);
|
||||
Collider_DestroyCylinder(globalCtx, &this->cyl1);
|
||||
Collider_DestroyCylinder(globalCtx, &this->cyl2);
|
||||
Collider_DestroyJntSph(globalCtx, &this->jntSph);
|
||||
|
@ -3651,7 +3650,7 @@ void EnHorse_RandomOffset(Vec3f* src, f32 dist, Vec3f* dst) {
|
|||
dst->z = (Rand_ZeroOne() * (dist * 2.0f) + src->z) - dist;
|
||||
}
|
||||
|
||||
void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
||||
void EnHorse_PostDraw(Actor* thisx, GlobalContext* globalCtx, Skin* skin) {
|
||||
EnHorse* this = (EnHorse*)thisx;
|
||||
s32 pad;
|
||||
Vec3f sp94 = { 0.0f, 0.0f, 0.0f };
|
||||
|
@ -3669,7 +3668,7 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski
|
|||
f32 sp28;
|
||||
|
||||
if (!(this->stateFlags & ENHORSE_CALC_RIDER_POS)) {
|
||||
func_800A6408(skin, 30, &riderOffset, &this->riderPos);
|
||||
Skin_GetLimbPos(skin, 30, &riderOffset, &this->riderPos);
|
||||
this->riderPos.x = this->riderPos.x - this->actor.world.pos.x;
|
||||
this->riderPos.y = this->riderPos.y - this->actor.world.pos.y;
|
||||
this->riderPos.z = this->riderPos.z - this->actor.world.pos.z;
|
||||
|
@ -3677,14 +3676,14 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski
|
|||
this->stateFlags &= ~ENHORSE_CALC_RIDER_POS;
|
||||
}
|
||||
|
||||
func_800A6408(skin, 13, &sp94, &sp2C);
|
||||
Skin_GetLimbPos(skin, 13, &sp94, &sp2C);
|
||||
SkinMatrix_Vec3fMtxFMultXYZW(&globalCtx->viewProjectionMtxF, &sp2C, &this->unk_228, &sp28);
|
||||
if ((this->animationIdx == ENHORSE_ANIM_IDLE && this->action != ENHORSE_ACT_FROZEN) &&
|
||||
((frame > 40.0f && frame < 45.0f && this->type == HORSE_EPONA) ||
|
||||
(frame > 28.0f && frame < 33.0f && this->type == HORSE_HNI))) {
|
||||
if (Rand_ZeroOne() < 0.6f) {
|
||||
this->dustFlags |= 1;
|
||||
func_800A6408(skin, 28, &hoofOffset, &this->frontRightHoof);
|
||||
Skin_GetLimbPos(skin, 28, &hoofOffset, &this->frontRightHoof);
|
||||
this->frontRightHoof.y = this->frontRightHoof.y - 5.0f;
|
||||
}
|
||||
} else {
|
||||
|
@ -3692,12 +3691,12 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski
|
|||
if ((frame > 10.0f && frame < 13.0f) || (frame > 25.0f && frame < 33.0f)) {
|
||||
if (Rand_ZeroOne() < 0.7f) {
|
||||
this->dustFlags |= 2;
|
||||
func_800A6408(skin, 20, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 20, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->frontLeftHoof);
|
||||
}
|
||||
if (Rand_ZeroOne() < 0.7f) {
|
||||
this->dustFlags |= 1;
|
||||
func_800A6408(skin, 28, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 28, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->frontRightHoof);
|
||||
}
|
||||
}
|
||||
|
@ -3705,7 +3704,7 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski
|
|||
if ((frame > 6.0f && frame < 10.0f) || (frame > 23.0f && frame < 29.0f)) {
|
||||
if (Rand_ZeroOne() < 0.7f) {
|
||||
this->dustFlags |= 8;
|
||||
func_800A6408(skin, 37, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 37, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backLeftHoof);
|
||||
}
|
||||
}
|
||||
|
@ -3713,60 +3712,60 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski
|
|||
if ((frame > 7.0f && frame < 14.0f) || (frame > 26.0f && frame < 30.0f)) {
|
||||
if (Rand_ZeroOne() < 0.7f) {
|
||||
this->dustFlags |= 4;
|
||||
func_800A6408(skin, 45, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 45, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backRightHoof);
|
||||
}
|
||||
}
|
||||
} else if (this->animationIdx == ENHORSE_ANIM_GALLOP) {
|
||||
if ((frame > 14.0f) && (frame < 16.0f)) {
|
||||
this->dustFlags |= 1;
|
||||
func_800A6408(skin, 28, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 28, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 5.0f, &this->frontRightHoof);
|
||||
} else if (frame > 8.0f && frame < 10.0f) {
|
||||
this->dustFlags |= 2;
|
||||
func_800A6408(skin, 20, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 20, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->frontLeftHoof);
|
||||
} else if (frame > 1.0f && frame < 3.0f) {
|
||||
this->dustFlags |= 4;
|
||||
func_800A6408(skin, 45, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 45, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backRightHoof);
|
||||
} else if ((frame > 26.0f) && (frame < 28.0f)) {
|
||||
this->dustFlags |= 8;
|
||||
func_800A6408(skin, 37, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 37, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backLeftHoof);
|
||||
}
|
||||
} else if (this->action == ENHORSE_ACT_LOW_JUMP && frame > 6.0f &&
|
||||
Rand_ZeroOne() < 1.0f - (frame - 6.0f) * (1.0f / 17.0f)) {
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
this->dustFlags |= 8;
|
||||
func_800A6408(skin, 37, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 37, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backLeftHoof);
|
||||
}
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
this->dustFlags |= 4;
|
||||
func_800A6408(skin, 45, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 45, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backRightHoof);
|
||||
}
|
||||
} else if (this->action == ENHORSE_ACT_HIGH_JUMP && frame > 5.0f &&
|
||||
Rand_ZeroOne() < 1.0f - (frame - 5.0f) * (1.0f / 25.0f)) {
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
this->dustFlags |= 8;
|
||||
func_800A6408(skin, 37, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 37, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backLeftHoof);
|
||||
}
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
this->dustFlags |= 4;
|
||||
func_800A6408(skin, 45, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 45, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backRightHoof);
|
||||
}
|
||||
} else if (this->action == ENHORSE_ACT_BRIDGE_JUMP && Rand_ZeroOne() < 0.5f) {
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
this->dustFlags |= 8;
|
||||
func_800A6408(skin, 37, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 37, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backLeftHoof);
|
||||
} else {
|
||||
this->dustFlags |= 4;
|
||||
func_800A6408(skin, 45, &hoofOffset, &sp70);
|
||||
Skin_GetLimbPos(skin, 45, &hoofOffset, &sp70);
|
||||
EnHorse_RandomOffset(&sp70, 10.0f, &this->backRightHoof);
|
||||
}
|
||||
}
|
||||
|
@ -3777,7 +3776,7 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski
|
|||
center.y = this->jntSph.elements[i].dim.modelSphere.center.y;
|
||||
center.z = this->jntSph.elements[i].dim.modelSphere.center.z;
|
||||
|
||||
func_800A6408(skin, this->jntSph.elements[i].dim.limb, ¢er, &newCenter);
|
||||
Skin_GetLimbPos(skin, this->jntSph.elements[i].dim.limb, ¢er, &newCenter);
|
||||
this->jntSph.elements[i].dim.worldSphere.center.x = newCenter.x;
|
||||
this->jntSph.elements[i].dim.worldSphere.center.y = newCenter.y;
|
||||
this->jntSph.elements[i].dim.worldSphere.center.z = newCenter.z;
|
||||
|
@ -3797,7 +3796,7 @@ void EnHorse_SkinCallback1(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* ski
|
|||
// unused
|
||||
static s32 D_80A667DC[] = { 0, 3, 7, 14 };
|
||||
|
||||
s32 EnHorse_SkinCallback2(Actor* thisx, GlobalContext* globalCtx, s32 limbIndex, PSkinAwb* arg3) {
|
||||
s32 EnHorse_OverrideLimbDraw(Actor* thisx, GlobalContext* globalCtx, s32 limbIndex, Skin* arg3) {
|
||||
static void* eyeTextures[] = {
|
||||
gEponaEyeOpenTex,
|
||||
gEponaEyeHalfTex,
|
||||
|
@ -3813,7 +3812,7 @@ s32 EnHorse_SkinCallback2(Actor* thisx, GlobalContext* globalCtx, s32 limbIndex,
|
|||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(eyeTextures[index]));
|
||||
} else if (this->type == HORSE_HNI && this->stateFlags & ENHORSE_FLAG_18 && limbIndex == 30) {
|
||||
func_800A5F60(globalCtx->state.gfxCtx, &this->skin, limbIndex, gHorseIngoGerudoSaddleDL, 0);
|
||||
Skin_DrawLimb(globalCtx->state.gfxCtx, &this->skin, limbIndex, gHorseIngoGerudoSaddleDL, 0);
|
||||
drawOriginalLimb = false;
|
||||
}
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_horse.c", 8601);
|
||||
|
@ -3827,9 +3826,9 @@ void EnHorse_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
this->stateFlags |= ENHORSE_DRAW;
|
||||
if (this->stateFlags & ENHORSE_JUMPING) {
|
||||
func_800A6360(thisx, globalCtx, &this->skin, EnHorse_SkinCallback1, EnHorse_SkinCallback2, 0);
|
||||
func_800A6360(thisx, globalCtx, &this->skin, EnHorse_PostDraw, EnHorse_OverrideLimbDraw, false);
|
||||
} else {
|
||||
func_800A6360(thisx, globalCtx, &this->skin, EnHorse_SkinCallback1, EnHorse_SkinCallback2, 1);
|
||||
func_800A6360(thisx, globalCtx, &this->skin, EnHorse_PostDraw, EnHorse_OverrideLimbDraw, true);
|
||||
}
|
||||
if (this->postDrawFunc != NULL) {
|
||||
this->postDrawFunc(this, globalCtx);
|
||||
|
|
|
@ -98,7 +98,7 @@ typedef struct EnHorse {
|
|||
/* 0x0154 */ s32 noInputTimerMax;
|
||||
/* 0x0158 */ s32 type;
|
||||
/* 0x015C */ s8 bankIndex;
|
||||
/* 0x0160 */ PSkinAwb skin;
|
||||
/* 0x0160 */ Skin skin;
|
||||
/* 0x01F0 */ u32 stateFlags;
|
||||
/* 0x01F4 */ Vec3f lastPos;
|
||||
/* 0x0200 */ s16 lastYaw;
|
||||
|
|
|
@ -177,7 +177,7 @@ void EnHorseGanon_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
this->actor.focus.pos = this->actor.world.pos;
|
||||
this->action = 0;
|
||||
this->actor.focus.pos.y += 70.0f;
|
||||
func_800A663C(globalCtx, &this->skin, &gHorseGanonSkel, &gHorseGanonIdleAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gHorseGanonSkel, &gHorseGanonIdleAnim);
|
||||
this->currentAnimation = 0;
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[0]);
|
||||
|
||||
|
@ -193,7 +193,7 @@ void EnHorseGanon_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
void EnHorseGanon_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnHorseGanon* this = (EnHorseGanon*)thisx;
|
||||
|
||||
func_800A6888(globalCtx, &this->skin);
|
||||
Skin_Free(globalCtx, &this->skin);
|
||||
Collider_DestroyCylinder(globalCtx, &this->colliderBody);
|
||||
Collider_DestroyJntSph(globalCtx, &this->colliderHead);
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ void EnHorseGanon_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->colliderBody.base);
|
||||
}
|
||||
|
||||
void func_80A68FA8(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
||||
void EnHorseGanon_PostDraw(Actor* thisx, GlobalContext* globalCtx, Skin* skin) {
|
||||
Vec3f sp4C;
|
||||
Vec3f sp40;
|
||||
EnHorseGanon* this = (EnHorseGanon*)thisx;
|
||||
|
@ -307,7 +307,7 @@ void func_80A68FA8(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
|||
sp4C.y = this->colliderHead.elements[index].dim.modelSphere.center.y;
|
||||
sp4C.z = this->colliderHead.elements[index].dim.modelSphere.center.z;
|
||||
|
||||
func_800A6408(skin, this->colliderHead.elements[index].dim.limb, &sp4C, &sp40);
|
||||
Skin_GetLimbPos(skin, this->colliderHead.elements[index].dim.limb, &sp4C, &sp40);
|
||||
|
||||
this->colliderHead.elements[index].dim.worldSphere.center.x = sp40.x;
|
||||
this->colliderHead.elements[index].dim.worldSphere.center.y = sp40.y;
|
||||
|
@ -326,5 +326,5 @@ void EnHorseGanon_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
|
||||
func_80A68E14(this, globalCtx);
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, func_80A68FA8, 1);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, EnHorseGanon_PostDraw, true);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ typedef struct EnHorseGanon {
|
|||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ s32 action;
|
||||
/* 0x0150 */ s32 currentAnimation;
|
||||
/* 0x0154 */ PSkinAwb skin;
|
||||
/* 0x0154 */ Skin skin;
|
||||
/* 0x01E4 */ u8 unk_1E4[0x04];
|
||||
/* 0x01E8 */ s32 soundCount;
|
||||
/* 0x01EC */ s32 unk_1EC;
|
||||
|
|
|
@ -151,7 +151,7 @@ void EnHorseLinkChild_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
this->action = 1;
|
||||
this->actor.focus.pos = this->actor.world.pos;
|
||||
this->actor.focus.pos.y += 70.0f;
|
||||
func_800A663C(globalCtx, &this->skin, &gChildEponaSkel, &gChildEponaGallopingAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gChildEponaSkel, &gChildEponaGallopingAnim);
|
||||
this->animationIdx = 0;
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[0]);
|
||||
Collider_InitCylinder(globalCtx, &this->bodyCollider);
|
||||
|
@ -181,7 +181,7 @@ void EnHorseLinkChild_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
void EnHorseLinkChild_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnHorseLinkChild* this = (EnHorseLinkChild*)thisx;
|
||||
|
||||
func_800A6888(globalCtx, &this->skin);
|
||||
Skin_Free(globalCtx, &this->skin);
|
||||
Collider_DestroyCylinder(globalCtx, &this->bodyCollider);
|
||||
Collider_DestroyJntSph(globalCtx, &this->headCollider);
|
||||
}
|
||||
|
@ -578,7 +578,7 @@ void EnHorseLinkChild_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
func_80A6948C(this);
|
||||
}
|
||||
|
||||
void func_80A6ABF8(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
||||
void EnHorseLinkChild_PostDraw(Actor* thisx, GlobalContext* globalCtx, Skin* skin) {
|
||||
Vec3f center;
|
||||
Vec3f newCenter;
|
||||
EnHorseLinkChild* this = (EnHorseLinkChild*)thisx;
|
||||
|
@ -588,7 +588,7 @@ void func_80A6ABF8(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
|||
center.x = this->headCollider.elements[i].dim.modelSphere.center.x;
|
||||
center.y = this->headCollider.elements[i].dim.modelSphere.center.y;
|
||||
center.z = this->headCollider.elements[i].dim.modelSphere.center.z;
|
||||
func_800A6408(skin, this->headCollider.elements[i].dim.limb, ¢er, &newCenter);
|
||||
Skin_GetLimbPos(skin, this->headCollider.elements[i].dim.limb, ¢er, &newCenter);
|
||||
this->headCollider.elements[i].dim.worldSphere.center.x = newCenter.x;
|
||||
this->headCollider.elements[i].dim.worldSphere.center.y = newCenter.y;
|
||||
this->headCollider.elements[i].dim.worldSphere.center.z = newCenter.z;
|
||||
|
@ -600,7 +600,7 @@ void func_80A6ABF8(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
|||
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->headCollider.base);
|
||||
}
|
||||
|
||||
s32 func_80A6AD84(Actor* thisx, GlobalContext* globalCtx, s32 arg2, PSkinAwb* arg3) {
|
||||
s32 EnHorseLinkChild_OverrideLimbDraw(Actor* thisx, GlobalContext* globalCtx, s32 arg2, Skin* skin) {
|
||||
EnHorseLinkChild* this = (EnHorseLinkChild*)thisx;
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_horse_link_child.c", 1467);
|
||||
|
@ -620,5 +620,6 @@ void EnHorseLinkChild_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
EnHorseLinkChild* this = (EnHorseLinkChild*)thisx;
|
||||
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
func_800A6360(&this->actor, globalCtx, &this->skin, func_80A6ABF8, func_80A6AD84, 1);
|
||||
func_800A6360(&this->actor, globalCtx, &this->skin, EnHorseLinkChild_PostDraw, EnHorseLinkChild_OverrideLimbDraw,
|
||||
true);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ typedef struct EnHorseLinkChild {
|
|||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ s32 action;
|
||||
/* 0x0150 */ s32 animationIdx;
|
||||
/* 0x0154 */ PSkinAwb skin;
|
||||
/* 0x0154 */ Skin skin;
|
||||
/* 0x01E4 */ s32 timer;
|
||||
/* 0x01E8 */ s32 unk_1E8;
|
||||
/* 0x01EC */ u8 eyeTexIndex;
|
||||
|
|
|
@ -226,7 +226,7 @@ void EnHorseNormal_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
return;
|
||||
}
|
||||
this->actor.home.rot.z = this->actor.world.rot.z = this->actor.shape.rot.z = 0;
|
||||
func_800A663C(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
|
||||
if ((this->actor.world.pos.x == -730.0f && this->actor.world.pos.y == 0.0f &&
|
||||
this->actor.world.pos.z == -1100.0f) ||
|
||||
|
@ -240,7 +240,7 @@ void EnHorseNormal_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
} else {
|
||||
func_800A663C(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
|
||||
func_80A6C6B0(this);
|
||||
return;
|
||||
|
@ -248,15 +248,15 @@ void EnHorseNormal_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
} else if (globalCtx->sceneNum == SCENE_SPOT12) {
|
||||
if (this->actor.world.pos.x == 3707.0f && this->actor.world.pos.y == 1413.0f &&
|
||||
this->actor.world.pos.z == -665.0f) {
|
||||
func_800A663C(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
|
||||
func_80A6C4CC(this);
|
||||
return;
|
||||
}
|
||||
func_800A663C(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
|
||||
} else {
|
||||
func_800A663C(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
|
||||
}
|
||||
if ((this->actor.params & 0xF0) == 0x10 && (this->actor.params & 0xF) != 0xF) {
|
||||
|
@ -269,7 +269,7 @@ void EnHorseNormal_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
void EnHorseNormal_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnHorseNormal* this = (EnHorseNormal*)thisx;
|
||||
|
||||
func_800A6888(globalCtx, &this->skin);
|
||||
Skin_Free(globalCtx, &this->skin);
|
||||
Collider_DestroyCylinder(globalCtx, &this->bodyCollider);
|
||||
Collider_DestroyCylinder(globalCtx, &this->cloneCollider);
|
||||
Collider_DestroyJntSph(globalCtx, &this->headCollider);
|
||||
|
@ -587,7 +587,7 @@ void EnHorseNormal_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_80A6CAFC(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
||||
void EnHorseNormal_PostDraw(Actor* thisx, GlobalContext* globalCtx, Skin* skin) {
|
||||
Vec3f sp4C;
|
||||
Vec3f sp40;
|
||||
EnHorseNormal* this = (EnHorseNormal*)thisx;
|
||||
|
@ -597,7 +597,7 @@ void func_80A6CAFC(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
|||
sp4C.x = this->headCollider.elements[i].dim.modelSphere.center.x;
|
||||
sp4C.y = this->headCollider.elements[i].dim.modelSphere.center.y;
|
||||
sp4C.z = this->headCollider.elements[i].dim.modelSphere.center.z;
|
||||
func_800A6408(skin, this->headCollider.elements[i].dim.limb, &sp4C, &sp40);
|
||||
Skin_GetLimbPos(skin, this->headCollider.elements[i].dim.limb, &sp4C, &sp40);
|
||||
this->headCollider.elements[i].dim.worldSphere.center.x = sp40.x;
|
||||
this->headCollider.elements[i].dim.worldSphere.center.y = sp40.y;
|
||||
this->headCollider.elements[i].dim.worldSphere.center.z = sp40.z;
|
||||
|
@ -642,7 +642,7 @@ void EnHorseNormal_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
func_80A6C8E0(this, globalCtx);
|
||||
}
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, func_80A6CAFC, 1);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, EnHorseNormal_PostDraw, true);
|
||||
|
||||
if (this->action == HORSE_WAIT_CLONE) {
|
||||
MtxF skinMtx;
|
||||
|
@ -692,7 +692,8 @@ void EnHorseNormal_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
}
|
||||
gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPMatrix(POLY_OPA_DISP++, mtx1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
func_800A63CC(&this->actor, globalCtx, &this->skin, NULL, NULL, 1, 0, 3);
|
||||
func_800A63CC(&this->actor, globalCtx, &this->skin, NULL, NULL, true, 0,
|
||||
SKIN_DRAW_FLAG_CUSTOM_TRANSFORMS | SKIN_DRAW_FLAG_CUSTOM_MATRIX);
|
||||
this->cloneCollider.dim.pos.x = clonePos.x;
|
||||
this->cloneCollider.dim.pos.y = clonePos.y;
|
||||
this->cloneCollider.dim.pos.z = clonePos.z;
|
||||
|
|
|
@ -12,7 +12,7 @@ typedef struct EnHorseNormal {
|
|||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ s32 action;
|
||||
/* 0x0150 */ s32 animationIdx;
|
||||
/* 0x0154 */ PSkinAwb skin;
|
||||
/* 0x0154 */ Skin skin;
|
||||
/* 0x01E4 */ u16 unk_1E4;
|
||||
/* 0x01E8 */ Vec3f unk_1E8;
|
||||
/* 0x01F4 */ Vec3f unk_1F4;
|
||||
|
|
|
@ -157,7 +157,7 @@ void EnHorseZelda_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
this->actor.focus.pos = this->actor.world.pos;
|
||||
this->action = 0;
|
||||
this->actor.focus.pos.y += 70.0f;
|
||||
func_800A663C(globalCtx, &this->skin, &gHorseZeldaSkel, &gHorseZeldaGallopingAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gHorseZeldaSkel, &gHorseZeldaGallopingAnim);
|
||||
this->animationIndex = 0;
|
||||
Animation_PlayOnce(&this->skin.skelAnime, sAnimationHeaders[0]);
|
||||
Collider_InitCylinder(globalCtx, &this->colliderCylinder);
|
||||
|
@ -174,7 +174,7 @@ void EnHorseZelda_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|||
|
||||
Collider_DestroyCylinder(globalCtx, &this->colliderCylinder);
|
||||
Collider_DestroyJntSph(globalCtx, &this->colliderSphere);
|
||||
func_800A6888(globalCtx, &this->skin);
|
||||
Skin_Free(globalCtx, &this->skin);
|
||||
}
|
||||
|
||||
void func_80A6DC7C(EnHorseZelda* this) {
|
||||
|
@ -240,7 +240,7 @@ void EnHorseZelda_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->colliderCylinder.base);
|
||||
}
|
||||
|
||||
void func_80A6DFD4(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
||||
void EnHorseZelda_PostDraw(Actor* thisx, GlobalContext* globalCtx, Skin* skin) {
|
||||
Vec3f sp4C;
|
||||
Vec3f sp40;
|
||||
EnHorseZelda* this = (EnHorseZelda*)thisx;
|
||||
|
@ -251,7 +251,7 @@ void func_80A6DFD4(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
|||
sp4C.y = this->colliderSphere.elements[i].dim.modelSphere.center.y;
|
||||
sp4C.z = this->colliderSphere.elements[i].dim.modelSphere.center.z;
|
||||
|
||||
func_800A6408(skin, this->colliderSphere.elements[i].dim.limb, &sp4C, &sp40);
|
||||
Skin_GetLimbPos(skin, this->colliderSphere.elements[i].dim.limb, &sp4C, &sp40);
|
||||
|
||||
this->colliderSphere.elements[i].dim.worldSphere.center.x = sp40.x;
|
||||
this->colliderSphere.elements[i].dim.worldSphere.center.y = sp40.y;
|
||||
|
@ -270,5 +270,5 @@ void EnHorseZelda_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
|
||||
func_80A6DE38(this, globalCtx);
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, func_80A6DFD4, 1);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, EnHorseZelda_PostDraw, true);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ typedef struct EnHorseZelda {
|
|||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ s32 action;
|
||||
/* 0x0150 */ s32 animationIndex;
|
||||
/* 0x0154 */ PSkinAwb skin;
|
||||
/* 0x0154 */ Skin skin;
|
||||
/* 0x01E4 */ char unk_1E4[0x8];
|
||||
/* 0x01EC */ s32 unk_1EC;
|
||||
/* 0x01F0 */ char unk_1F0[0x4];
|
||||
|
|
|
@ -108,7 +108,7 @@ void EnViewer_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
void EnViewer_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnViewer* this = (EnViewer*)thisx;
|
||||
|
||||
func_800A6888(globalCtx, &this->skin);
|
||||
Skin_Free(globalCtx, &this->skin);
|
||||
}
|
||||
|
||||
void EnViewer_InitAnimGanondorfOrZelda(EnViewer* this, GlobalContext* globalCtx, void* skeletonHeaderSeg,
|
||||
|
@ -140,7 +140,7 @@ void EnViewer_InitAnimImpa(EnViewer* this, GlobalContext* globalCtx, void* skele
|
|||
void EnViewer_InitAnimHorse(EnViewer* this, GlobalContext* globalCtx, void* skeletonHeaderSeg, AnimationHeader* anim) {
|
||||
u8 type;
|
||||
|
||||
func_800A663C(globalCtx, &this->skin, skeletonHeaderSeg, anim);
|
||||
Skin_Init(globalCtx, &this->skin, skeletonHeaderSeg, anim);
|
||||
type = this->actor.params >> 8;
|
||||
if (!(type == ENVIEWER_TYPE_3_GANONDORF || type == ENVIEWER_TYPE_4_HORSE_GANONDORF ||
|
||||
type == ENVIEWER_TYPE_7_GANONDORF || type == ENVIEWER_TYPE_8_GANONDORF ||
|
||||
|
@ -576,7 +576,7 @@ void EnViewer_DrawGanondorf(EnViewer* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
void EnViewer_DrawHorse(EnViewer* this, GlobalContext* globalCtx) {
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, NULL, 1);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, NULL, true);
|
||||
}
|
||||
|
||||
s32 EnViewer_ZeldaOverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
|
|
|
@ -60,7 +60,7 @@ typedef struct {
|
|||
|
||||
typedef struct EnViewer {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ PSkinAwb skin;
|
||||
/* 0x014C */ Skin skin;
|
||||
/* 0x01DC */ s8 animObjBankIndex;
|
||||
/* 0x01DD */ u8 drawFuncIndex;
|
||||
/* 0x01E0 */ EnViewerActionFunc actionFunc;
|
||||
|
|
|
@ -45,8 +45,6 @@ void EnfHG_Damage(EnfHG* this, GlobalContext* globalCtx);
|
|||
void EnfHG_Retreat(EnfHG* this, GlobalContext* globalCtx);
|
||||
void EnfHG_Done(EnfHG* this, GlobalContext* globalCtx);
|
||||
|
||||
void EnfHG_Noop(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin);
|
||||
|
||||
const ActorInit En_fHG_InitVars = {
|
||||
ACTOR_EN_FHG,
|
||||
ACTORCAT_BG,
|
||||
|
@ -82,7 +80,7 @@ void EnfHG_Init(Actor* thisx, GlobalContext* globalCtx2) {
|
|||
this->actor.speedXZ = 0.0f;
|
||||
this->actor.focus.pos = this->actor.world.pos;
|
||||
this->actor.focus.pos.y += 70.0f;
|
||||
func_800A663C(globalCtx, &this->skin, &gPhantomHorseSkel, &gPhantomHorseRunningAnim);
|
||||
Skin_Init(globalCtx, &this->skin, &gPhantomHorseSkel, &gPhantomHorseRunningAnim);
|
||||
|
||||
if (this->actor.params >= GND_FAKE_BOSS) {
|
||||
EnfHG_SetupApproach(this, globalCtx, this->actor.params - GND_FAKE_BOSS);
|
||||
|
@ -96,7 +94,7 @@ void EnfHG_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|||
EnfHG* this = (EnfHG*)thisx;
|
||||
|
||||
osSyncPrintf("F DT1\n");
|
||||
func_800A6888(globalCtx, &this->skin);
|
||||
Skin_Free(globalCtx, &this->skin);
|
||||
osSyncPrintf("F DT2\n");
|
||||
}
|
||||
|
||||
|
@ -708,7 +706,7 @@ void EnfHG_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
this->actor.shape.rot.z = (s16)(Math_SinS(this->hitTimer * 0x7000) * 1500.0f) * (this->hitTimer / 20.0f);
|
||||
}
|
||||
|
||||
void EnfHG_Noop(Actor* thisx, GlobalContext* globalCtx, PSkinAwb* skin) {
|
||||
void EnfHG_PostDraw(Actor* thisx, GlobalContext* globalCtx, Skin* skin) {
|
||||
}
|
||||
|
||||
void EnfHG_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
|
@ -724,7 +722,7 @@ void EnfHG_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
: Gfx_SetFog(POLY_OPA_DISP, (u32)this->warpColorFilterR, (u32)this->warpColorFilterG,
|
||||
(u32)this->warpColorFilterB, 0, (s32)this->warpColorFilterUnk1 + 995,
|
||||
(s32)this->warpColorFilterUnk2 + 1000);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, EnfHG_Noop, 0x23);
|
||||
func_800A6330(&this->actor, globalCtx, &this->skin, EnfHG_PostDraw, SKIN_TRANSFORM_IS_FHG);
|
||||
POLY_OPA_DISP = Gameplay_SetFog(globalCtx, POLY_OPA_DISP);
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_fhg.c", 2480);
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ typedef struct EnfHG {
|
|||
/* 0x01F8 */ f32 warpColorFilterUnk2;
|
||||
/* 0x01FC */ EnfHGActionFunc actionFunc;
|
||||
/* 0x0200 */ char unk_200[4];
|
||||
/* 0x0204 */ PSkinAwb skin;
|
||||
/* 0x0204 */ Skin skin;
|
||||
} EnfHG; // size = 0x0294
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue