mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-28 15:17:23 -04:00
Document object_aob (Mamamu Yan's object) (#749)
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
#include "objects/object_os_anime/object_os_anime.h"
|
||||
|
||||
static AnimationInfoS sAnimations[] = {
|
||||
{ &object_aob_Anim_00007C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gMamamuYanUnusedIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_001494, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_001494, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "z_en_aob_01.h"
|
||||
#include "overlays/actors/ovl_En_Racedog/z_en_racedog.h"
|
||||
#include "overlays/actors/ovl_En_Dg/z_en_dg.h"
|
||||
#include "objects/object_aob/object_aob.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10)
|
||||
|
||||
@@ -46,12 +45,12 @@ const ActorInit En_Aob_01_InitVars = {
|
||||
};
|
||||
|
||||
static AnimationInfo D_809C3790[6] = {
|
||||
{ &object_aob_Anim_007758, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &object_aob_Anim_0068B4, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &object_aob_Anim_00700C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &object_aob_Anim_0058EC, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &object_aob_Anim_006040, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &object_aob_Anim_007758, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gMamamuYanIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gMamamuYanLaughStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gMamamuYanLaughLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gMamamuYanSurpriseStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gMamamuYanSurpriseLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gMamamuYanIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -6.0f },
|
||||
};
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
@@ -91,11 +90,11 @@ static EnAobStruct D_809C384C[] = {
|
||||
};
|
||||
|
||||
void func_809C10B0(EnAob01* this, s32 arg1) {
|
||||
if (DECR(this->unk_3F0) == 0) {
|
||||
this->unk_3EE++;
|
||||
if (this->unk_3EE >= arg1) {
|
||||
this->unk_3EE = 0;
|
||||
this->unk_3F0 = Rand_S16Offset(30, 30);
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
this->eyeIndex++;
|
||||
if (this->eyeIndex >= arg1) {
|
||||
this->eyeIndex = 0;
|
||||
this->blinkTimer = Rand_S16Offset(30, 30);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -925,8 +924,8 @@ void EnAob01_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnAob01* this = THIS;
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
|
||||
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_aob_Skel_000180, NULL, this->jointTable, this->morphTable,
|
||||
16);
|
||||
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gMamamuYanSkel, NULL, this->jointTable, this->morphTable,
|
||||
MAMAMU_YAN_LIMB_MAX);
|
||||
Collider_InitCylinder(globalCtx, &this->collider);
|
||||
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
|
||||
this->unk_43C = 0;
|
||||
@@ -982,35 +981,36 @@ void EnAob01_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
s32 EnAob01_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
Actor* thisx) {
|
||||
EnAob01* this = THIS;
|
||||
TexturePtr sp38[] = {
|
||||
object_aob_Tex_000658,
|
||||
object_aob_Tex_000E58,
|
||||
object_aob_Tex_001658,
|
||||
TexturePtr eyeTextures[] = {
|
||||
gMamamuYanEyeOpenTex,
|
||||
gMamamuYanEyeHalfTex,
|
||||
gMamamuYanEyeClosedTex,
|
||||
};
|
||||
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == MAMAMU_YAN_LIMB_HEAD) {
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx);
|
||||
|
||||
*dList = object_aob_DL_003D18;
|
||||
*dList = gMamamuYanHeadDL;
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x0A, Lib_SegmentedToVirtual(sp38[this->unk_3EE]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x0A, Lib_SegmentedToVirtual(eyeTextures[this->eyeIndex]));
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||
}
|
||||
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == MAMAMU_YAN_LIMB_HEAD) {
|
||||
Matrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||
Matrix_InsertXRotation_s(this->unk_2DA.y, MTXMODE_APPLY);
|
||||
Matrix_InsertZRotation_s(this->unk_2DA.x * -1, MTXMODE_APPLY);
|
||||
Matrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
if (limbIndex == 8) {
|
||||
if (limbIndex == MAMAMU_YAN_LIMB_TORSO) {
|
||||
Matrix_InsertXRotation_s(this->unk_2E0.y * -1, MTXMODE_APPLY);
|
||||
Matrix_InsertZRotation_s(this->unk_2E0.x * -1, MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
if ((limbIndex == 8) || (limbIndex == 9) || (limbIndex == 12)) {
|
||||
if ((limbIndex == MAMAMU_YAN_LIMB_TORSO) || (limbIndex == MAMAMU_YAN_LIMB_LEFT_UPPER_ARM) ||
|
||||
(limbIndex == MAMAMU_YAN_LIMB_RIGHT_UPPER_ARM)) {
|
||||
rot->y += (s16)Math_SinS(this->unk_2F8[limbIndex]) * 200;
|
||||
rot->z += (s16)Math_CosS(this->unk_318[limbIndex]) * 200;
|
||||
}
|
||||
@@ -1021,7 +1021,7 @@ void EnAob01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
|
||||
static Vec3f D_809C3968 = { 0.0f, 0.0f, 0.0f };
|
||||
EnAob01* this = THIS;
|
||||
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == MAMAMU_YAN_LIMB_HEAD) {
|
||||
Matrix_MultiplyVector3fByState(&D_809C3968, &this->actor.focus.pos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define Z_EN_AOB_01_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_aob/object_aob.h"
|
||||
|
||||
struct EnAob01;
|
||||
|
||||
@@ -17,8 +18,8 @@ typedef struct EnAob01 {
|
||||
/* 0x18C */ ColliderCylinder collider;
|
||||
/* 0x1D8 */ Path* unk_1D8[14];
|
||||
/* 0x210 */ u16 unk_210;
|
||||
/* 0x212 */ Vec3s jointTable[16];
|
||||
/* 0x272 */ Vec3s morphTable[16];
|
||||
/* 0x212 */ Vec3s jointTable[MAMAMU_YAN_LIMB_MAX];
|
||||
/* 0x272 */ Vec3s morphTable[MAMAMU_YAN_LIMB_MAX];
|
||||
/* 0x2D2 */ u16 unk_2D2;
|
||||
/* 0x2D4 */ Vec3s unk_2D4;
|
||||
/* 0x2DA */ Vec3s unk_2DA;
|
||||
@@ -26,11 +27,11 @@ typedef struct EnAob01 {
|
||||
/* 0x2E6 */ Vec3s unk_2E6;
|
||||
/* 0x2EC */ Vec3s unk_2EC;
|
||||
/* 0x2F2 */ Vec3s unk_2F2;
|
||||
/* 0x2F8 */ s16 unk_2F8[16];
|
||||
/* 0x318 */ s16 unk_318[16];
|
||||
/* 0x2F8 */ s16 unk_2F8[MAMAMU_YAN_LIMB_MAX];
|
||||
/* 0x318 */ s16 unk_318[MAMAMU_YAN_LIMB_MAX];
|
||||
/* 0x338 */ UNK_TYPE1 unk338[0xB6];
|
||||
/* 0x3EE */ s16 unk_3EE;
|
||||
/* 0x3F0 */ s16 unk_3F0;
|
||||
/* 0x3EE */ s16 eyeIndex;
|
||||
/* 0x3F0 */ s16 blinkTimer;
|
||||
/* 0x3F4 */ Actor* unk_3F4;
|
||||
/* 0x3F8 */ Actor* unk_3F8[14];
|
||||
/* 0x430 */ s16 unk_430;
|
||||
|
||||
Reference in New Issue
Block a user