1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-11 09:20:17 +00:00

Assets: Move limb enums into xmls 2 (#2626)

This commit is contained in:
Dragorn421 2025-06-12 23:23:47 +02:00 committed by GitHub
parent 1df6a3ee12
commit e4e14a6bcf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 133 additions and 216 deletions

View file

@ -92,7 +92,7 @@ void EnFu_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(play, &this->skelanime, &gWindmillManSkel, &gWindmillManPlayStillAnim, this->jointTable,
this->morphTable, FU_LIMB_MAX);
this->morphTable, WINDMILL_MAN_LIMB_MAX);
Animation_PlayLoop(&this->skelanime, &gWindmillManPlayStillAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@ -276,15 +276,15 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
EnFu* this = (EnFu*)thisx;
s32 pad;
if (limbIndex == FU_LIMB_UNK) {
if (limbIndex == WINDMILL_MAN_LIMB_UNK) {
return false;
}
switch (limbIndex) {
case FU_LIMB_HEAD:
case WINDMILL_MAN_LIMB_HEAD:
rot->x += this->lookAngleOffset.y;
rot->z += this->lookAngleOffset.x;
break;
case FU_LIMB_CHEST_MUSIC_BOX:
case WINDMILL_MAN_LIMB_CHEST_MUSIC_BOX:
break;
}
@ -292,7 +292,7 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
return false;
}
if (limbIndex == FU_LIMB_CHEST_MUSIC_BOX) {
if (limbIndex == WINDMILL_MAN_LIMB_CHEST_MUSIC_BOX) {
rot->y += Math_SinS((play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Y))) * FIDGET_AMPLITUDE;
rot->z += Math_CosS((play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Z))) * FIDGET_AMPLITUDE;
}
@ -302,7 +302,7 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
void EnFu_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
EnFu* this = (EnFu*)thisx;
if (limbIndex == FU_LIMB_HEAD) {
if (limbIndex == WINDMILL_MAN_LIMB_HEAD) {
Matrix_MultVec3f(&sMtxSrc, &this->actor.focus.pos);
}
}

View file

