1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-10 08:50:23 +00:00

Assets: Move limb enums into xmls 3 (#2630)

This commit is contained in:
Dragorn421 2025-06-15 19:55:11 +02:00 committed by GitHub
parent 2054637cab
commit d3ed137878
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 154 additions and 293 deletions

View file

@ -992,24 +992,24 @@ s32 EnIn_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
EnIn* this = (EnIn*)thisx;
Vec3s limbRot;
if (this->actor.params > 0 && limbIndex != INGO_HEAD_LIMB) {
if (this->actor.params > 0 && limbIndex != INGO_LIMB_HEAD) {
if (sAdultEraDLs[limbIndex] != NULL) {
*dList = sAdultEraDLs[limbIndex];
}
}
if (limbIndex == INGO_HEAD_LIMB) {
if (limbIndex == INGO_LIMB_HEAD) {
Matrix_Translate(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
limbRot = this->interactInfo.headRot;
Matrix_RotateZ(BINANG_TO_RAD_ALT(limbRot.x), MTXMODE_APPLY);
Matrix_RotateX(BINANG_TO_RAD_ALT(limbRot.y), MTXMODE_APPLY);
Matrix_Translate(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
}
if (limbIndex == INGO_CHEST_LIMB) {
if (limbIndex == INGO_LIMB_CHEST) {
limbRot = this->interactInfo.torsoRot;
Matrix_RotateX(BINANG_TO_RAD_ALT(limbRot.x), MTXMODE_APPLY);
Matrix_RotateY(BINANG_TO_RAD_ALT(limbRot.y), MTXMODE_APPLY);
}
if (limbIndex == INGO_CHEST_LIMB || limbIndex == INGO_LEFT_SHOULDER_LIMB || limbIndex == INGO_RIGHT_SHOULDER_LIMB) {
if (limbIndex == INGO_LIMB_CHEST || limbIndex == INGO_LIMB_LEFT_SHOULDER || limbIndex == INGO_LIMB_RIGHT_SHOULDER) {
rot->y += Math_SinS(this->unk_330[limbIndex].y) * 200.0f;
rot->z += Math_CosS(this->unk_330[limbIndex].z) * 200.0f;
}
@ -1022,14 +1022,14 @@ void EnIn_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
OPEN_DISPS(play->state.gfxCtx, "../z_en_in.c", 2335);
if (limbIndex == INGO_HEAD_LIMB) {
if (limbIndex == INGO_LIMB_HEAD) {
Matrix_MultVec3f(&D_80A7B9A8, &this->actor.focus.pos);
this->actor.focus.rot = this->actor.world.rot;
}
if (limbIndex == INGO_LEFT_HAND_LIMB && this->skelAnime.animation == &object_in_Anim_014CA8) {
if (limbIndex == INGO_LIMB_LEFT_HAND && this->skelAnime.animation == &object_in_Anim_014CA8) {
gSPDisplayList(POLY_OPA_DISP++, gIngoChildEraBasketDL);
}
if (limbIndex == INGO_RIGHT_HAND_LIMB && this->skelAnime.animation == &object_in_Anim_014CA8) {
if (limbIndex == INGO_LIMB_RIGHT_HAND && this->skelAnime.animation == &object_in_Anim_014CA8) {
gSPDisplayList(POLY_OPA_DISP++, gIngoChildEraPitchForkDL);
}

View file

@ -3,35 +3,12 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_in/object_in.h"
struct EnIn;
typedef void (*EnInActionFunc)(struct EnIn*, struct PlayState*);
typedef enum IngoLimb {
/* 0x00 */ INGO_LIMB_NONE,
/* 0x01 */ INGO_LIMB_ROOT,
/* 0x02 */ INGO_LEFT_THIGH_LIMB,
/* 0x03 */ INGO_LEFT_LEG_LIMB,
/* 0x04 */ INGO_LEFT_FOOT_LIMB,
/* 0x05 */ INGO_RIGHT_THIGH_LIMB,
/* 0x06 */ INGO_RIGHT_LEG_LIMB,
/* 0x07 */ INGO_RIGHT_FOOT_LIMB,
/* 0x08 */ INGO_TORSO_LIMB,
/* 0x09 */ INGO_CHEST_LIMB,
/* 0x0A */ INGO_LEFT_SHOULDER_LIMB,
/* 0x0B */ INGO_LEFT_ARM_LIMB,
/* 0x0C */ INGO_LEFT_HAND_LIMB,
/* 0x0D */ INGO_RIGHT_SHOULDER_LIMB,
/* 0x0E */ INGO_RIGHT_ARM_LIMB,
/* 0x0F */ INGO_RIGHT_HAND_LIMB,
/* 0x10 */ INGO_HEAD_LIMB,
/* 0x11 */ INGO_LEFT_EYEBROW_LIMB,
/* 0x12 */ INGO_RIGHTEYEBROW_LIMB,
/* 0x13 */ INGO_MUSTACHE_LIMB,
/* 0x14 */ INGO_LIMB_MAX
} IngoLimb;
typedef struct EnIn {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;

View file

@ -159,7 +159,7 @@ void EnTa_Init(Actor* thisx, PlayState* play2) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gTalonSkel, &gTalonStandAnim, this->jointTable, this->morphTable,
ENTA_LIMB_MAX);
TALON_LIMB_MAX);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@ -1280,12 +1280,12 @@ s32 EnTa_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
// Turn head and chest towards the target (the rotation steps are calculated in EnTa_Update)
switch (limbIndex) {
case ENTA_LIMB_CHEST:
case TALON_LIMB_CHEST:
rot->x += this->torsoRot.y;
rot->y -= this->torsoRot.x;
break;
case ENTA_LIMB_HEAD:
case TALON_LIMB_HEAD:
rot->x += this->headRot.y;
rot->z += this->headRot.x;
break;
@ -1300,8 +1300,8 @@ s32 EnTa_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
// in the else if branch below and rocking always occurs.
// So this flag has no effect.
this->stateFlags &= ~TALON_STATE_FLAG_SUPPRESS_ROCKING_ANIM;
} else if ((limbIndex == ENTA_LIMB_CHEST) || (limbIndex == ENTA_LIMB_LEFT_ARM) ||
(limbIndex == ENTA_LIMB_RIGHT_ARM)) {
} else if ((limbIndex == TALON_LIMB_CHEST) || (limbIndex == TALON_LIMB_LEFT_ARM) ||
(limbIndex == TALON_LIMB_RIGHT_ARM)) {
s32 fidgetFrequency = limbIndex * FIDGET_FREQ_LIMB;
rot->y += Math_SinS(play->state.frames * (fidgetFrequency + FIDGET_FREQ_Y)) * FIDGET_AMPLITUDE;
@ -1315,7 +1315,7 @@ void EnTa_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
static Vec3f headOffset = { 1100.0f, 1000.0f, 0.0f };
EnTa* this = (EnTa*)thisx;
if (limbIndex == ENTA_LIMB_HEAD) {
if (limbIndex == TALON_LIMB_HEAD) {
Matrix_MultVec3f(&headOffset, &this->actor.focus.pos);
}
}

View file

@ -3,6 +3,7 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_ta/object_ta.h"
struct EnTa;
@ -16,32 +17,11 @@ typedef enum EnTaType {
/* 0x0002 */ ENTA_RETURNED_FROM_KAKARIKO
} EnTaType;
typedef enum EnTaLimb {
/* 0x00 */ ENTA_LIMB_NONE,
/* 0x01 */ ENTA_LIMB_ROOT,
/* 0x02 */ ENTA_LIMB_LEFT_THIGH,
/* 0x03 */ ENTA_LIMB_LEFT_LEG,
/* 0x04 */ ENTA_LIMB_LEFT_FOOT,
/* 0x05 */ ENTA_LIMB_RIGHT_THIGH,
/* 0x06 */ ENTA_LIMB_RIGHT_LEG,
/* 0x07 */ ENTA_LIMB_RIGHT_FOOT,
/* 0x08 */ ENTA_LIMB_CHEST,
/* 0x09 */ ENTA_LIMB_LEFT_SHOULDER,
/* 0x0A */ ENTA_LIMB_LEFT_ARM,
/* 0x0B */ ENTA_LIMB_LEFT_HAND,
/* 0x0C */ ENTA_LIMB_RIGHT_SHOULDER,
/* 0x0D */ ENTA_LIMB_RIGHT_ARM,
/* 0x0E */ ENTA_LIMB_RIGHT_HAND,
/* 0x0F */ ENTA_LIMB_HEAD,
/* 0x10 */ ENTA_LIMB_TORSO,
/* 0x11 */ ENTA_LIMB_MAX
} EnTaLimb;
typedef struct EnTa {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
/* 0x0190 */ Vec3s jointTable[ENTA_LIMB_MAX];
/* 0x01F6 */ Vec3s morphTable[ENTA_LIMB_MAX];
/* 0x0190 */ Vec3s jointTable[TALON_LIMB_MAX];
/* 0x01F6 */ Vec3s morphTable[TALON_LIMB_MAX];
/* 0x025C */ EnTaActionFunc actionFunc;
/* 0x0260 */ EnTaAnimFunc animFunc;
/* 0x0264 */ ColliderCylinder collider;

View file

@ -3,76 +3,12 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_sk2/object_sk2.h"
struct EnTest;
typedef void (*EnTestActionFunc)(struct EnTest*, struct PlayState*);
typedef enum StalfosLimb {
/* 0x00 */ STALFOS_LIMB_NONE,
/* 0x01 */ STALFOS_LIMB_ROOT,
/* 0x02 */ STALFOS_LIMB_UPPERBODY_ROOT,
/* 0x03 */ STALFOS_LIMB_CORE_LOWER_ROOT,
/* 0x04 */ STALFOS_LIMB_CORE_UPPER_ROOT,
/* 0x05 */ STALFOS_LIMB_NECK_ROOT,
/* 0x06 */ STALFOS_LIMB_HEAD_ROOT,
/* 0x07 */ STALFOS_LIMB_7,
/* 0x08 */ STALFOS_LIMB_8,
/* 0x09 */ STALFOS_LIMB_JAW_ROOT,
/* 0x0A */ STALFOS_LIMB_JAW,
/* 0x0B */ STALFOS_LIMB_HEAD,
/* 0x0C */ STALFOS_LIMB_NECK_UPPER,
/* 0x0D */ STALFOS_LIMB_NECK_LOWER,
/* 0x0E */ STALFOS_LIMB_CORE_UPPER,
/* 0x0F */ STALFOS_LIMB_CHEST,
/* 0x10 */ STALFOS_LIMB_SHOULDER_R_ROOT,
/* 0x11 */ STALFOS_LIMB_SHOULDER_ARMOR_R_ROOT,
/* 0x12 */ STALFOS_LIMB_SHOULDER_ARMOR_R,
/* 0x13 */ STALFOS_LIMB_SHOULDER_L_ROOT,
/* 0x14 */ STALFOS_LIMB_SHOULDER_ARMOR_L_ROOT,
/* 0x15 */ STALFOS_LIMB_SHOULDER_ARMOR_L,
/* 0x16 */ STALFOS_LIMB_ARM_L_ROOT,
/* 0x17 */ STALFOS_LIMB_UPPERARM_L_ROOT,
/* 0x18 */ STALFOS_LIMB_FOREARM_L_ROOT,
/* 0x19 */ STALFOS_LIMB_HAND_L_ROOT,
/* 0x1A */ STALFOS_LIMB_HAND_L,
/* 0x1B */ STALFOS_LIMB_SHIELD,
/* 0x1C */ STALFOS_LIMB_FOREARM_L,
/* 0x1D */ STALFOS_LIMB_UPPERARM_L,
/* 0x1E */ STALFOS_LIMB_ARM_R_ROOT,
/* 0x1F */ STALFOS_LIMB_UPPERARM_R_ROOT,
/* 0x20 */ STALFOS_LIMB_FOREARM_R_ROOT,
/* 0x21 */ STALFOS_LIMB_HAND_R_ROOT,
/* 0x22 */ STALFOS_LIMB_SWORD,
/* 0x23 */ STALFOS_LIMB_HAND_R,
/* 0x24 */ STALFOS_LIMB_FOREARM_R,
/* 0x25 */ STALFOS_LIMB_UPPERARM_R,
/* 0x26 */ STALFOS_LIMB_CORE_LOWER,
/* 0x27 */ STALFOS_LIMB_LOWERBODY_ROOT,
/* 0x28 */ STALFOS_LIMB_WAIST_ROOT,
/* 0x29 */ STALFOS_LIMB_LEGS_ROOT,
/* 0x2A */ STALFOS_LIMB_LEG_L_ROOT,
/* 0x2B */ STALFOS_LIMB_THIGH_L_ROOT,
/* 0x2C */ STALFOS_LIMB_LOWERLEG_L_ROOT,
/* 0x2D */ STALFOS_LIMB_ANKLE_L_ROOT,
/* 0x2E */ STALFOS_LIMB_ANKLE_L,
/* 0x2F */ STALFOS_LIMB_FOOT_L_ROOT,
/* 0x30 */ STALFOS_LIMB_FOOT_L,
/* 0x31 */ STALFOS_LIMB_LOWERLEG_L,
/* 0x32 */ STALFOS_LIMB_THIGH_L,
/* 0x33 */ STALFOS_LIMB_LEG_R_ROOT,
/* 0x34 */ STALFOS_LIMB_THIGH_R_ROOT,
/* 0x35 */ STALFOS_LIMB_LOWERLEG_R_ROOT,
/* 0x36 */ STALFOS_LIMB_ANKLE_R_ROOT,
/* 0x37 */ STALFOS_LIMB_ANKLE_R,
/* 0x38 */ STALFOS_LIMB_FOOT_R_ROOT,
/* 0x39 */ STALFOS_LIMB_FOOT_R,
/* 0x3A */ STALFOS_LIMB_LOWERLEG_R,
/* 0x3B */ STALFOS_LIMB_THIGH_R,
/* 0x3C */ STALFOS_LIMB_WAIST,
/* 0x3D */ STALFOS_LIMB_MAX
} StalfosLimb;
typedef struct EnTest {
/* 0x000 */ Actor actor;
/* 0x14C */ Vec3s bodyPartsPos[10];

View file

@ -156,7 +156,7 @@ void EnVali_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 27.0f);
this->actor.shape.shadowAlpha = 155;
SkelAnime_Init(play, &this->skelAnime, &gBariSkel, &gBariLurkingAnim, this->jointTable, this->morphTable,
EN_VALI_LIMB_MAX);
VALI_LIMB_MAX);
Collider_InitQuad(play, &this->leftArmCollider);
Collider_SetQuad(play, &this->leftArmCollider, &this->actor, &sQuadInit);
@ -689,14 +689,14 @@ s32 EnVali_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
EnVali* this = (EnVali*)thisx;
f32 curFrame;
if ((limbIndex == EN_VALI_LIMB_NUCLEUS) || (limbIndex == EN_VALI_LIMB_OUTER_HOOD) ||
(limbIndex == EN_VALI_LIMB_INNER_HOOD)) {
if ((limbIndex == VALI_LIMB_NUCLEUS) || (limbIndex == VALI_LIMB_OUTER_HOOD) ||
(limbIndex == VALI_LIMB_INNER_HOOD)) {
*dList = NULL;
return false;
} else {
curFrame = this->skelAnime.curFrame;
if ((limbIndex == EN_VALI_LIMB_LEFT_ARM_BASE) || (limbIndex == EN_VALI_LIMB_RIGHT_ARM_BASE)) {
if ((limbIndex == VALI_LIMB_LEFT_ARM_BASE) || (limbIndex == VALI_LIMB_RIGHT_ARM_BASE)) {
if (EnVali_SetArmLength(this, curFrame)) {
Matrix_Scale(this->armScale, 1.0f, 1.0f, MTXMODE_APPLY);
}
@ -714,11 +714,11 @@ void EnVali_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot
EnVali* this = (EnVali*)thisx;
if (this->actionFunc == EnVali_FloatIdle) {
if ((limbIndex == EN_VALI_LIMB_LEFT_FOREARM_BASE) || (limbIndex == EN_VALI_LIMB_RIGHT_FOREARM_BASE)) {
if ((limbIndex == VALI_LIMB_LEFT_FOREARM_BASE) || (limbIndex == VALI_LIMB_RIGHT_FOREARM_BASE)) {
Matrix_MultVec3f(&D_80B28970, &sp3C);
Matrix_MultVec3f(&D_80B2897C, &sp30);
if (limbIndex == EN_VALI_LIMB_LEFT_FOREARM_BASE) {
if (limbIndex == VALI_LIMB_LEFT_FOREARM_BASE) {
Collider_SetQuadVertices(&this->leftArmCollider, &sp30, &sp3C, &this->leftArmCollider.dim.quad[0],
&this->leftArmCollider.dim.quad[1]);
} else {

View file

@ -3,44 +3,12 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_vali/object_vali.h"
struct EnVali;
typedef void (*EnValiActionFunc)(struct EnVali*, struct PlayState*);
typedef enum EnValiLimb {
/* 0x00 */ EN_VALI_LIMB_NONE,
/* 0x01 */ EN_VALI_LIMB_NUCLEUS_BASE,
/* 0x02 */ EN_VALI_LIMB_NUCLEUS,
/* 0x03 */ EN_VALI_LIMB_RIGHT_MANDIBLE_BASE_BASE,
/* 0x04 */ EN_VALI_LIMB_RIGHT_MANDIBLE_BASE,
/* 0x05 */ EN_VALI_LIMB_RIGHT_MANDIBLE,
/* 0x06 */ EN_VALI_LIMB_LEFT_MANDIBLE_BASE_BASE,
/* 0x07 */ EN_VALI_LIMB_LEFT_MANDIBLE_BASE,
/* 0x08 */ EN_VALI_LIMB_LEFT_MANDIBLE,
/* 0x09 */ EN_VALI_LIMB_LEFT_ARM_BASE,
/* 0x0A */ EN_VALI_LIMB_LEFT_UPPER_ARM_BASE,
/* 0x0B */ EN_VALI_LIMB_LEFT_FOREARM_BASE,
/* 0x0C */ EN_VALI_LIMB_LEFT_CLAW_BODY_BASE,
/* 0x0D */ EN_VALI_LIMB_LEFT_CLAW_TIP_BASE,
/* 0x0E */ EN_VALI_LIMB_LEFT_CLAW_TIP,
/* 0x0F */ EN_VALI_LIMB_LEFT_CLAW_BODY,
/* 0x10 */ EN_VALI_LIMB_LEFT_FOREARM,
/* 0x11 */ EN_VALI_LIMB_LEFT_UPPER_ARM,
/* 0x12 */ EN_VALI_LIMB_RIGHT_ARM_BASE,
/* 0x13 */ EN_VALI_LIMB_RIGHT_UPPER_ARM_BASE,
/* 0x14 */ EN_VALI_LIMB_RIGHT_FOREARM_BASE,
/* 0x15 */ EN_VALI_LIMB_RIGHT_CLAW_BODY_BASE,
/* 0x16 */ EN_VALI_LIMB_RIGHT_CLAW_TIP_BASE,
/* 0x17 */ EN_VALI_LIMB_RIGHT_CLAW_TIP,
/* 0x18 */ EN_VALI_LIMB_RIGHT_CLAW_BODY,
/* 0x19 */ EN_VALI_LIMB_RIGHT_FOREARM,
/* 0x1A */ EN_VALI_LIMB_RIGHT_UPPER_ARM,
/* 0x1B */ EN_VALI_LIMB_INNER_HOOD,
/* 0x1C */ EN_VALI_LIMB_OUTER_HOOD,
/* 0x1D */ EN_VALI_LIMB_MAX
} EnValiLimb;
typedef struct EnVali {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
@ -48,8 +16,8 @@ typedef struct EnVali {
/* 0x0194 */ u8 lightningTimer;
/* 0x0195 */ u8 slingshotReactionTimer;
/* 0x0196 */ s16 timer;
/* 0x0198 */ Vec3s jointTable[EN_VALI_LIMB_MAX];
/* 0x0246 */ Vec3s morphTable[EN_VALI_LIMB_MAX];
/* 0x0198 */ Vec3s jointTable[VALI_LIMB_MAX];
/* 0x0246 */ Vec3s morphTable[VALI_LIMB_MAX];
/* 0x02F4 */ f32 armScale;
/* 0x02F8 */ f32 floatHomeHeight; // Used as a centre for floating when visible (home is used for the lurk height)
/* 0x02FC */ ColliderQuad leftArmCollider;