mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-14 05:19:36 +00:00
EnIk_PostLimbDraw3
This commit is contained in:
parent
f7cd4e20e9
commit
aba53c4055
4 changed files with 93 additions and 5 deletions
|
@ -472,6 +472,7 @@ Actor* func_80032AF0(GlobalContext* globalCtx, ActorContext* actorCtx, Actor** a
|
||||||
Actor* Actor_Find(ActorContext* actorCtx, s32 actorId, s32 actorType);
|
Actor* Actor_Find(ActorContext* actorCtx, s32 actorId, s32 actorType);
|
||||||
void func_80032C7C(GlobalContext* globalCtx, Actor* actor);
|
void func_80032C7C(GlobalContext* globalCtx, Actor* actor);
|
||||||
void func_80032E24(struct_80032E24* arg0, s32 arg1, GlobalContext* globalCtx);
|
void func_80032E24(struct_80032E24* arg0, s32 arg1, GlobalContext* globalCtx);
|
||||||
|
void func_80032F54(struct_80032E24* arg0, s32 arg1, s32 arg2, s32 arg3, u32 arg4, Gfx** dList, s16 arg6);
|
||||||
s32 func_8003305C(Actor* actor, struct_80032E24* arg1, GlobalContext* globalCtx, s16 params);
|
s32 func_8003305C(Actor* actor, struct_80032E24* arg1, GlobalContext* globalCtx, s16 params);
|
||||||
void func_80033260(GlobalContext* globalCtx, Actor* actor, Vec3f* arg2, f32 arg3, s32 arg4, f32 arg5, s16 arg6,
|
void func_80033260(GlobalContext* globalCtx, Actor* actor, Vec3f* arg2, f32 arg3, s32 arg4, f32 arg5, s16 arg6,
|
||||||
s16 arg7, u8 arg8);
|
s16 arg7, u8 arg8);
|
||||||
|
|
|
@ -3075,12 +3075,12 @@ void func_80032E24(struct_80032E24* arg0, s32 arg1, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80032F54(struct_80032E24* arg0, s32 arg1, s32 arg2, s32 arg3, u32 arg4, s32* arg5, s16 arg6) {
|
void func_80032F54(struct_80032E24* arg0, s32 arg1, s32 arg2, s32 arg3, u32 arg4, Gfx** dList, s16 arg6) {
|
||||||
GlobalContext* globalCtx = Effect_GetGlobalCtx();
|
GlobalContext* globalCtx = Effect_GetGlobalCtx();
|
||||||
|
|
||||||
if ((globalCtx->actorCtx.unk_00 == 0) && (arg0->unk_10 > 0)) {
|
if ((globalCtx->actorCtx.unk_00 == 0) && (arg0->unk_10 > 0)) {
|
||||||
if ((arg1 >= arg2) && (arg3 >= arg1) && (*arg5 != 0)) {
|
if ((arg1 >= arg2) && (arg3 >= arg1) && (*dList != 0)) {
|
||||||
arg0->unk_0C[arg0->unk_10] = *arg5;
|
arg0->unk_0C[arg0->unk_10] = *dList;
|
||||||
Matrix_Get(&arg0->unk_00[arg0->unk_10]);
|
Matrix_Get(&arg0->unk_00[arg0->unk_10]);
|
||||||
arg0->unk_04[arg0->unk_10] = arg6;
|
arg0->unk_04[arg0->unk_10] = arg6;
|
||||||
arg0->unk_10++;
|
arg0->unk_10++;
|
||||||
|
|
|
@ -69,8 +69,14 @@ extern AnimationHeader D_0600C114;
|
||||||
extern AnimationHeader D_0600CD70;
|
extern AnimationHeader D_0600CD70;
|
||||||
extern AnimationHeader D_0600DD50;
|
extern AnimationHeader D_0600DD50;
|
||||||
extern AnimationHeader D_0600ED24;
|
extern AnimationHeader D_0600ED24;
|
||||||
|
extern Gfx D_06016BE0[];
|
||||||
|
extern Gfx D_06016CD8[];
|
||||||
|
extern Gfx D_06016D88[];
|
||||||
|
extern Gfx D_06016EE8[];
|
||||||
|
extern Gfx D_06016F88[];
|
||||||
extern Gfx D_06018E78[];
|
extern Gfx D_06018E78[];
|
||||||
extern Gfx D_06019100[];
|
extern Gfx D_06019100[];
|
||||||
|
extern Gfx D_06019E08[];
|
||||||
extern SkeletonHeader D_0601E178;
|
extern SkeletonHeader D_0601E178;
|
||||||
extern AnimationHeader D_060203D8;
|
extern AnimationHeader D_060203D8;
|
||||||
extern SkeletonHeader D_060205C0;
|
extern SkeletonHeader D_060205C0;
|
||||||
|
@ -836,8 +842,83 @@ s32 EnIk_OverrideLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnIk_PostLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor);
|
void EnIk_PostLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor) {
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/EnIk_PostLimbDraw3.s")
|
Vec3f spF4;
|
||||||
|
Vec3f spE8;
|
||||||
|
EnIk* this = (EnIk*)actor;
|
||||||
|
|
||||||
|
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_ik_inFight.c", 0x4B1);
|
||||||
|
|
||||||
|
if (this->unk_2FB & 1) {
|
||||||
|
func_80032F54(&this->unk_308, limbIndex, 0x1A, 0x1B, 0x1C, dList, -1);
|
||||||
|
}
|
||||||
|
if (limbIndex == 0xC) {
|
||||||
|
gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_ik_inFight.c", 0x4C1),
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
if (this->actor.params != 0) {
|
||||||
|
gSPDisplayList(oGfxCtx->polyXlu.p++, D_06019E08);
|
||||||
|
} else {
|
||||||
|
gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016D88);
|
||||||
|
}
|
||||||
|
} else if (limbIndex == 0x11) {
|
||||||
|
s32 i;
|
||||||
|
Vec3f sp9C[3];
|
||||||
|
Vec3f sp78[3];
|
||||||
|
|
||||||
|
Matrix_MultVec3f(&D_80A7847C, &this->unk_36C.dim.quad[1]);
|
||||||
|
Matrix_MultVec3f(&D_80A78488, &this->unk_36C.dim.quad[0]);
|
||||||
|
Matrix_MultVec3f(&D_80A78494, &this->unk_36C.dim.quad[3]);
|
||||||
|
Matrix_MultVec3f(&D_80A784A0, &this->unk_36C.dim.quad[2]);
|
||||||
|
func_80062734(&this->unk_36C, &this->unk_36C.dim.quad[0], &this->unk_36C.dim.quad[1],
|
||||||
|
&this->unk_36C.dim.quad[2], &this->unk_36C.dim.quad[3]);
|
||||||
|
Matrix_MultVec3f(&D_80A7847C, &spF4);
|
||||||
|
Matrix_MultVec3f(&D_80A78488, &spE8);
|
||||||
|
if (this->unk_2FE > 0) {
|
||||||
|
EffectBlure_AddVertex(Effect_GetByIndex(this->blureIdx), &spF4, &spE8);
|
||||||
|
} else if (this->unk_2FE == 0) {
|
||||||
|
EffectBlure_AddSpace(Effect_GetByIndex(this->blureIdx));
|
||||||
|
this->unk_2FE = -1;
|
||||||
|
}
|
||||||
|
if (this->unk_2F8 == 9) {
|
||||||
|
for (i = 0; i < ARRAY_COUNT(sp78); i++) {
|
||||||
|
Matrix_MultVec3f(&D_80A784AC[i], &sp9C[i]);
|
||||||
|
Matrix_MultVec3f(&D_80A784D0[i], &sp78[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
func_800627A0(&this->unk_3EC, 0, &sp9C[0], &sp9C[1], &sp9C[2]);
|
||||||
|
func_800627A0(&this->unk_3EC, 1, &sp78[0], &sp78[1], &sp78[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (limbIndex) {
|
||||||
|
case 0x16:
|
||||||
|
gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_ik_inFight.c", 0x4F6),
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016F88);
|
||||||
|
break;
|
||||||
|
case 0x18:
|
||||||
|
gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_ik_inFight.c", 0x4FB),
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016EE8);
|
||||||
|
break;
|
||||||
|
case 0x1A:
|
||||||
|
if (!(this->unk_2FA & 1)) {
|
||||||
|
gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_ik_inFight.c", 0x501),
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016BE0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0x1B:
|
||||||
|
if (!(this->unk_2FA & 1)) {
|
||||||
|
gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_ik_inFight.c", 0x508),
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016CD8);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_ik_inFight.c", 0x50E);
|
||||||
|
}
|
||||||
|
|
||||||
void func_80A76798(Actor* thisx, GlobalContext* globalCtx) {
|
void func_80A76798(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
EnIk* this = THIS;
|
EnIk* this = THIS;
|
||||||
|
|
|
@ -1185,8 +1185,14 @@ D_0600C114 = 0x0600C114;
|
||||||
D_0600CD70 = 0x0600CD70;
|
D_0600CD70 = 0x0600CD70;
|
||||||
D_0600DD50 = 0x0600DD50;
|
D_0600DD50 = 0x0600DD50;
|
||||||
D_0600ED24 = 0x0600ED24;
|
D_0600ED24 = 0x0600ED24;
|
||||||
|
D_06016BE0 = 0x06016BE0;
|
||||||
|
D_06016CD8 = 0x06016CD8;
|
||||||
|
D_06016D88 = 0x06016D88;
|
||||||
|
D_06016EE8 = 0x06016EE8;
|
||||||
|
D_06016F88 = 0x06016F88;
|
||||||
D_06018E78 = 0x06018E78;
|
D_06018E78 = 0x06018E78;
|
||||||
D_06019100 = 0x06019100;
|
D_06019100 = 0x06019100;
|
||||||
|
D_06019E08 = 0x06019E08;
|
||||||
D_0601E178 = 0x0601E178;
|
D_0601E178 = 0x0601E178;
|
||||||
D_060203D8 = 0x060203D8;
|
D_060203D8 = 0x060203D8;
|
||||||
D_060205C0 = 0x060205C0;
|
D_060205C0 = 0x060205C0;
|
||||||
|
|
Loading…
Reference in a new issue