@ -4,36 +4,18 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_fu/object_fu.h"
struct EnFu;
typedef void (*EnFuActionFunc)(struct EnFu*, struct PlayState*);
typedef enum EnFuLimb {
/* 0x00 */ FU_LIMB_ROOT,
/* 0x01 */ FU_LIMB_TORSO,
/* 0x02 */ FU_LIMB_LEFT_THIGH,
/* 0x03 */ FU_LIMB_LEFT_LEG,
/* 0x04 */ FU_LIMB_LEFT_FOOT,
/* 0x05 */ FU_LIMB_RIGHT_THIGH,
/* 0x06 */ FU_LIMB_RIGHT_LEG,
/* 0x07 */ FU_LIMB_RIGHT_FOOT,
/* 0x08 */ FU_LIMB_CHEST_MUSIC_BOX,
/* 0x09 */ FU_LIMB_LEFT_ARM_MUSIC_BOX,
/* 0x0A */ FU_LIMB_UNK,
/* 0x0B */ FU_LIMB_RIGHT_SHOULDER,
/* 0x0C */ FU_LIMB_RIGHT_ARM,
/* 0x0D */ FU_LIMB_RIGHT_HAND_AND_CRANK,
/* 0x0E */ FU_LIMB_HEAD,
/* 0x0F */ FU_LIMB_HORN,
/* 0x10 */ FU_LIMB_MAX
} EnFuLimb;
typedef struct EnFu {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelanime;
/* 0x01DC */ Vec3s jointTable[FU_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[FU_LIMB_MAX];
/* 0x01DC */ Vec3s jointTable[WINDMILL_MAN_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[WINDMILL_MAN_LIMB_MAX];
/* 0x029C */ Vec3s lookAngleOffset; // offset applied to neck rotation to look at link when he is close
/* 0x02A2 */ Vec3s unk_2A2;
/* 0x02A8 */ u16 behaviorFlags;

View file

@ -107,7 +107,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoWhiteSkel, &gGerudoWhiteIdleAnim, this->jointTable,
this->morphTable, GE1_LIMB_MAX);
this->morphTable, GERUDO_WHITE_LIMB_MAX);
Animation_PlayOnce(&this->skelAnime, &gGerudoWhiteIdleAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@ -780,7 +780,7 @@ s32 EnGe1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
s32 pad;
EnGe1* this = (EnGe1*)thisx;
if (limbIndex == GE1_LIMB_HEAD) {
if (limbIndex == GERUDO_WHITE_LIMB_HEAD) {
rot->x += this->headRot.y;
rot->z += this->headRot.x;
}
@ -792,7 +792,8 @@ s32 EnGe1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
// The purpose of the state flag GE1_STATE_STOP_FIDGET is to skip this code, which this actor has in lieu of an idle
// animation.
if ((limbIndex == GE1_LIMB_TORSO) || (limbIndex == GE1_LIMB_L_FOREARM) || (limbIndex == GE1_LIMB_R_FOREARM)) {
if ((limbIndex == GERUDO_WHITE_LIMB_TORSO) || (limbIndex == GERUDO_WHITE_LIMB_L_FOREARM) ||
(limbIndex == GERUDO_WHITE_LIMB_R_FOREARM)) {
rot->y += Math_SinS(play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Y)) * FIDGET_AMPLITUDE;
rot->z += Math_CosS(play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Z)) * FIDGET_AMPLITUDE;
}
@ -804,7 +805,7 @@ void EnGe1_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
OPEN_DISPS(play->state.gfxCtx, "../z_en_ge1.c", 1419);
if (limbIndex == GE1_LIMB_HEAD) {
if (limbIndex == GERUDO_WHITE_LIMB_HEAD) {
gSPDisplayList(POLY_OPA_DISP++, sHairstyleDLists[this->hairstyle]);
Matrix_MultVec3f(&D_80A327A8, &this->actor.focus.pos);
}

View file

@ -4,6 +4,8 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_ge1/object_ge1.h"
struct EnGe1;
typedef void (*EnGe1AnimFunc)(struct EnGe1*);
@ -18,32 +20,12 @@ typedef enum EnGe1Type {
/* 0x46 */ GE1_TYPE_TRAINING_GROUNDS_GUARD
} EnGe1Type;
typedef enum EnGe1Limb {
/* 00 */ GE1_LIMB_NONE,
/* 01 */ GE1_LIMB_WAIST,
/* 02 */ GE1_LIMB_L_THIGH,
/* 03 */ GE1_LIMB_L_LOWER_LEG,
/* 04 */ GE1_LIMB_L_FOOT,
/* 05 */ GE1_LIMB_R_THIGH,
/* 06 */ GE1_LIMB_R_LOWER_LEG,
/* 07 */ GE1_LIMB_R_FOOT,
/* 08 */ GE1_LIMB_TORSO,
/* 09 */ GE1_LIMB_L_UPPER_ARM,
/* 10 */ GE1_LIMB_L_FOREARM,
/* 11 */ GE1_LIMB_L_HAND,
/* 12 */ GE1_LIMB_R_UPPER_ARM,
/* 13 */ GE1_LIMB_R_FOREARM,
/* 14 */ GE1_LIMB_R_HAND,
/* 15 */ GE1_LIMB_HEAD,
/* 16 */ GE1_LIMB_MAX
} EnGe1Limb;
typedef struct EnGe1 {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelAnime;
/* 0x01DC */ Vec3s jointTable[GE1_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[GE1_LIMB_MAX];
/* 0x01DC */ Vec3s jointTable[GERUDO_WHITE_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[GERUDO_WHITE_LIMB_MAX];
/* 0x029C */ Vec3s headRot;
/* 0x02A2 */ Vec3s unk_2A2;
/* 0x02A8 */ s16 eyeIndex;

View file

@ -81,7 +81,7 @@ void EnGe3_Init(Actor* thisx, PlayState* play2) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoRedSkel, NULL, this->jointTable, this->morphTable,
GELDB_LIMB_MAX);
GERUDO_RED_LIMB_MAX);
Animation_PlayLoop(&this->skelAnime, &gGerudoRedStandAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@ -241,13 +241,13 @@ s32 EnGe3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
switch (limbIndex) {
// Hide swords and veil from object_geldb
case GELDB_LIMB_VEIL:
case GELDB_LIMB_R_SWORD:
case GELDB_LIMB_L_SWORD:
case GERUDO_RED_LIMB_VEIL:
case GERUDO_RED_LIMB_R_SWORD:
case GERUDO_RED_LIMB_L_SWORD:
*dList = NULL;
return false;
// Turn head
case GELDB_LIMB_HEAD:
case GERUDO_RED_LIMB_HEAD:
rot->x += this->headRot.y;
#if OOT_VERSION >= PAL_1_1
FALLTHROUGH;
@ -256,14 +256,14 @@ s32 EnGe3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
// depending on what was drawn earlier in the frame.
OPEN_DISPS(play->state.gfxCtx, "../z_en_ge3.c", 547);
switch (limbIndex) {
case GELDB_LIMB_NECK:
case GERUDO_RED_LIMB_NECK:
break;
case GELDB_LIMB_HEAD:
case GERUDO_RED_LIMB_HEAD:
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 80, 60, 10, 255);
break;
case GELDB_LIMB_R_SWORD:
case GELDB_LIMB_L_SWORD:
case GERUDO_RED_LIMB_R_SWORD:
case GERUDO_RED_LIMB_L_SWORD:
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 140, 170, 230, 255);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
@ -284,7 +284,7 @@ void EnGe3_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
EnGe3* this = (EnGe3*)thisx;
Vec3f D_80A351C8 = { 600.0f, 700.0f, 0.0f };
if (limbIndex == GELDB_LIMB_HEAD) {
if (limbIndex == GERUDO_RED_LIMB_HEAD) {
Matrix_MultVec3f(&D_80A351C8, &this->actor.focus.pos);
}
}

View file

@ -3,7 +3,8 @@
#include "ultra64.h"
#include "actor.h"
#include "overlays/actors/ovl_En_GeldB/z_en_geldb.h"
#include "assets/objects/object_geldb/object_geldb.h"
struct EnGe3;
@ -13,8 +14,8 @@ typedef struct EnGe3 {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelAnime;
/* 0x01DC */ Vec3s jointTable[GELDB_LIMB_MAX];
/* 0x026C */ Vec3s morphTable[GELDB_LIMB_MAX];
/* 0x01DC */ Vec3s jointTable[GERUDO_RED_LIMB_MAX];
/* 0x026C */ Vec3s morphTable[GERUDO_RED_LIMB_MAX];
/* 0x02FC */ s16 eyeIndex;
/* 0x02FE */ s16 blinkTimer;
/* 0x0300 */ Vec3s headRot;

View file

@ -251,7 +251,7 @@ void EnGeldB_Init(Actor* thisx, PlayState* play) {
this->blinkState = 0;
this->unkFloat = 10.0f;
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoRedSkel, &gGerudoRedNeutralAnim, this->jointTable,
this->morphTable, GELDB_LIMB_MAX);
this->morphTable, GERUDO_RED_LIMB_MAX);
Collider_InitCylinder(play, &this->bodyCollider);
Collider_SetCylinder(play, &this->bodyCollider, thisx, &sBodyCylinderInit);
Collider_InitTris(play, &this->blockCollider);
@ -1464,14 +1464,14 @@ s32 EnGeldB_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
EnGeldB* this = (EnGeldB*)thisx;
OPEN_DISPS(play->state.gfxCtx, "../z_en_geldB.c", 2507);
if (limbIndex == GELDB_LIMB_NECK) {
if (limbIndex == GERUDO_RED_LIMB_NECK) {
rot->z += this->headRot.x;
rot->x += this->headRot.y;
rot->y += this->headRot.z;
} else if (limbIndex == GELDB_LIMB_HEAD) {
} else if (limbIndex == GERUDO_RED_LIMB_HEAD) {
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 80, 60, 10, 255);
} else if ((limbIndex == GELDB_LIMB_R_SWORD) || (limbIndex == GELDB_LIMB_L_SWORD)) {
} else if ((limbIndex == GERUDO_RED_LIMB_R_SWORD) || (limbIndex == GERUDO_RED_LIMB_L_SWORD)) {
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 140, 170, 230, 255);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
@ -1497,7 +1497,7 @@ void EnGeldB_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
EnGeldB* this = (EnGeldB*)thisx;
s32 bodyPart = -1;
if (limbIndex == GELDB_LIMB_R_SWORD) {
if (limbIndex == GERUDO_RED_LIMB_R_SWORD) {
Matrix_MultVec3f(&swordQuadOffset1, &this->swordCollider.dim.quad[1]);
Matrix_MultVec3f(&swordQuadOffset0, &this->swordCollider.dim.quad[0]);
Matrix_MultVec3f(&swordQuadOffset3, &this->swordCollider.dim.quad[3]);
@ -1515,42 +1515,43 @@ void EnGeldB_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
EffectBlure_AddVertex(Effect_GetByIndex(this->blureIndex), &swordTip, &swordHilt);
}
} else {
Actor_SetFeetPos(&this->actor, limbIndex, GELDB_LIMB_L_FOOT, &footOffset, GELDB_LIMB_R_FOOT, &footOffset);
Actor_SetFeetPos(&this->actor, limbIndex, GERUDO_RED_LIMB_L_FOOT, &footOffset, GERUDO_RED_LIMB_R_FOOT,
&footOffset);
}
if (limbIndex == GELDB_LIMB_L_FOOT) {
if (limbIndex == GERUDO_RED_LIMB_L_FOOT) {
Matrix_MultVec3f(&footOffset, &this->leftFootPos);
} else if (limbIndex == GELDB_LIMB_R_FOOT) {
} else if (limbIndex == GERUDO_RED_LIMB_R_FOOT) {
Matrix_MultVec3f(&footOffset, &this->rightFootPos);
}
if (this->iceTimer != 0) {
switch (limbIndex) {
case GELDB_LIMB_NECK:
case GERUDO_RED_LIMB_NECK:
bodyPart = 0;
break;
case GELDB_LIMB_L_SWORD:
case GERUDO_RED_LIMB_L_SWORD:
bodyPart = 1;
break;
case GELDB_LIMB_R_SWORD:
case GERUDO_RED_LIMB_R_SWORD:
bodyPart = 2;
break;
case GELDB_LIMB_L_UPPER_ARM:
case GERUDO_RED_LIMB_L_UPPER_ARM:
bodyPart = 3;
break;
case GELDB_LIMB_R_UPPER_ARM:
case GERUDO_RED_LIMB_R_UPPER_ARM:
bodyPart = 4;
break;
case GELDB_LIMB_TORSO:
case GERUDO_RED_LIMB_TORSO:
bodyPart = 5;
break;
case GELDB_LIMB_WAIST:
case GERUDO_RED_LIMB_WAIST:
bodyPart = 6;
break;
case GELDB_LIMB_L_FOOT:
case GERUDO_RED_LIMB_L_FOOT:
bodyPart = 7;
break;
case GELDB_LIMB_R_FOOT:
case GERUDO_RED_LIMB_R_FOOT:
bodyPart = 8;
break;
default:

View file

@ -4,35 +4,9 @@
#include "ultra64.h"
#include "actor.h"
struct EnGeldB;
#include "assets/objects/object_geldb/object_geldb.h"
typedef enum EnGeldBLimb {
/* 0x00 */ GELDB_LIMB_NONE,
/* 0x01 */ GELDB_LIMB_ROOT,
/* 0x02 */ GELDB_LIMB_TORSO,
/* 0x03 */ GELDB_LIMB_NECK,
/* 0x04 */ GELDB_LIMB_PONYTAIL,
/* 0x05 */ GELDB_LIMB_VEIL,
/* 0x06 */ GELDB_LIMB_HEAD,
/* 0x07 */ GELDB_LIMB_R_UPPER_ARM,
/* 0x08 */ GELDB_LIMB_R_FOREARM,
/* 0x09 */ GELDB_LIMB_R_WRIST,
/* 0x0A */ GELDB_LIMB_R_HAND,
/* 0x0B */ GELDB_LIMB_R_SWORD,
/* 0x0C */ GELDB_LIMB_L_UPPER_ARM,
/* 0x0D */ GELDB_LIMB_L_FOREARM,
/* 0x0E */ GELDB_LIMB_L_WRIST,
/* 0x0F */ GELDB_LIMB_L_HAND,
/* 0x10 */ GELDB_LIMB_L_SWORD,
/* 0x11 */ GELDB_LIMB_L_THIGH,
/* 0x12 */ GELDB_LIMB_L_SHIN,
/* 0x13 */ GELDB_LIMB_L_FOOT,
/* 0x14 */ GELDB_LIMB_R_THIGH,
/* 0x15 */ GELDB_LIMB_R_SHIN,
/* 0x16 */ GELDB_LIMB_R_FOOT,
/* 0x17 */ GELDB_LIMB_WAIST,
/* 0x18 */ GELDB_LIMB_MAX
} EnGeldBLimb;
struct EnGeldB;
typedef void (*EnGeldBActionFunc)(struct EnGeldB*, struct PlayState*);
@ -40,8 +14,8 @@ typedef struct EnGeldB {
/* 0x0000 */ Actor actor;
/* 0x014C */ Vec3s bodyPartsPos[10];
/* 0x0188 */ SkelAnime skelAnime;
/* 0x01CC */ Vec3s jointTable[GELDB_LIMB_MAX];
/* 0x025C */ Vec3s morphTable[GELDB_LIMB_MAX];
/* 0x01CC */ Vec3s jointTable[GERUDO_RED_LIMB_MAX];
/* 0x025C */ Vec3s morphTable[GERUDO_RED_LIMB_MAX];
/* 0x02EC */ s32 action;
/* 0x02F0 */ char unk_2F0[4];
/* 0x02F4 */ EnGeldBActionFunc actionFunc;

View file

@ -4,31 +4,7 @@
#include "ultra64.h"
#include "actor.h"
typedef enum EnHataLimb {
/* 0x00 */ FLAGPOLE_LIMB_NONE,
/* 0x01 */ FLAGPOLE_LIMB_POLE_BASE,
/* 0x02 */ FLAGPOLE_LIMB_POLE,
/* 0x03 */ FLAGPOLE_LIMB_FLAG_1_BASE,
/* 0x04 */ FLAGPOLE_LIMB_FLAG_1_HOIST_END_BASE,
/* 0x05 */ FLAGPOLE_LIMB_FLAG_1_HOIST_MID_BASE,
/* 0x06 */ FLAGPOLE_LIMB_FLAG_1_FLY_MID_BASE,
/* 0x07 */ FLAGPOLE_LIMB_FLAG_1_FLY_END_BASE,
/* 0x08 */ FLAGPOLE_LIMB_FLAG_1_FLY_END,
/* 0x09 */ FLAGPOLE_LIMB_FLAG_1_FLY_MID,
/* 0x0A */ FLAGPOLE_LIMB_FLAG_1_HOIST_MID,
/* 0x0B */ FLAGPOLE_LIMB_FLAG_1_HOIST_END,
/* 0x0C */ FLAGPOLE_LIMB_FLAG_2_BASE,
/* 0x0D */ FLAGPOLE_LIMB_FLAG_2_HOIST_END_BASE,
/* 0x0E */ FLAGPOLE_LIMB_FLAG_2_HOIST_MID_BASE,
/* 0x0F */ FLAGPOLE_LIMB_FLAG_2_FLY_MID_BASE,
/* 0x10 */ FLAGPOLE_LIMB_FLAG_2_FLY_END_BASE,
/* 0x11 */ FLAGPOLE_LIMB_FLAG_2_FLY_END,
/* 0x12 */ FLAGPOLE_LIMB_FLAG_2_FLY_MID,
/* 0x13 */ FLAGPOLE_LIMB_FLAG_2_HOIST_MID,
/* 0x14 */ FLAGPOLE_LIMB_FLAG_2_HOIST_END,
/* 0x15 */ FLAGPOLE_LIMB_MAX
} EnHataLimb;
#include "assets/objects/object_hata/object_hata.h"
typedef struct EnHata {
/* 0x0000 */ DynaPolyActor dyna;