mirror of
https://github.com/zeldaret/mm.git
synced 2026-08-18 13:13:22 -04:00
document object_zov (lulu the zora vocalist) (#1357)
* initial commit of object_zov documentation * morphFrames and mouth name change * sAnimations array name instead of sAnimationInfo * forgor format * separate categories
This commit is contained in:
@@ -138,7 +138,7 @@ static AnimationHeader* sAnimations[] = {
|
||||
&gEvanLeanOnKeyboardAnim, // EN_ZOS_ANIM_LEAN_ON_KEYBOARD
|
||||
&gEvanLeanOnKeyboardAndSighAnim, // EN_ZOS_ANIM_LEAN_ON_KEYBOARD_AND_SIGH
|
||||
&gEvanHandsOnHipsAnim, // EN_ZOS_ANIM_HANDS_ON_HIPS
|
||||
&gEeanTalkFootTapAnim, // EN_ZOS_ANIM_TALK_FOOT_TAP
|
||||
&gEvanTalkFootTapAnim, // EN_ZOS_ANIM_TALK_FOOT_TAP
|
||||
&gEvanTalkLookDownAnim, // EN_ZOS_ANIM_TALK_LOOK_DOWN
|
||||
&gEvanTalkArmsOutAnim, // EN_ZOS_ANIM_TALK_ARMS_OUT
|
||||
&gEvanTalkHandsOnHipsAnim, // EN_ZOS_ANIM_TALK_HANDS_ON_HIPS
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*/
|
||||
|
||||
#include "z_en_zov.h"
|
||||
#include "objects/object_zov/object_zov.h"
|
||||
#include "overlays/actors/ovl_En_Elf/z_en_elf.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
||||
@@ -60,20 +59,20 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
{ 20, 40, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
static AnimationHeader* D_80BD270C[] = {
|
||||
&object_zov_Anim_00D3EC, &object_zov_Anim_008120, &object_zov_Anim_00B4CC, &object_zov_Anim_00A888,
|
||||
&object_zov_Anim_00C510, &object_zov_Anim_00CAA8, &object_zov_Anim_008120, &object_zov_Anim_00A888,
|
||||
&object_zov_Anim_002B5C, &object_zov_Anim_00418C, &object_zov_Anim_005A6C, &object_zov_Anim_0066A4,
|
||||
&object_zov_Anim_0017D4, &object_zov_Anim_0023F4,
|
||||
static AnimationHeader* sAnimations[] = {
|
||||
&gLuluLookDownAnim, &gLuluPutHandsDownAnim, &gLuluLookForwardAndDownAnim, &gLuluLookAroundAnim,
|
||||
&gLuluAngleHeadAnim, &gLuluNodAnim, &gLuluPutHandsDownAnim, &gLuluLookAroundAnim,
|
||||
&gLuluSingStartAnim, &gLuluSingLoopAnim, &gLuluLookForwardAndLeftAnim, &gLuluLookLeftLoopAnim,
|
||||
&gLuluTurnAndWalkAnim, &gLuluWalkLoopAnim,
|
||||
};
|
||||
|
||||
static Vec3f D_80BD2744 = { 400.0f, 600.0f, 0.0f };
|
||||
|
||||
static Vec3f D_80BD2750 = { 400.0f, 600.0f, 0.0f };
|
||||
|
||||
static TexturePtr D_80BD275C[] = { object_zov_Tex_013C38, object_zov_Tex_015138, object_zov_Tex_014138 };
|
||||
static TexturePtr sEyeTextures[] = { gLuluEyeOpenTex, gLuluEyeHalfTex, gLuluEyeClosedTex };
|
||||
|
||||
static TexturePtr D_80BD2768[] = { object_zov_Tex_0135F8, object_zov_Tex_014538 };
|
||||
static TexturePtr sMouthTextures[] = { gLuluMouthClosedTex, gLuluMouthOpenTex };
|
||||
|
||||
static s8 D_80BD2770[] = {
|
||||
1, 2, 1, 0, 0, 1, 2, 1,
|
||||
@@ -86,9 +85,9 @@ void EnZov_Init(Actor* thisx, PlayState* play) {
|
||||
this->picto.actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
Actor_SetScale(&this->picto.actor, 0.01f);
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->picto.actor, &sCylinderInit);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_zov_Skel_016258, &object_zov_Anim_00D3EC, this->jontTable,
|
||||
this->morphTable, 23);
|
||||
Animation_PlayLoop(&this->skelAnime, &object_zov_Anim_00D3EC);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gLuluSkel, &gLuluLookDownAnim, this->jointTable, this->morphTable,
|
||||
LULU_LIMB_MAX);
|
||||
Animation_PlayLoop(&this->skelAnime, &gLuluLookDownAnim);
|
||||
|
||||
this->unk_320 = 0;
|
||||
this->csIdIndex = -1;
|
||||
@@ -147,10 +146,10 @@ void func_80BD1440(EnZov* this, s16 arg1) {
|
||||
this->csIdIndex = arg1;
|
||||
}
|
||||
|
||||
void func_80BD1470(EnZov* this, s16 index, u8 mode, f32 transitionRate) {
|
||||
void func_80BD1470(EnZov* this, s16 index, u8 mode, f32 morphFrames) {
|
||||
f32 frame;
|
||||
|
||||
if (((index != this->unk_322) || (mode != ANIMMODE_LOOP)) && (index >= 0) && (index < ARRAY_COUNT(D_80BD270C))) {
|
||||
if (((index != this->unk_322) || (mode != ANIMMODE_LOOP)) && (index >= 0) && (index < ARRAY_COUNT(sAnimations))) {
|
||||
switch (index) {
|
||||
case 6:
|
||||
frame = 30.0f;
|
||||
@@ -164,8 +163,8 @@ void func_80BD1470(EnZov* this, s16 index, u8 mode, f32 transitionRate) {
|
||||
frame = 0.0f;
|
||||
break;
|
||||
}
|
||||
Animation_Change(&this->skelAnime, D_80BD270C[index], 1.0f, frame, Animation_GetLastFrame(D_80BD270C[index]),
|
||||
mode, transitionRate);
|
||||
Animation_Change(&this->skelAnime, sAnimations[index], 1.0f, frame, Animation_GetLastFrame(sAnimations[index]),
|
||||
mode, morphFrames);
|
||||
this->unk_322 = index;
|
||||
}
|
||||
}
|
||||
@@ -521,14 +520,14 @@ void EnZov_Update(Actor* thisx, PlayState* play) {
|
||||
s32 EnZov_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnZov* this = THIS;
|
||||
|
||||
if (limbIndex == 12) {
|
||||
if (limbIndex == LULU_LIMB_HEAD) {
|
||||
rot->x += this->unk_2F0.y;
|
||||
if ((this->unk_320 & 0x10) && (this->unk_322 == 0)) {
|
||||
rot->z += this->unk_2F0.x;
|
||||
}
|
||||
}
|
||||
|
||||
if (limbIndex == 11) {
|
||||
if (limbIndex == LULU_LIMB_TORSO) {
|
||||
rot->x += this->unk_2F6.y;
|
||||
}
|
||||
return false;
|
||||
@@ -537,17 +536,17 @@ s32 EnZov_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||
void EnZov_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
EnZov* this = THIS;
|
||||
|
||||
if (limbIndex == 12) {
|
||||
if (limbIndex == LULU_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&D_80BD2744, &this->picto.actor.focus.pos);
|
||||
Math_Vec3f_Copy(&this->unk_2FC, &this->picto.actor.focus.pos);
|
||||
this->unk_2FC.y += 10.0f;
|
||||
}
|
||||
|
||||
if (limbIndex == 18) {
|
||||
if (limbIndex == LULU_LIMB_RIGHT_UPPER_ARM) {
|
||||
Matrix_MultVec3f(&D_80BD2750, &this->unk_308);
|
||||
}
|
||||
|
||||
if (limbIndex == 13) {
|
||||
if (limbIndex == LULU_LIMB_LEFT_UPPER_ARM) {
|
||||
Matrix_MultVec3f(&D_80BD2750, &this->unk_314);
|
||||
}
|
||||
}
|
||||
@@ -625,8 +624,8 @@ void EnZov_Draw(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
gfx = POLY_OPA_DISP;
|
||||
gSPSegment(&gfx[0], 0x09, Lib_SegmentedToVirtual(D_80BD275C[phi_v1]));
|
||||
gSPSegment(&gfx[1], 0x08, Lib_SegmentedToVirtual(D_80BD2768[phi_a1]));
|
||||
gSPSegment(&gfx[0], 0x09, Lib_SegmentedToVirtual(sEyeTextures[phi_v1]));
|
||||
gSPSegment(&gfx[1], 0x08, Lib_SegmentedToVirtual(sMouthTextures[phi_a1]));
|
||||
POLY_OPA_DISP = &gfx[2];
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
#include "z64snap.h"
|
||||
#include "objects/object_zov/object_zov.h"
|
||||
|
||||
struct EnZov;
|
||||
|
||||
@@ -16,8 +17,8 @@ typedef void (*EnZovActionFunc)(struct EnZov*, PlayState*);
|
||||
|
||||
typedef struct EnZov {
|
||||
/* 0x000 */ PictoActor picto;
|
||||
/* 0x148 */ Vec3s jontTable[23];
|
||||
/* 0x1D2 */ Vec3s morphTable[23];
|
||||
/* 0x148 */ Vec3s jointTable[LULU_LIMB_MAX];
|
||||
/* 0x1D2 */ Vec3s morphTable[LULU_LIMB_MAX];
|
||||
/* 0x25C */ SkelAnime skelAnime;
|
||||
/* 0x2A0 */ ColliderCylinder collider;
|
||||
/* 0x2EC */ s16 unk_2EC;
|
||||
|
||||
Reference in New Issue
Block a user