diff options
| author | elijah-thomas774 <elijahthomas774@gmail.com> | 2026-10-02 20:36:02 -0400 |
|---|---|---|
| committer | elijah-thomas774 <elijahthomas774@gmail.com> | 2026-10-13 14:39:50 -0400 |
| commit | 107af1e4f2891334beaeb855c91095ea1986df15 (patch) | |
| tree | b0b415a5d34d1db4f546ceee456fbc54c6b7dd88 /include/d | |
| parent | e5d6f2046c800a0addb54acfbc12be02529f9709 (diff) | |
d_a_b_girahimu_base early Progress
Diffstat (limited to 'include/d')
| -rw-r--r-- | include/d/a/b/d_a_b_girahimu_base.h | 449 | ||||
| -rw-r--r-- | include/d/a/obj/d_a_obj_girahimu_sword_link.h | 4 |
2 files changed, 450 insertions, 3 deletions
diff --git a/include/d/a/b/d_a_b_girahimu_base.h b/include/d/a/b/d_a_b_girahimu_base.h index 1f6a9729..82d5ca2c 100644 --- a/include/d/a/b/d_a_b_girahimu_base.h +++ b/include/d/a/b/d_a_b_girahimu_base.h @@ -1,16 +1,459 @@ #ifndef D_A_B_GIRAHIMU_BASE_H #define D_A_B_GIRAHIMU_BASE_H +#include "common.h" +#include "d/a/d_a_base.h" #include "d/a/e/d_a_en_base.h" +#include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_s_acch.h" +#include "d/col/cc/d_cc_d.h" +#include "d/d_cc.h" +#include "d/d_message.h" +#include "d/d_shadow.h" +#include "d/snd/d_snd_source_if.h" +#include "m/m3d/m_anmchr.h" +#include "m/m3d/m_anmchrblend.h" +#include "m/m3d/m_anmtexpat.h" +#include "m/m3d/m_fanm.h" +#include "m/m3d/m_mdl.h" +#include "m/m3d/m_smdl.h" +#include "m/m_angle.h" +#include "m/m_mtx.h" +#include "m/m_quat.h" +#include "m/m_vec.h" +#include "nw4r/g3d/g3d_calcworld.h" +#include "nw4r/g3d/g3d_scnobj.h" +#include "nw4r/g3d/res/g3d_resanmchr.h" +#include "nw4r/g3d/res/g3d_resmdl.h" #include "s/s_State.hpp" +#include "toBeSorted/d_emitter.h" +#include "toBeSorted/d_enemy_sword_mdl.h" +#include "toBeSorted/d_flow_mgr.h" + +class dAcObjGirahimuSwordLink_c; + +// Needed for ordering +struct LinkSph { + dCcD_Linked<dCcD_Sph> mSph; +}; +class dNpcEyeMdlCallback_c : public nw4r::g3d::IScnObjCallback { +public: + dNpcEyeMdlCallback_c() {} + virtual ~dNpcEyeMdlCallback_c() {} + /* 0x04 */ u8 mBlendWeight; + /* 0x05 */ u8 mInterpTimer; + /* 0x06 */ u8 nTexCoordMask[2]; + /* 0x08 */ u16 mEyeballMatID[2]; + /* 0x0C */ mVec2_c mTargetOffset[2]; + /* 0x1C */ mVec2_c mCurrentOffset[2]; + /* 0x2C */ dAcObjBase_c *mpOwner; +}; class dAcGirahimuBase_c : public dAcEnBase_c { public: - dAcGirahimuBase_c() : mStateMgr(*this) {} - virtual ~dAcGirahimuBase_c() {} + dAcGirahimuBase_c() : mStateMgr(*this), mFlowMgr(&mFlow) {} + virtual ~dAcGirahimuBase_c(); + + class callback_c : public m3d::callback_c { + public: + friend class dAcGirahimuBase_c; + + callback_c() {} + virtual ~callback_c() {} + virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override; + + void fn_226_DC0(mMtx_c &, const mAng3_c &, const mAng); + void fn_226_E80(); + void fn_226_1160(); + void init(dAcGirahimuBase_c *pGhirahim); + void fn_226_1580(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl); + void fn_226_1B60(mVec3_c &); + void fn_226_1DD0(); + void fn_226_24E0(); + void fn_226_24F0(); + void fn_226_2FD0(); + void fn_226_3080(); + void fn_226_3130(); + void fn_226_3150(mMtx_c &); + + /* 0x004 */ mQuat_c field_0x004; + /* 0x014 */ f32 field_0x014; + /* 0x018 */ u16 mNodeID_ShoulderR; + /* 0x01A */ u16 mNodeID_ShoulderL; + /* 0x01C */ u16 mNodeID_Hip; + /* 0x01E */ u16 mNodeID_ArmR; + /* 0x020 */ u16 mNodeID_ArmL; + /* 0x022 */ u16 mNodeID_ElbowR; + /* 0x024 */ u16 mNodeID_ElbowL; + /* 0x026 */ u16 mNodeID_HandR; + /* 0x028 */ u16 mNodeID_Head; + /* 0x02A */ u16 mNodeID_Neck; + /* 0x02C */ u16 mNodeID_Hair1; + /* 0x02E */ u16 mNodeID_Hair2; + /* 0x030 */ u16 mNodeID_Hair3; + /* 0x032 */ u16 mNodeID_Hair4; + /* 0x034 */ u16 mNodeID_Spine1; + /* 0x036 */ u16 mNodeID_Spine2; + /* 0x038 */ u16 mNodeID_BrowL; + /* 0x03A */ u16 mNodeID_BrowR; + /* 0x03C */ u16 mNodeID_Chin; + /* 0x03E */ u16 mNodeID_MouthL; + /* 0x040 */ u16 mNodeID_MouthR; + /* 0x042 */ u16 mNodeID_Upperjaw; + /* 0x044 */ u16 mNodeID_SklRoot; + /* 0x046 */ u16 mNodeID_LegR; + /* 0x048 */ u16 mNodeID_LegL; + /* 0x04A */ u16 mNodeID_KneeR; + /* 0x04C */ u16 mNodeID_KneeL; + /* 0x04E */ bool field_0x04E; + /* 0x04F */ bool field_0x04F; + /* 0x050 */ bool field_0x050; + /* 0x052 */ mAng3_c field_0x052; + /* 0x058 */ mAng3_c field_0x058; + /* 0x05E */ mAng field_0x05E; + /* 0x060 */ mAng field_0x060; + /* 0x062 */ mAng3_c field_0x062; + + /* 0x068*/ u8 _0x068[0x07C - 0x068]; + + /* 0x07C */ mAng field_0x07C; + /* 0x07E */ mAng field_0x07E; + /* 0x080 */ mAng field_0x080; + /* 0x082 */ mAng field_0x082; + /* 0x084 */ mAng field_0x084; + + /* 0x086*/ u8 _0x086[0x088 - 0x086]; + + /* 0x088 */ bool field_0x088; + /* 0x08C */ mVec3_c field_0x08C; + /* 0x098 */ f32 field_0x098; + + /* 0x09C*/ u8 _0x09C[0x0B4 - 0x09C]; + + /* 0x0B4 */ mAng field_0x0B4; + + /* 0x0B6*/ u8 _0x0B6[0x0E8 - 0x0B6]; + + /* 0x0E8 */ mMtx_c field_0x0E8; // ElbowR Transform + /* 0x118 */ mQuat_c field_0x118; // EbowR Rotation + /* 0x128 */ mVec3_c field_0x128; + + /* 0x134*/ u8 _0x134[0x164 - 0x134]; + + /* 0x164 */ mVec3_c field_0x164; // ElbowR Translation + + /* 0x170*/ u8 _0x170[0x17C - 0x170]; + + /* 0x17C */ mVec3_c field_0x17C; // ElbowR Scale + /* 0x188*/ u8 _0x188[0x18C - 0x188]; + /* 0x18C */ f32 field_0x188; // ElbowR distance to HandR? + /* 0x18C */ mVec3_c field_0x18C; // ElbowR Translation from ArmR? + /* 0x198 */ bool field_0x198; // ElbowR first Retrieve + /* 0x19C */ mMtx_c field_0x19C; // ArmR Transform + /* 0x1CC */ mQuat_c field_0x1CC; // ArmR Rotation + + /* 0x1DC*/ u8 _0x1DC[0x1E8 - 0x1DC]; + + /* 0x1E8 */ bool field_0x1E8; // ArmR first Retrieve + + /* 0x1E9*/ u8 _0x1E9[0x21C - 0x1E9]; + + /* 0x21C */ mVec3_c field_0x21C; // ArmR Translation + /* 0x228*/ mVec3_c field_0x228; // ArmR Scale + /* 0x234 */ f32 field_0x234; // ArmR Distance to Elbow? + /* 0x238 */ mAng field_0x238; + /* 0x23A */ mAng field_0x23A; + /* 0x23C */ mAng field_0x23C; + /* 0x23E */ mAng field_0x23E; + /* 0x240 */ mAng field_0x240; + /* 0x242 */ mAng field_0x242; + + /* 0x244*/ u8 _0x244[0x254 - 0x244]; + + /* 0x254 */ mVec3_c field_0x254; + /* 0x260 */ mVec3_c field_0x260; // HandR Translation + /* 0x26C */ mVec3_c field_0x26C; + /* 0x278 */ mMtx_c field_0x278; // HandR Transform + /* 0x2A8 */ mQuat_c field_0x2A8; // HandR Rotation + /* 0x2B8 */ bool field_0x2B8; // HandR First Retrieve + /* 0x2BA */ mAng field_0x2BA; // HandR Pitch + /* 0x2BC */ s16 field_0x2BC; + /* 0x2C0 */ nw4r::g3d::WorldMtxManip *field_0x2C0; + /* 0x2C4 */ nw4r::g3d::WorldMtxManip *field_0x2C4; + /* 0x2C8 */ dAcGirahimuBase_c *mpGhirahim; + /* 0x2CC */ f32 field_0x2CC; + /* 0x2D0 */ f32 field_0x2D0; // slerp interpolation + /* 0x2D4 */ f32 field_0x2D4; + /* 0x2D8 */ f32 field_0x2D8; + /* 0x2DC */ f32 field_0x2DC; + /* 0x2E0 */ mVec3_c field_0x2E0; + /* 0x2EC */ mVec3_c field_0x2EC; + }; + + enum AnmID_e { + ANM_WaitA = 0x00, + ANM_Walk = 0x01, + ANM_Catch = 0x02, + ANM_CatchLoop = 0x03, + ANM_Damage = 0x04, + ANM_GetSword = 0x05, + ANM_WaitBtB = 0x06, + ANM_AttackLSwordA = 0x07, + ANM_AttackLSwordB = 0x08, + ANM_GuardLSwordA = 0x09, + ANM_GuardLSwordB = 0x0A, + ANM_MovePose = 0x0B, + + ANM_PickUp02 = 0x0D, + ANM_PullCenter = 0x0E, + ANM_PullUp = 0x0F, + ANM_FreeCenter = 0x10, + ANM_FreeUp = 0x11, + ANM_LookSword = 0x12, + ANM_SwordAppear = 0x13, + ANM_WaitBtC = 0x14, + ANM_AttackPoseL = 0x15, + ANM_AttackLRun = 0x16, + ANM_AttackSwordL = 0x17, + ANM_AttackPoseR = 0x18, + ANM_AttackRRun = 0x19, + ANM_AttackSwordR = 0x1A, + ANM_PoseR = 0x1B, + ANM_PoseL = 0x1C, + ANM_PoseC = 0x1D, + ANM_PoseC2 = 0x1E, + ANM_PoseLR = 0x1F, + ANM_PoseLU = 0x20, + AMM_PoseRU = 0x21, + ANM_PoseUD = 0x22, + ANM_PoseLAttack = 0x23, + ANM_PoseRAttack = 0x24, + ANM_PoseCAttack = 0x25, + ANM_PoseCAttack2 = 0x26, + ANM_PoseLRAttack = 0x27, + ANM_PoseUDAttack = 0x28, + ANM_PoseLUAttack = 0x29, + ANM_PoseRUAttack = 0x2A, + + ANM_DamageHit = 0x2C, + ANM_DamageWait = 0x2D, + + ANM_Call = 0x30, + + ANM_AttackKnife = 0x32, + ANM_FaceTonuge = 0x33, + ANM_FaceSmaile = 0x34, + ANM_LSwordReturn = 0x35, + ANM_TurnL = 0x36, + ANM_TurnR = 0x37, + ANM_AttackBinta = 0x38, + ANM_StepStart = 0x39, + ANM_StepLoop = 0x3A, + ANM_StepEnd = 0x3B, + ANM_PoseUpper = 0x3C, + ANM_PoseFree = 0x3D, + + ANM_GuardTwoSword = 0x3F, + ANM_EndA = 0x40, + ANM_EndBLoop = 0x41, + ANM_EndC = 0x42, + ANM_EndDLoop = 0x43, + ANM_EndE = 0x44, + ANM_KnifeDamage = 0x45, + }; + + virtual int doDelete() override; + virtual int preExecute() override; + virtual int draw() override; + virtual bool createHeap() override; + virtual int actorPostCreate() override; + + /* vt 0x08C-0x094 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Wait); + /* vt 0x098-0x0A0 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Walk); + /* vt 0x0A4-0x0AC */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Panch); + /* vt 0x0B0-0x0B8 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Catch); + /* vt 0x0BC-0x0C4 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, CatchDamage); + /* vt 0x0C8-0x0D0 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, GetSword); + /* vt 0x0D4-0x0DC */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Link_SwordWait); + /* vt 0x0E0-0x0E8 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Link_SwordWalk); + /* vt 0x0EC-0x0F4 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Link_SwordAttack); + /* vt 0x0F8-0x100 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, ReturnSword); + /* vt 0x104-0x10C */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, LinkSwordGuardJust); + /* vt 0x110-0x118 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, SearchSword); + /* vt 0x11C-0x124 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, HomeWarp); + /* vt 0x128-0x130 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, PickUpSword); + /* vt 0x134-0x13C */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, ReleaseSword); + /* vt 0x140-0x148 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, BackStep); + /* vt 0x14C-0x154 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Escape); + /* vt 0x158-0x160 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, EscapeBack); + /* vt 0x164-0x16C */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, FrontWarp); + /* vt 0x170-0x178 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, FrontAttack); + /* vt 0x17C-0x184 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, BackWarp); + /* vt 0x188-0x190 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, BackAttack); + /* vt 0x194-0x19C */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Counter); + /* vt 0x1A0-0x1A8 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, Run); + /* vt 0x1AC-0x1B4 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, RunAttack); + /* vt 0x1B8-0x1C0 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, BackWalk); + /* vt 0x1C4-0x1CC */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, G_SwordDamage); + /* vt 0x1D0-0x1D8 */ STATE_VIRTUAL_FUNC_DECLARE(dAcGirahimuBase_c, KnifeDamage); + + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcGirahimuBase_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dAcGirahimuBase_c); + STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcGirahimuBase_c); + STATE_MGR_DEFINE_UTIL_GETSTATEID(dAcGirahimuBase_c); + + /* vt 0x1DC */ virtual void vt_0x1DC(); + /* vt 0x1E0 */ virtual void vt_0x1E0(); + /* vt 0x1E4 */ virtual void vt_0x1E4(); + /* vt 0x1E8 */ virtual void vt_0x1E8(); + /* vt 0x1EC */ virtual void vt_0x1EC(); + /* vt 0x1F0 */ virtual void vt_0x1F0(); + /* vt 0x1F4 */ virtual void vt_0x1F4(); + /* vt 0x1F8 */ virtual void vt_0x1F8(); + /* vt 0x1FC */ virtual void vt_0x1FC() {} + /* vt 0x200 */ virtual void vt_0x200(); + /* vt 0x204 */ virtual void vt_0x204(); + /* vt 0x208 */ virtual bool vt_0x208(); + /* vt 0x20C */ virtual void vt_0x20C(); + /* vt 0x210 */ virtual bool vt_0x210() { + return 0; + } + /* vt 0x214 */ virtual void vt_0x214(); + /* vt 0x218 */ virtual bool vt_0x218() { + return false; + } + /* vt 0x21C */ virtual void vt_0x21C(); + /* vt 0x220 */ virtual void vt_0x220(); + /* vt 0x224 */ virtual void vt_0x224() { + fn_226_8B70("PoseC", ANM_PoseC2, false, m3d::PLAY_MODE_4, 5.0f, 1.0f); + } + /* vt 0x228 */ virtual void vt_0x228(); + /* vt 0x22C */ virtual void vt_0x22C(); + /* vt 0x230 */ virtual void vt_0x230() { + 5.0f; + 1.0f; + "WalkBt"; + } + + void initNodeData(); + + void fn_226_8B70(const char *, s32 anmId, bool, m3d::playMode_e, f32, f32); + void fn_226_8C90( + const char *, s32 anmId0, const char *, s32 anmId1, const char *, s32 anmId2, m3d::playMode_e, f32, f32 + ); + void fn_226_8FF0(const char *, s32 anmId, m3d::playMode_e, f32, f32); + void fn_226_90C0(const char *, s32 anmId, m3d::playMode_e, f32, f32); + void fn_226_9190(const char *, s32 anmId, m3d::playMode_e, f32, f32); + void fn_226_9260(const char *, s32 anmId, m3d::playMode_e, f32, f32); + + void fn_226_A070(mAng); + void fn_226_AAD0(f32, f32); + void fn_226_AFB0(); + + void fn_226_B960(f32); + void fn_226_BC00(); + + void fn_226_CC40(); + bool fn_226_CC80(); + + void fn_226_D070(); + + bool turn(mAng); private: - /* 0x??? */ STATE_MGR_DECLARE(dAcGirahimuBase_c); + /* 0x0378 */ STATE_MGR_DECLARE(dAcGirahimuBase_c); + /* 0x03B4 */ m3d::mdl_c mMdlBody; + /* 0x03D8 */ m3d::anmChrBlend_c mAnmChrBlend; + /* 0x0400 */ nw4r::g3d::ResAnmChr mResAnmChr0; + /* 0x0404 */ nw4r::g3d::ResAnmChr mResAnmChr1; + /* 0x0408 */ m3d::anmChr_c mAnmChrs[5]; + /* 0x0520 */ dSoundSourceIf_c *pSoundIface; + /* 0x0524 */ UNKWORD field_0x534; + /* 0x0528 */ m3d::anmTexPat_c mAnmTexPatWink; + /* 0x0554 */ dNpcEyeMdlCallback_c mEyeMdlCallback; + /* 0x0584 */ + /* 0x0594 */ callback_c mCallback; + /* 0x088C */ mVec3_c field_0x88C; + + /* 0x08B0*/ mVec3_c field_0x8B0; + /* 0x08BC */ mVec3_c field_0x8BC; + /* 0x08C8 */ s16 field_0x8C8; + + /* 0x08CE */ s16 field_0x8CE; + /* 0x08D4 */ dShadowCircle_c mShadow; + /* 0x08DC */ s32 field_0x8DC; + /* 0x08E0 */ m3d::smdl_c mMdlPias; // Earring + + /* 0x0938 */ dBgS_AcchCir mAcchCir; + /* 0x0994 */ dBgS_ObjAcch mAcch; + + /* 0x0D44 */ s16 field_0xD44; + /* 0x0D46 */ s16 field_0xD46; + /* 0x0D48 */ s16 field_0xD48; + /* 0x0D4A */ s16 field_0xD4A; + /* 0x0D4C */ s16 field_0xD4C; + /* 0x0D4E */ s16 field_0xD4E; + /* 0x0D50 */ s16 field_0xD50; + /* 0x0D52 */ s16 field_0xD52; + /* 0x0D54 */ s16 field_0xD54; + /* 0x0D56 */ s16 field_0xD56; + /* 0x0D58 */ s16 field_0xD58; + /* 0x0D5A */ s16 field_0xD5A; + /* 0x0D5C */ s16 field_0xD5C; + /* 0x0D5E */ s16 field_0xD5E; + /* 0x0D60 */ s16 field_0xD60; + /* 0x0D62 */ s16 field_0xD62; + /* 0x0D64 */ s16 field_0xD64; + /* 0x0D66 */ s16 field_0xD66; + /* 0x0D68 */ s16 field_0xD68; + /* 0x0D6A */ s16 field_0xD6A; + /* 0x0D6C */ s32 field_0xD6C; + + /* 0xD71 */ bool field_0xD71; + /* 0xD72 */ bool field_0xD72; + + /* 0xD79 */ bool mbLinkSwordWaitFirstComplete; + + /* 0xD7B */ bool field_0xD7B; + /* 0xD7C */ bool field_0xD7C; + /* 0xD7D */ bool field_0xD7D; + /* 0xD7E */ bool field_0xD7E; + + /* 0xD80 */ bool field_0xD80; + /* 0xD81 */ bool field_0xD81; + /* 0xD82 */ bool field_0xD82; + + /* 0xD8D */ bool field_0xD8D; + /* 0xD8E */ s16 field_0xD8E; + + /* 0x0D94 */ dEnemySwordMdl_c mMdlSwordA; + /* 0x12E4 */ dEnemySwordMdl_c mMdlSwordB; + + /* 0x1834 */ f32 field_0x1834; + /* 0x1838 */ f32 field_0x1838; + /* 0x183A */ mAng field_0x183A; + /* 0x183E */ mAng field_0x183E; + + /* 0x1858 */ f32 field_0x1858; + + /* 0x1868 */ f32 field_0x1868; + + /* 0x1871 */ bool field_0x1871; + /* 0x1872 */ bool field_0x1872; + + /* 0x1878 */ dCcD_Cyl mCyl0; + /* 0x19C8 */ dCcD_Cyl mCyl1; + /* 0x1B18 */ dCcD_Linked<dCcD_Cyl> mCyl2; + /* 0x1C78 */ dCcD_Linked<dCcD_Sph> mSph0; + /* 0x1DD8 */ dCcD_Linked<dCcD_Cps> mCps0; + /* 0x1F58 */ dCcD_Linked<dCcD_Cps> mCps1; + /* 0x20D8 */ dColliderLinkedList mCollider; + + /* 0x2104 */ dAcObjRef_c mRef0; + /* 0x2110 */ dAcRef_c<dAcObjGirahimuSwordLink_c> mSwordLink; + /* 0x211C */ dFlow_c mFlow; + /* 0x2180 */ dFlowMgrBase_c mFlowMgr; + /* 0x21D8 */ dEmitter_c mEmitter; }; #endif diff --git a/include/d/a/obj/d_a_obj_girahimu_sword_link.h b/include/d/a/obj/d_a_obj_girahimu_sword_link.h index 7dc57214..bf2592af 100644 --- a/include/d/a/obj/d_a_obj_girahimu_sword_link.h +++ b/include/d/a/obj/d_a_obj_girahimu_sword_link.h @@ -37,6 +37,10 @@ public: void reflect(const mVec3_c &rot, f32 gravity, f32, f32 force); bool lineCheck(); + dEnemySwordMdl_c &getMdl() { + return mMdl; + } + STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Hide); STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Equip); STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, GetSword); |
