Document object_aob (Mamamu Yan's object) (#749)

This commit is contained in:
Tom Overton
2022-03-29 11:06:19 -07:00
committed by GitHub
parent 72265fac92
commit 941f3e6949
4 changed files with 94 additions and 81 deletions
+1 -1
View File
@@ -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 },
+25 -25
View File
@@ -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;