set up most of player actor stuff

This commit is contained in:
TakaRikka
2023-09-10 17:47:40 -07:00
parent 0f3b98fdca
commit 2df2da338d
17 changed files with 2258 additions and 11 deletions
+9
View File
@@ -0,0 +1,9 @@
#ifndef JAZELAUDIO_JAIZELBASIC_H
#define JAZELAUDIO_JAIZELBASIC_H
class JAIZelAnime {
public:
/* 0x0 */ u8 field_0x0[0x98];
};
#endif /* JAZELAUDIO_JAIZELBASIC_H */
+2
View File
@@ -77,6 +77,8 @@ struct cCcD_SrcTriAttr {
class cCcD_TriAttr : public cCcD_ShapeAttr, public cM3dGTri {
public:
cCcD_TriAttr() {}
virtual void CalcAabBox();
virtual bool GetNVec(cXyz const&, cXyz*) const;
virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const;
+1
View File
@@ -20,6 +20,7 @@ public:
Vec mB;
Vec mC;
cM3dGTri() {}
cM3dGTri(const Vec *pA, const Vec *pB, const Vec *pC);
bool cross(const cM3dGCyl*, Vec*) const;
};
File diff suppressed because it is too large Load Diff
+208
View File
@@ -0,0 +1,208 @@
#ifndef D_BG_D_BG_S_ACCH_H
#define D_BG_D_BG_S_ACCH_H
#include "SSystem/SComponent/c_m3d_g_cir.h"
#include "SSystem/SComponent/c_m3d_g_cyl.h"
#include "SSystem/SComponent/c_m3d_g_lin.h"
#include "SSystem/SComponent/c_m3d_g_pla.h"
#include "d/d_bg_s_gnd_chk.h"
#include "d/d_bg_s_roof_chk.h"
#include "d/d_bg_s_wtr_chk.h"
#include "SSystem/SComponent/c_sxyz.h"
class fopAc_ac_c;
class dBgS_AcchCir : public cBgS_PolyInfo {
private:
/* 0x10 */ u32 m_flags;
/* 0x14 */ cM3dGCir m_cir;
/* 0x28 */ f32 m_wall_rr;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 m_wall_h;
/* 0x34 */ f32 m_wall_r;
/* 0x38 */ f32 m_wall_h_direct;
/* 0x3C */ s16 m_wall_angle_y;
public:
enum {
/* 0x2 */ WALL_HIT = 2,
/* 0x4 */ WALL_H_DIRECT = 4,
};
/* 80075EAC */ dBgS_AcchCir();
/* 80075F14 */ void ClrWallHit();
/* 80075F40 */ void SetWallR(f32);
/* 80075F48 */ void CalcWallRR();
/* 80075F58 */ void SetWall(f32, f32);
/* 80075F80 */ void SetWallHDirect(f32);
/* 80077414 */ virtual ~dBgS_AcchCir() {}
f32 GetWallH() { return m_wall_h; }
f32 GetWallR() { return m_wall_r; }
void SetWallH(f32 h) { m_wall_h = h; }
void ClrWallHDirect() { m_flags &= ~WALL_H_DIRECT; }
bool ChkWallHit() { return m_flags & WALL_HIT; }
void SetCir(cXyz& pos) { m_cir.Set(pos.x, pos.z, pos.y + GetWallH(), m_wall_r); }
}; // Size: 0x40
class dBgS;
class dBgS_Acch : public cBgS_Chk, public dBgS_Chk {
public:
enum {
/* 0x000002 */ GRND_NONE = (1 << 1),
/* 0x000004 */ WALL_NONE = (1 << 2),
/* 0x000008 */ ROOF_NONE = (1 << 3),
/* 0x000010 */ WALL_HIT = (1 << 4),
/* 0x000020 */ GROUND_HIT = (1 << 5),
/* 0x000040 */ GROUND_FIND = (1 << 6),
/* 0x000080 */ GROUND_LANDING = (1 << 7),
/* 0x000100 */ GROUND_AWAY = (1 << 8),
/* 0x000200 */ ROOF_HIT = (1 << 9),
/* 0x000400 */ WATER_NONE = (1 << 10),
/* 0x000800 */ WATER_HIT = (1 << 11),
/* 0x001000 */ WATER_IN = (1 << 12),
/* 0x002000 */ LINE_CHECK = (1 << 13),
/* 0x004000 */ LINE_CHECK_NONE = (1 << 14),
/* 0x008000 */ CLR_SPEED_Y = (1 << 15),
/* 0x010000 */ LINE_CHECK_HIT = (1 << 16),
/* 0x100000 */ MOVE_BG_ONLY = (1 << 20),
/* 0x200000 */ GND_THIN_CELLING_OFF = (1 << 21),
/* 0x400000 */ WALL_SORT = (1 << 22),
/* 0x800000 */ LINE_DOWN = (1 << 23),
};
/* 800760A0 */ dBgS_Acch();
/* 800761CC */ void Init();
/* 80076288 */ void Set(fopAc_ac_c*, int, dBgS_AcchCir*);
/* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*);
/* 800762D8 */ void GroundCheckInit(dBgS&);
/* 80076350 */ void GroundCheck(dBgS&);
/* 8007654C */ void GroundRoofProc(dBgS&);
/* 80076624 */ void LineCheck(dBgS&);
/* 80076AAC */ void CrrPos(dBgS&);
/* 80076F84 */ f32 GetWallAllR();
/* 80076FC0 */ void SetWallCir();
/* 8007703C */ void CalcWallBmdCyl();
/* 80077114 */ void SetGroundUpY(f32);
/* 80077128 */ f32 GetWallAllLowH();
/* 80077178 */ f32 GetWallAllLowH_R();
/* 800771E4 */ f32 GetSpeedY();
/* 80077200 */ f32 GetWallAddY(Vec&);
/* 80077278 */ void SetNowActorInfo(int, void*, unsigned int);
/* 80077288 */ void SetWallPolyIndex(int, int);
/* 800772E8 */ void CalcMovePosWork();
/* 8007732C */ void CalcWallRR();
/* 80077388 */ void SetMoveBGOnly();
/* 800773A4 */ void ClrMoveBGOnly();
/* 800773C0 */ void SetGndThinCellingOff();
/* 800773D0 */ void ClrGndThinCellingOff();
/* 800773E0 */ bool ChkGndThinCellingOff();
/* 800773EC */ void OnWallSort();
/* 800773FC */ bool ChkWallSort();
/* 80077408 */ bool ChkLineDown();
/* 800D00D0 */ bool ChkRoofHit() const;
/* 800D00DC */ void ClrGroundHit();
/* 80141404 */ bool ChkGroundHit() const;
/* 80075F94 */ virtual ~dBgS_Acch();
cXyz* GetPos() { return pm_pos; }
cXyz* GetOldPos() { return pm_old_pos; }
f32 GetGroundH() const { return m_ground_h; }
f32 GetRoofHeight() const { return m_roof_height; }
void SetLin() { m_lin.SetStartEnd(*pm_old_pos, *pm_pos); }
bool ChkGroundFind() { return m_flags & GROUND_FIND; }
bool ChkGroundHit() { return m_flags & GROUND_HIT; }
bool ChkGroundLanding() { return m_flags & GROUND_LANDING; }
void ClrGroundLanding() { m_flags &= ~GROUND_LANDING; }
void ClrGroundAway() { m_flags &= ~GROUND_AWAY; }
void ClrWallHit() { m_flags &= ~WALL_HIT; }
void SetRoofNone() { m_flags |= ROOF_NONE; }
void SetRoofHit() { m_flags |= ROOF_HIT; }
void SetWaterNone() { m_flags |= WATER_NONE; }
bool ChkWallHit() { return m_flags & WALL_HIT; }
void OffLineCheckHit() { m_flags &= ~LINE_CHECK_HIT; }
void OffLineCheck() { m_flags &= ~LINE_CHECK; }
bool ChkLineCheckNone() { return m_flags & LINE_CHECK_NONE; }
bool ChkLineCheck() { return m_flags & LINE_CHECK; }
void ClrRoofHit() { m_flags &= ~ROOF_HIT; }
void ClrWaterHit() { m_flags &= ~WATER_HIT; }
void SetWaterHit() { m_flags |= WATER_HIT; }
void ClrWaterIn() { m_flags &= ~WATER_IN; }
void SetWaterIn() { m_flags |= WATER_IN; }
const u32 MaskWaterIn() { return m_flags & WATER_IN; }
const bool ChkWaterIn() { return MaskWaterIn();}
void ClrGroundFind() { m_flags &= ~GROUND_FIND; }
u32 MaskRoofHit() { return m_flags & ROOF_HIT; }
bool ChkRoofHit() { return MaskRoofHit(); }
bool ChkClrSpeedY() { return m_flags & CLR_SPEED_Y; }
void SetGroundFind() { m_flags |= GROUND_FIND; }
void SetGroundHit() { m_flags |= GROUND_HIT; }
void SetGroundLanding() { m_flags |= GROUND_LANDING; }
void SetGroundAway() { m_flags |= GROUND_AWAY; }
const u32 MaskWaterHit() { return m_flags & WATER_HIT; }
const bool ChkWaterHit() { return MaskWaterHit(); }
void ClrWaterNone() { m_flags &= ~WATER_NONE; }
void OnLineCheck() { m_flags |= LINE_CHECK; }
void ClrRoofNone() { m_flags &= ~ROOF_NONE; }
void SetRoofCrrHeight(f32 height) { m_roof_crr_height = height; }
void SetGrndNone() { m_flags |= GRND_NONE; }
void ClrGrndNone() { m_flags &= ~GRND_NONE; }
bool ChkMoveBGOnly() const { return m_flags & MOVE_BG_ONLY; }
void SetWallHit() { m_flags |= WALL_HIT; }
void ClrWallNone() { m_flags &= ~WALL_NONE; }
cM3dGCyl* GetWallBmdCylP() { return &m_wall_cyl; }
public:
/* 0x028 */ u32 m_flags;
/* 0x02C */ cXyz* pm_pos;
/* 0x030 */ cXyz* pm_old_pos;
/* 0x034 */ cXyz* pm_speed;
/* 0x038 */ csXyz* pm_angle;
/* 0x03C */ csXyz* pm_shape_angle;
/* 0x040 */ cM3dGLin m_lin;
/* 0x05C */ cM3dGCyl m_wall_cyl;
/* 0x074 */ int m_bg_index;
/* 0x078 */ void* field_0x7c;
/* 0x07C */ u32 field_0x80;
/* 0x080 */ fopAc_ac_c* m_my_ac;
/* 0x084 */ int m_tbl_size;
/* 0x088 */ dBgS_AcchCir* field_0x8c;
/* 0x08C */ f32 field_0x90;
/* 0x090 */ f32 field_0x94;
/* 0x094 */ f32 m_ground_h;
/* 0x098 */ f32 field_0x9c;
/* 0x09C */ cM3dGPla field_0xa0;
/* 0x0B0 */ u8 field_0xb4;
/* 0x0B4 */ f32 field_0xb8;
/* 0x0B8 */ f32 field_0xbc;
/* 0x0BC */ u8 field_0xc0;
/* 0x0C0 */ f32 m_roof_height;
/* 0x0C4 */ f32 m_roof_crr_height;
/* 0x0C8 */ f32 field_0xc8;
/* 0x0CC */ int field_0xd4;
/* 0x0D0 */ f32 field_0xd8;
/* 0x0D4 */ dBgS_GndChk m_gnd;
/* 0x128 */ dBgS_RoofChk m_roof;
/* 0x174 */ dBgS_WtrChk m_wtr;
}; // Size: 0x1C4
class dBgS_LinkAcch : public dBgS_Acch {
public:
dBgS_LinkAcch() { /* SetLink(); */ }
/* 80140F30 */ virtual ~dBgS_LinkAcch();
};
class dBgS_ObjAcch : public dBgS_Acch {
public:
dBgS_ObjAcch() {
/* SetObj(); */
}
/* 80BB336C */ virtual ~dBgS_ObjAcch() {}
};
#endif /* D_BG_D_BG_S_ACCH_H */
+16
View File
@@ -0,0 +1,16 @@
#ifndef D_BG_D_BG_S_CHK_H
#define D_BG_D_BG_S_CHK_H
#include "d/d_bg_s_grp_pass_chk.h"
#include "d/d_bg_s_poly_pass_chk.h"
class dBgS_Chk : public dBgS_PolyPassChk, public dBgS_GrpPassChk {
public:
dBgS_Chk();
cBgS_PolyPassChk* GetPolyPassChkInfo();
cBgS_GrpPassChk* GetGrpPassChkInfo();
virtual ~dBgS_Chk();
}; // Size: 0x14
#endif /* D_BG_D_BG_S_CHK_H */
+61
View File
@@ -0,0 +1,61 @@
#ifndef D_BG_D_BG_S_GND_CHK_H
#define D_BG_D_BG_S_GND_CHK_H
#include "SSystem/SComponent/c_bg_s_gnd_chk.h"
#include "d/d_bg_s_chk.h"
class dBgS_GndChk : public cBgS_GndChk, public dBgS_Chk {
public:
/* 8007757C */ dBgS_GndChk();
/* 800775F0 */ virtual ~dBgS_GndChk();
}; // Size: 0x54
class dBgS_LinkGndChk : public dBgS_GndChk {
public:
dBgS_LinkGndChk() { /* SetLink(); */ }
/* 80140EB8 */ virtual ~dBgS_LinkGndChk();
};
class dBgS_ObjGndChk : public dBgS_GndChk {
public:
dBgS_ObjGndChk() { /* SetObj(); */ }
/* 8001E020 */ virtual ~dBgS_ObjGndChk();
};
class dBgS_ObjGndChk_Wtr : public dBgS_ObjGndChk {
public:
/* 80077678 */ dBgS_ObjGndChk_Wtr();
/* 80077710 */ virtual ~dBgS_ObjGndChk_Wtr();
};
class dBgS_ObjGndChk_Spl : public dBgS_ObjGndChk {
public:
/* 800777B0 */ dBgS_ObjGndChk_Spl();
/* 80077848 */ virtual ~dBgS_ObjGndChk_Spl();
};
class dBgS_ObjGndChk_All : public dBgS_ObjGndChk {
public:
/* 800778E8 */ virtual ~dBgS_ObjGndChk_All();
dBgS_ObjGndChk_All() { /* OnAll(); */ }
};
class dBgS_CamGndChk : public dBgS_GndChk {
public:
dBgS_CamGndChk() { /* SetCam(); */ }
/* 80077988 */ virtual ~dBgS_CamGndChk();
};
class dBgS_CamGndChk_Wtr : public dBgS_CamGndChk {
public:
/* 80077A00 */ dBgS_CamGndChk_Wtr();
/* 80077A98 */ virtual ~dBgS_CamGndChk_Wtr();
};
#endif /* D_BG_D_BG_S_GND_CHK_H */
+30
View File
@@ -0,0 +1,30 @@
#ifndef D_BG_D_BG_S_GRP_PASS_CHK_H
#define D_BG_D_BG_S_GRP_PASS_CHK_H
#include "SSystem/SComponent/c_bg_s_chk.h"
class dBgS_GrpPassChk : public cBgS_GrpPassChk {
public:
enum {
/* 0x1 */ NORMAL_GRP = 1,
/* 0x2 */ WATER_GRP,
/* 0x3 */ FULL_GRP
};
/* 80077BA0 */ dBgS_GrpPassChk();
/* 80077BC4 */ virtual ~dBgS_GrpPassChk();
void OnWaterGrp() { mGrp |= WATER_GRP; }
void OnSpl() { mGrp |= WATER_GRP; }
void OnNormalGrp() { mGrp |= NORMAL_GRP; }
void OffNormalGrp() { mGrp &= ~NORMAL_GRP; }
void OffFullGrp() { mGrp &= ~FULL_GRP; }
void OnAll() { mGrp |= FULL_GRP; }
u32 MaskNormalGrp() const {return mGrp & 1; }
u32 MaskWaterGrp() const {return mGrp & 2; }
private:
/* 0x4 */ u32 mGrp;
};
#endif /* D_BG_D_BG_S_GRP_PASS_CHK_H */
+83
View File
@@ -0,0 +1,83 @@
#ifndef D_BG_D_BG_S_LIN_CHK_H
#define D_BG_D_BG_S_LIN_CHK_H
#include "SSystem/SComponent/c_bg_s_lin_chk.h"
#include "d/d_bg_s_chk.h"
class fopAc_ac_c;
class dBgS_LinChk : public cBgS_LinChk, public dBgS_Chk {
public:
/* 80077C68 */ dBgS_LinChk();
/* 80077D64 */ void Set(cXyz const* pi_start, cXyz const* pi_end, fopAc_ac_c const*);
/* 80077CDC */ virtual ~dBgS_LinChk();
/* 0x00 cBgS_LinChk */;
/* 0x58 dBgS_Chk */;
};
class dBgS_LinkLinChk : public dBgS_LinChk {
public:
/* 80078030 */ dBgS_LinkLinChk();
/* 8007808C */ virtual ~dBgS_LinkLinChk();
};
class dBgS_RopeLinChk : public dBgS_LinChk {
public:
/* 8007838C */ dBgS_RopeLinChk();
/* 800783E8 */ virtual ~dBgS_RopeLinChk();
};
class dBgS_BoomerangLinChk : public dBgS_LinChk {
public:
/* 800782B8 */ dBgS_BoomerangLinChk();
/* 80078314 */ virtual ~dBgS_BoomerangLinChk();
};
class dBgS_ArrowLinChk : public dBgS_LinChk {
public:
/* 800781D8 */ dBgS_ArrowLinChk();
/* 80078240 */ virtual ~dBgS_ArrowLinChk();
};
class dBgS_ObjLinChk : public dBgS_LinChk {
public:
/* 80077F5C */ dBgS_ObjLinChk();
/* 80077FB8 */ virtual ~dBgS_ObjLinChk();
};
class dBgS_BombLinChk : public dBgS_LinChk {
public:
/* 80078104 */ dBgS_BombLinChk();
/* 80078160 */ virtual ~dBgS_BombLinChk();
};
class dBgS_CamLinChk : public dBgS_LinChk {
public:
/* 80077DA4 */ dBgS_CamLinChk();
/* 80077E00 */ virtual ~dBgS_CamLinChk();
};
class dBgS_CamLinChk_NorWtr : public dBgS_CamLinChk {
public:
/* 80077E78 */ dBgS_CamLinChk_NorWtr();
/* 80077EE4 */ virtual ~dBgS_CamLinChk_NorWtr();
};
class dBgS_MirLightLinChk : public dBgS_LinChk {
public:
dBgS_MirLightLinChk();
virtual ~dBgS_MirLightLinChk();
};
#endif /* D_BG_D_BG_S_LIN_CHK_H */
+17
View File
@@ -0,0 +1,17 @@
#ifndef D_BG_D_BG_S_POLY_PASS_CHK_H
#define D_BG_D_BG_S_POLY_PASS_CHK_H
#include "dolphin/types.h"
class cBgS_PolyPassChk {
public:
virtual ~cBgS_PolyPassChk();
};
class dBgS_PolyPassChk : public cBgS_PolyPassChk {
public:
dBgS_PolyPassChk();
virtual ~dBgS_PolyPassChk();
};
#endif /* D_BG_D_BG_S_POLY_PASS_CHK_H */
+29
View File
@@ -0,0 +1,29 @@
#ifndef D_BG_D_BG_S_ROOF_CHK_H
#define D_BG_D_BG_S_ROOF_CHK_H
#include "SSystem/SComponent/c_bg_s_poly_info.h"
#include "SSystem/SComponent/c_xyz.h"
#include "d/d_bg_s_chk.h"
class dBgS_RoofChk : public cBgS_PolyInfo, public cBgS_Chk, public dBgS_Chk {
public:
/* 80078FF4 */ dBgS_RoofChk();
/* 80079124 */ void Init();
/* 800B146C */ void SetPos(cXyz const&);
/* 80079090 */ virtual ~dBgS_RoofChk();
void i_SetPos(cXyz const& pos) { m_pos = pos; }
cXyz* GetPosP() { return &m_pos; }
private:
/* 0x38 */ cXyz m_pos;
}; // Size: 0x44
class dBgS_LinkRoofChk : public dBgS_RoofChk {
public:
dBgS_LinkRoofChk() { /* SetLink(); */ }
/* 80140E40 */ virtual ~dBgS_LinkRoofChk();
};
#endif /* D_BG_D_BG_S_ROOF_CHK_H */
+40
View File
@@ -0,0 +1,40 @@
#ifndef D_BG_D_BG_S_SPL_GRP_CHK_H
#define D_BG_D_BG_S_SPL_GRP_CHK_H
#include "SSystem/SComponent/c_bg_s_poly_info.h"
#include "SSystem/SComponent/c_xyz.h"
#include "d/d_bg_s_chk.h"
class dBgS_SplGrpChk : public cBgS_PolyInfo, public cBgS_Chk, public dBgS_Chk {
public:
enum {
/* 0x1 */ FIND = 1,
/* 0x2 */ IN = 2,
/* 0x4 */ MOVE_BG_ONLY = 4
};
/* 80078B90 */ void Set(cXyz&, f32);
/* 80078BB0 */ dBgS_SplGrpChk();
/* 80078D0C */ void Init();
/* 80078C78 */ virtual ~dBgS_SplGrpChk();
void OffFind() { m_flags &= ~FIND; }
void OffIn() { m_flags &= ~IN; }
void OffMoveBGOnly() { m_flags &= ~MOVE_BG_ONLY; }
void OnMoveBGOnly() { m_flags |= MOVE_BG_ONLY; }
void OnFind() { m_flags |= FIND; }
bool ChkMoveBGOnly() { return m_flags & MOVE_BG_ONLY; }
void SetHeight(f32 height) { m_height = height; }
f32 GetHeight() { return m_height; }
cXyz& GetPosP() { return m_ground; }
f32 GetRoof() const { return m_roof; }
private:
/* 0x38 */ cXyz m_ground;
/* 0x44 */ f32 m_roof;
/* 0x48 */ f32 m_height;
/* 0x4C */ u32 m_flags;
}; // Size: 0x50
#endif /* D_BG_D_BG_S_SPL_GRP_CHK_H */
+13
View File
@@ -0,0 +1,13 @@
#ifndef D_BG_D_BG_S_WTR_CHK_H
#define D_BG_D_BG_S_WTR_CHK_H
#include "d/d_bg_s_spl_grp_chk.h"
class dBgS_WtrChk : public dBgS_SplGrpChk {
public:
/* 80079164 */ dBgS_WtrChk();
/* 8001DF30 */ virtual ~dBgS_WtrChk();
}; // Size: 0x50
#endif /* D_BG_D_BG_S_WTR_CHK_H */
+395
View File
@@ -0,0 +1,395 @@
#ifndef D_CC_D_CC_D_H
#define D_CC_D_CC_D_H
/**
* d_cc_d.h
* Actor Collision
*/
#include "SSystem/SComponent/c_cc_d.h"
enum dCcD_hitSe {};
enum dCcG_At_Spl {};
enum dCcG_Tg_Spl {};
struct dCcD_SrcGAtTgCoCommonBase {
/* 0x0 */ u32 mGFlag;
}; // Size: 0x4
struct dCcD_SrcGObjAt {
/* 0x0 */ u8 mSe; // Sound Effect ID
/* 0x1 */ u8 mHitMark; // Hit Mark particle ID
/* 0x2 */ u8 mSpl;
/* 0x3 */ u8 mMtrl;
/* 0x4 */ dCcD_SrcGAtTgCoCommonBase mBase;
}; // Size: 0x8
struct dCcD_SrcGObjTg {
/* 0x0 */ u8 mSe; // Sound Effect ID
/* 0x1 */ u8 mHitMark; // Hit Mark particle ID
/* 0x2 */ u8 mSpl;
/* 0x3 */ u8 mMtrl;
/* 0x4 */ dCcD_SrcGAtTgCoCommonBase mBase;
}; // Size: 0x8
struct dCcD_SrcGObjCo {
/* 0x0 */ dCcD_SrcGAtTgCoCommonBase mBase;
}; // Size: 0x4
struct dCcD_SrcGObjInf {
/* 0x00 */ cCcD_SrcObj mObj;
/* 0x1C */ dCcD_SrcGObjAt mGObjAt;
/* 0x24 */ dCcD_SrcGObjTg mGObjTg;
/* 0x2C */ dCcD_SrcGObjCo mGObjCo;
}; // Size: 0x30
struct dCcD_SrcSph {
/* 0x00 */ dCcD_SrcGObjInf mObjInf;
/* 0x30 */ cCcD_SrcSphAttr mSphAttr;
}; // Size: 0x40
struct dCcD_SrcTri {
/* 0x00 */ dCcD_SrcGObjInf mObjInf;
/* 0x30 */ cCcD_SrcTriAttr mTriAttr;
}; // Size: 0x54
struct dCcD_SrcCyl {
/* 0x00 */ dCcD_SrcGObjInf mObjInf;
/* 0x30 */ cM3dGCylS mCyl;
}; // Size: 0x44
struct dCcD_SrcCps {
/* 0x00 */ dCcD_SrcGObjInf mObjInf;
/* 0x30 */ cCcD_SrcCpsAttr mCpsAttr;
}; // Size: 0x4C
class dCcD_GStts : public cCcD_GStts {
public:
dCcD_GStts();
virtual ~dCcD_GStts() {}
void Ct();
void Move();
void ClrAt() { mAt = 0; }
void ClrTg() { mTg = 0; }
void SetAtApid(unsigned int id) { mAtApid = id; }
void SetTgApid(unsigned int id) { mTgApid = id; }
u8 GetRoomId() { return mRoomId; }
void SetRoomId(int id) { mRoomId = id; }
unsigned int GetAtOldApid() { return mAtOldApid; }
unsigned int GetTgOldApid() { return mTgOldApid; }
bool ChkNoActor() { return field_0x1C & 1; }
bool ChkNoneActorPerfTblId() { return field_0x08 == 0xFFFF; }
dCcG_At_Spl GetAtSpl() { return (dCcG_At_Spl)mAt; }
void SetAtSpl(dCcG_At_Spl spl) { mAt = spl; }
dCcG_Tg_Spl GetTgSpl() { return (dCcG_Tg_Spl)mTg; }
void SetTgSpl(dCcG_Tg_Spl spl) { mTg = spl; }
void OnNoActor() { field_0x1C |= 1; }
// private:
/* 0x04 */ u8 mAt;
/* 0x05 */ u8 mTg;
/* 0x06 */ u8 mRoomId;
/* 0x08 */ u16 field_0x08;
/* 0x0C */ int mAtApid;
/* 0x10 */ int mAtOldApid;
/* 0x14 */ int mTgApid;
/* 0x18 */ int mTgOldApid;
/* 0x1C */ int field_0x1C;
}; // Size = 0x20
class dCcD_Stts : public cCcD_Stts, public dCcD_GStts {
public:
dCcD_Stts() {}
virtual cCcD_GStts* GetGStts();
void Init(int, int, fopAc_ac_c*);
virtual void Ct();
virtual void ClrAt();
virtual void ClrTg();
virtual ~dCcD_Stts() {}
}; // Size = 0x3C
class dCcD_GObjInf;
typedef void (*dCcD_HitCallback)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
// Attack/Defense/Correction Collider Common Base
class dCcD_GAtTgCoCommonBase {
public:
/* 0x00 */ u32 mGFlag;
/* 0x04 */ u32 mRPrm;
/* 0x08 */ dCcD_HitCallback mHitCallback;
/* 0x0C */ u32 mApid;
/* 0x10 */ fopAc_ac_c* mAc;
/* 0x14 */ s8 mEffCounter;
/* 0x15 */ u8 field_0x15[3];
/* 0x18 vtable */
public:
dCcD_GAtTgCoCommonBase() { ct(); }
void ClrActorInfo();
void ct();
void SetHitApid(unsigned int);
fopAc_ac_c* GetAc();
void Set(dCcD_SrcGAtTgCoCommonBase const&);
void SetEffCounterTimer();
void SubtractEffCounter();
bool ChkEffCounter();
virtual ~dCcD_GAtTgCoCommonBase() {}
void ClrEffCounter() { mEffCounter = 0; }
u32 GetGFlag() const { return mGFlag; }
u32 GetRPrm() const { return mRPrm; }
u32 MskSPrm(u32 mask) const { return mGFlag & mask; }
u32 MskRPrm(u32 mask) const { return mRPrm & mask; }
bool ChkSPrm(u32 mask) const { return MskSPrm(mask); }
void OnSPrm(u32 flag) { mGFlag |= flag; }
void OnRPrm(u32 flag) { mRPrm |= flag; }
void OffSPrm(u32 flag) { mGFlag &= ~flag; }
void OffRPrm(u32 flag) { mRPrm &= ~flag; }
bool ChkRPrm(u32 flag) const { return MskRPrm(flag); }
void SetHitCallback(dCcD_HitCallback callback) { mHitCallback = callback; }
dCcD_HitCallback GetHitCallback() { return mHitCallback; }
void ClrHit() { ClrActorInfo(); }
}; // Size = 0x1C
// Attack (At) Collider
class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase {
public:
void Set(dCcD_SrcGObjAt const&);
virtual ~dCcD_GObjAt() {}
void SetVec(cXyz& vec) { mVec = vec; }
cXyz& GetVec() { return mVec; }
cXyz* GetVecP() { return &mVec; }
void SetHitMark(u8 mark) { mHitMark = mark; }
void SetSe(u8 se) { mSe = se; }
void SetMtrl(u8 mtrl) { mMtrl = mtrl; }
void SetAtSpl(dCcG_At_Spl spl) { mSpl = spl; }
u8 GetSe() { return mSe; }
u8 GetSpl() { return mSpl; }
u8 GetMtrl() { return mMtrl; }
u8 GetHitMark() { return mHitMark; }
void SetRVec(cXyz& vec) { mRVec = vec; }
void SetHitPos(cXyz& pos) { mHitPos = pos; }
// private:
/* 0x1C */ u8 mSe;
/* 0x1D */ u8 mMtrl;
/* 0x1E */ u8 mHitMark;
/* 0x1F */ u8 mSpl;
/* 0x20 */ cXyz mHitPos;
/* 0x2C */ cXyz mVec;
/* 0x38 */ cXyz mRVec;
}; // Size = 0x44
// Defense (Tg) Collider
class dCcD_GObjTg : public dCcD_GAtTgCoCommonBase {
public:
void Set(dCcD_SrcGObjTg const&);
virtual ~dCcD_GObjTg() {}
void SetSe(u8 se) { mSe = se; }
void SetVec(cXyz& vec) { mVec = vec; }
cXyz& GetVec() { return mVec; }
void SetShieldFrontRangeYAngle(s16* angle) { mShieldFrontRangeYAngle = angle; }
void SetMtrl(u8 mtrl) { mMtrl = mtrl; }
u8 GetMtrl() { return mMtrl; }
void SetHitMark(CcG_Tg_HitMark mark) { mHitMark = mark; }
s16* GetShieldFrontRangeYAngle() { return mShieldFrontRangeYAngle; }
u8 GetSpl() { return mSpl; }
u8 GetHitMark() { return mHitMark; }
void SetRVec(cXyz& vec) { mRVec = vec; }
cXyz* GetVecP() { return &mVec; }
void SetHitPos(cXyz& pos) { mHitPos = pos; }
private:
/* 0x1C */ u8 mSe;
/* 0x1D */ u8 mMtrl;
/* 0x1E */ u8 mHitMark;
/* 0x1F */ u8 mSpl;
/* 0x20 */ cXyz mVec;
/* 0x2C */ cXyz mRVec;
/* 0x38 */ cXyz mHitPos;
/* 0x44 */ s16* mShieldFrontRangeYAngle;
}; // Size = 0x48
// Correction (Co) Collider
class dCcD_GObjCo : public dCcD_GAtTgCoCommonBase {
public:
virtual ~dCcD_GObjCo() {}
void Set(dCcD_SrcGObjCo const& pSrc) { dCcD_GAtTgCoCommonBase::Set(pSrc.mBase); }
}; // Size = 0x1C ?
// Object Info
class dCcD_GObjInf : public cCcD_GObjInf {
public:
dCcD_GObjInf();
virtual ~dCcD_GObjInf();
virtual cCcD_GObjInf* GetGObjInf();
virtual void ClrAtHit();
u32 ChkAtHit();
void ResetAtHit();
cCcD_Obj* GetAtHitObj();
cCcD_GObjInf* GetAtHitGObj();
u8 ChkAtNoGuard();
virtual void ClrTgHit();
u32 ChkTgHit();
void ResetTgHit();
cCcD_Obj* GetTgHitObj();
dCcD_GObjInf* GetTgHitGObj();
u8 GetTgHitObjSe();
virtual void ClrCoHit();
u32 ChkCoHit();
void ResetCoHit();
cCcD_Obj* GetCoHitObj();
void Set(dCcD_SrcGObjInf const&);
fopAc_ac_c* GetCoHitAc() { return mGObjCo.GetAc(); }
void SetAtVec(cXyz& vec) { mGObjAt.SetVec(vec); }
void SetTgVec(cXyz& vec) { mGObjTg.SetVec(vec); }
bool ChkAtNoMass() const { return mGObjAt.ChkSPrm(8); }
void OnAtNoHitMark() { mGObjAt.OnSPrm(2); }
void OffAtNoHitMark() { mGObjAt.OffSPrm(2); }
void OnTgNoHitMark() { mGObjTg.OnSPrm(4); }
void OffTgNoHitMark() { mGObjTg.OffSPrm(4); }
void OnAtNoConHit() { mGObjAt.OnSPrm(1); }
void OffAtNoConHit() { mGObjAt.OffSPrm(1); }
void OnTgNoConHit() { mGObjTg.OnSPrm(2); }
void SetAtHitMark(u8 mark) { mGObjAt.SetHitMark(mark); }
void SetAtSe(u8 se) { mGObjAt.SetSe(se); }
void SetTgSe(u8 se) { mGObjTg.SetSe(se); }
void SetAtMtrl(u8 mtrl) { mGObjAt.SetMtrl(mtrl); }
void SetTgMtrl(u8 mtrl) { mGObjTg.SetMtrl(mtrl); }
fopAc_ac_c* GetAtHitAc() { return mGObjAt.GetAc(); }
bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); }
cXyz* GetAtVecP() { return mGObjAt.GetVecP(); }
cXyz* GetTgVecP() { return mGObjTg.GetVecP(); }
void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetAtSpl(spl); }
void SetAtHitCallback(dCcD_HitCallback callback) { mGObjAt.SetHitCallback(callback); }
void SetTgHitCallback(dCcD_HitCallback callback) { mGObjTg.SetHitCallback(callback); }
void SetCoHitCallback(dCcD_HitCallback callback) { mGObjCo.SetHitCallback(callback); }
u8 GetAtSe() { return mGObjAt.GetSe(); }
dCcG_At_Spl GetAtSpl() { return (dCcG_At_Spl)mGObjAt.GetSpl(); }
u8 GetAtMtrl() { return mGObjAt.GetMtrl(); }
u8 GetTgMtrl() { return mGObjTg.GetMtrl(); }
fopAc_ac_c* GetTgHitAc() { return mGObjTg.GetAc(); }
void SetTgShieldFrontRangeYAngle(s16* angle) { mGObjTg.SetShieldFrontRangeYAngle(angle); }
void OffTgWolfSpNoDamage() { mGObjTg.OffSPrm(0x800); }
void OnTgWolfSpNoDamage() { mGObjTg.OnSPrm(0x800); }
void SetTgHitMark(CcG_Tg_HitMark mark) { mGObjTg.SetHitMark(mark); }
void OnTgSpShield() { mGObjTg.OnSPrm(0x40); }
void OffTgSpShield() { mGObjTg.OffSPrm(0x40); }
void OnTgShield() { mGObjTg.OnSPrm(0x1); }
void OffTgShield() { mGObjTg.OffSPrm(0x1); }
void OnTgShieldFrontRange() { mGObjTg.OnSPrm(0x8); }
void OffTgShieldFrontRange() { mGObjTg.OffSPrm(0x8); }
bool ChkTgIronBallRebound() { return mGObjTg.ChkSPrm(0x100); }
s16* GetTgShieldFrontRangeYAngle() { return mGObjTg.GetShieldFrontRangeYAngle(); }
bool ChkTgShield() { return mGObjTg.ChkSPrm(1); }
bool ChkTgSpShield() { return mGObjTg.ChkSPrm(0x40); }
bool ChkTgSmallShield() { return mGObjTg.ChkSPrm(0x10); }
bool ChkTgShieldFrontRange() { return mGObjTg.ChkSPrm(8); }
bool ChkAtNoConHit() { return mGObjAt.ChkSPrm(1); }
bool ChkAtStopNoConHit() { return mGObjAt.ChkSPrm(0x4); }
bool ChkTgNoConHit() { return mGObjTg.ChkSPrm(2); }
bool ChkTgStopNoConHit() { return mGObjTg.ChkSPrm(0x2000); }
bool ChkCoNoCamHit() { return mGObjCo.ChkSPrm(2); }
dCcD_HitCallback GetCoHitCallback() { return mGObjCo.GetHitCallback(); }
dCcD_HitCallback GetAtHitCallback() { return mGObjAt.GetHitCallback(); }
dCcD_HitCallback GetTgHitCallback() { return mGObjTg.GetHitCallback(); }
void SetCoHitApid(unsigned int apid) { mGObjCo.SetHitApid(apid); }
void SetAtHitApid(unsigned int apid) { mGObjAt.SetHitApid(apid); }
void SetTgHitApid(unsigned int apid) { mGObjTg.SetHitApid(apid); }
void OnCoHitNoActor() { mGObjCo.OnRPrm(1); }
void OffCoHitNoActor() { mGObjCo.OffRPrm(1); }
void OnAtHitNoActor() { mGObjAt.OnRPrm(2); }
void OffAtHitNoActor() { mGObjAt.OffRPrm(2); }
void OnTgHitNoActor() { mGObjTg.OnRPrm(1); }
void OffTgHitNoActor() { mGObjTg.OffRPrm(1); }
bool ChkCoHitNoActor() const { return mGObjCo.ChkRPrm(1); }
bool ChkAtHitNoActor() const { return mGObjAt.ChkRPrm(2); }
bool ChkTgHitNoActor() const { return mGObjTg.ChkRPrm(1); }
bool ChkTgWolfSpNoDamage() { return mGObjTg.ChkSPrm(0x800); }
bool ChkAtNoHitMark() { return mGObjAt.ChkSPrm(2); }
bool ChkTgNoHitMark() { return mGObjTg.ChkSPrm(4); }
bool ChkTgHookShotNoHitMark() { return mGObjTg.ChkSPrm(0x400); }
bool ChkTgArrowNoHitMark() { return mGObjTg.ChkSPrm(0x1000); }
dCcG_Tg_Spl GetTgSpl() { return (dCcG_Tg_Spl)mGObjTg.GetSpl(); }
int GetTgHitMark() { return mGObjTg.GetHitMark(); }
int GetAtHitMark() { return mGObjAt.GetHitMark(); }
bool ChkAtEffCounter() { return mGObjAt.ChkEffCounter(); }
bool ChkTgEffCounter() { return mGObjTg.ChkEffCounter(); }
void ClrAtEffCounter() { mGObjAt.ClrEffCounter(); }
void ClrTgEffCounter() { mGObjTg.ClrEffCounter(); }
void ClrCoEffCounter() { mGObjCo.ClrEffCounter(); }
void SetAtEffCounterTimer() { mGObjAt.SetEffCounterTimer(); }
void SetTgEffCounterTimer() { mGObjTg.SetEffCounterTimer(); }
void SubtractAtEffCounter() { mGObjAt.SubtractEffCounter(); }
void SubtractTgEffCounter() { mGObjTg.SubtractEffCounter(); }
void SubtractCoEffCounter() { mGObjCo.SubtractEffCounter(); }
void OnTgShieldHit() { mGObjTg.OnRPrm(2); }
void OffTgShieldHit() { mGObjTg.OffRPrm(2); }
void OnAtShieldHit() { mGObjAt.OnRPrm(1); }
void OffAtShieldHit() { mGObjAt.OffRPrm(1); }
void OffTgMagneHit() { mGObjTg.OffRPrm(4); }
void SetTgRVec(cXyz& vec) { mGObjTg.SetRVec(vec); }
void SetAtRVec(cXyz& vec) { mGObjAt.SetRVec(vec); }
void SetTgHitPos(cXyz& pos) { mGObjTg.SetHitPos(pos); }
void SetAtHitPos(cXyz& pos) { mGObjAt.SetHitPos(pos); }
protected:
/* 0x050 */ dCcD_GObjAt mGObjAt;
/* 0x094 */ dCcD_GObjTg mGObjTg;
/* 0x0DC */ dCcD_GObjCo mGObjCo;
}; // Size = 0xF8
STATIC_ASSERT(sizeof(dCcD_GObjInf) == 0xF8);
// Cylinder
class dCcD_Cyl : public dCcD_GObjInf, public cCcD_CylAttr {
public:
void Set(dCcD_SrcCyl const&);
cCcD_ShapeAttr* GetShapeAttr();
void StartCAt(cXyz&);
void MoveCAt(cXyz&);
void MoveCTg(cXyz&);
virtual ~dCcD_Cyl() {}
dCcD_Cyl() {}
}; // Size = 0x130
// Sphere
class dCcD_Sph : public dCcD_GObjInf, public cCcD_SphAttr {
public:
dCcD_Sph() {}
void Set(dCcD_SrcSph const&);
void StartCAt(cXyz&);
void MoveCAt(cXyz&);
virtual cCcD_ShapeAttr* GetShapeAttr();
virtual ~dCcD_Sph() {}
}; // Size = 0x12C
// Capsule
class dCcD_Cps : public dCcD_GObjInf, public cCcD_CpsAttr {
public:
void Set(dCcD_SrcCps const&);
cCcD_ShapeAttr* GetShapeAttr();
void CalcAtVec();
void CalcTgVec();
virtual ~dCcD_Cps() {}
dCcD_Cps() {}
}; // Size = 0x138
// Triangle
class dCcD_Tri : public dCcD_GObjInf, public cCcD_TriAttr {
public:
void Set(dCcD_SrcTri const&);
cCcD_ShapeAttr* GetShapeAttr();
virtual ~dCcD_Tri() {}
dCcD_Tri() {}
};
dCcD_GObjInf* dCcD_GetGObjInf(cCcD_Obj* param_0);
#endif /* D_CC_D_CC_D_H */
+2
View File
@@ -314,6 +314,8 @@ public:
/* 0x1D1C1 */ u8 field_0x1d1c1;
};
STATIC_ASSERT(sizeof(dComIfG_inf_c) == 0x1D1C8);
extern dComIfG_inf_c g_dComIfG_gameInfo;
/**
+11
View File
@@ -152,6 +152,17 @@ private:
STATIC_ASSERT(sizeof(dDlst_shadowControl_c) == 0x15E28);
class dDlst_mirrorPacket : public J3DPacket {
public:
/* 0x0010 */ u8 field_0x0010[0x0040 - 0x0010];
/* 0x0040 */ Mtx mPosMtx;
/* 0x0070 */ u8 field_0x0070[0x0080 - 0x0070];
/* 0x0080 */ Mtx mTexMtx;
/* 0x00B0 */ dDlst_shadowRealPoly_c mShadowPoly;
/* 0x24B8 */ GXTexObj mTexObj;
/* 0x24D8 */ u8 mAlpha;
};
struct view_port_class;
struct view_class;
struct camera_class;
+127
View File
@@ -70,6 +70,42 @@ private:
STATIC_ASSERT(sizeof(mDoExt_btkAnm) == 0x14);
class J3DTevColorAnm;
class J3DTevKColorAnm;
class mDoExt_brkAnm : public mDoExt_baseAnm {
public:
mDoExt_brkAnm() { mpAnm = 0; }
/* 8000D70C */ int init(J3DMaterialTable* i_matTable, J3DAnmTevRegKey* i_brk, int i_anmPlay,
int i_attribute, f32 i_rate, s16 i_start, s16 param_6);
/* 8000D7A8 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame);
void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
void entry(J3DModelData* i_modelData, f32 i_frame) {
entry(&i_modelData->getMaterialTable(), i_frame);
}
int init(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int i_anmPlay, int i_attribute,
f32 i_rate, s16 i_start, s16 param_6) {
return init(&i_modelData->getMaterialTable(), i_brk, i_anmPlay, i_attribute, i_rate,
i_start, param_6);
}
int remove(J3DModelData* i_modelData) { return i_modelData->removeTevRegAnimator(mpAnm); }
void entryFrame() { entryFrame(getFrame()); }
void entryFrame(f32 frame) { mpAnm->setFrame(frame); }
J3DAnmTevRegKey* getBrkAnm() const { return mpAnm; }
private:
/* 0x08 */ J3DAnmTevRegKey* mpAnm;
/* 0x0C */ J3DTevColorAnm* mpCRegAnm;
/* 0x10 */ J3DTevKColorAnm* mpKRegAnm;
/* 0x14 */ u16 mCRegUpdateMaterialNum;
/* 0x16 */ u16 mKRegUpdateMaterialNum;
}; // Size: 0x18
STATIC_ASSERT(sizeof(mDoExt_brkAnm) == 0x18);
class mDoExt_bckAnm : public mDoExt_baseAnm {
public:
mDoExt_bckAnm() { mpMtxCalc = NULL; }
@@ -97,6 +133,97 @@ private:
STATIC_ASSERT(sizeof(mDoExt_bckAnm) == 0x10);
class mDoExt_btpAnm : public mDoExt_baseAnm {
public:
mDoExt_btpAnm() { mpAnm = NULL; }
/* 8000D54C */ int init(J3DMaterialTable* i_matTable, J3DAnmTexPattern* i_btk, int i_anmPlay,
int i_attribute, f32 i_rate, s16 i_start, s16 param_6);
/* 8000D5E8 */ void entry(J3DMaterialTable* i_matTable, s16 i_frame);
void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
void entry(J3DModelData* i_modelData, s16 i_frame) {
entry(&i_modelData->getMaterialTable(), i_frame);
}
int init(J3DModelData* i_modelData, J3DAnmTexPattern* i_btk, int i_anmPlay, int i_attribute,
f32 i_rate, s16 i_start, s16 param_6) {
return init(&i_modelData->getMaterialTable(), i_btk, i_anmPlay, i_attribute, i_rate,
i_start, param_6);
}
int remove(J3DModelData* i_modelData) { return i_modelData->removeTexNoAnimator(mpAnm); }
private:
/* 0x14 */ J3DAnmTexPattern* mpAnm;
};
class mDoExt_blkAnm : public mDoExt_baseAnm {
public:
/* 8000DA08 */ int init(J3DDeformData* i_deformData, J3DAnmCluster* i_blk, int i_anmPlay,
int i_attribute, f32 i_rate, s16 i_start, s16 param_6);
J3DAnmCluster* getBlkAnm() { return mpAnm; }
private:
/* 0x14 */ J3DAnmCluster* mpAnm;
};
class mDoExt_AnmRatioPack {
public:
/* 80140DF0 */ ~mDoExt_AnmRatioPack();
/* 80140E2C */ mDoExt_AnmRatioPack();
void setRatio(f32 ratio) { mRatio = ratio; }
f32 getRatio() { return mRatio; }
J3DAnmTransform* getAnmTransform() { return mAnmTransform; }
void setAnmTransform(J3DAnmTransform* anm) { mAnmTransform = anm; }
private:
/* 0x0 */ f32 mRatio;
/* 0x4 */ J3DAnmTransform* mAnmTransform;
}; // Size: 0x8
class mDoExt_MtxCalcOldFrame {
public:
/* 8000F848 */ void initOldFrameMorf(f32, u16, u16);
/* 8000F8CC */ void decOldFrameMorfCounter();
f32 getOldFrameRate() { return mOldFrameRate; }
J3DTransformInfo* getOldFrameTransInfo(int i) { return &mOldFrameTransInfo[i]; }
u16 getOldFrameStartJoint() { return mOldFrameStartJoint; }
Quaternion* getOldFrameQuaternion(int i_no) { return &mOldFrameQuaternion[i_no]; }
private:
/* 0x00 */ bool mOldFrameFlg;
/* 0x04 */ f32 mOldFrameMorfCounter;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 mOldFrameRate;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ u16 mOldFrameStartJoint;
/* 0x1A */ u16 mOldFrameEndJoint;
/* 0x1C */ J3DTransformInfo* mOldFrameTransInfo;
/* 0x20 */ Quaternion* mOldFrameQuaternion;
}; // Size: 0x24
struct mDoExt_MtxCalcAnmBlendTblOld
: public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> {
/* 80014EB0 */ virtual ~mDoExt_MtxCalcAnmBlendTblOld();
/* 8000F4B0 */ virtual void calc();
/* 0x4 */ int mNum;
/* 0x8 */ mDoExt_AnmRatioPack* mAnmRatio;
}; // Size: 0xC
struct mDoExt_MtxCalcAnmBlendTbl : public mDoExt_MtxCalcAnmBlendTblOld {
/* 800D00BC */ J3DAnmTransform* getAnm(int);
/* 80014F3C */ virtual ~mDoExt_MtxCalcAnmBlendTbl();
/* 8000F26C */ virtual void calc();
/* 0xC */ mDoExt_MtxCalcOldFrame* mOldFrame;
};
class mDoExt_McaMorfCallBack1_c {
public:
virtual void execute(u16, J3DTransformInfo*) = 0;