diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index b8b1ba29fa4..0e2e4b29826 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -124,9 +124,20 @@ public: cCcD_TriAttr() {} }; +struct cCcD_SrcCpsAttr { + cM3dGCpsS mCps; +}; + class cCcD_CpsAttr : public cCcD_ShapeAttr, public cM3dGCps { public: cCcD_CpsAttr() {} + void Set(const cCcD_SrcCpsAttr& pSrc) { + cM3dGCps::Set(pSrc.mCps); + } + void Set(const cXyz& pStart, const cXyz& pEnd, float radius) { + cM3dGCps::Set(pStart, pEnd, radius); + } + /* 80085450 */ virtual ~cCcD_CpsAttr() {} /* 80263DC0 */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; /* 80263E04 */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const; @@ -152,13 +163,15 @@ public: STATIC_ASSERT(0x40 == sizeof(cCcD_CpsAttr)); -class cCcD_SrcSphAttr : public cM3dGSphS {}; +struct cCcD_SrcSphAttr { + cM3dGSphS mSph; +}; class cCcD_SphAttr : public cCcD_ShapeAttr, public cM3dGSph { public: cCcD_SphAttr() {} void Set(const cCcD_SrcSphAttr& src) { - cM3dGSph::Set(src); + cM3dGSph::Set(src.mSph); } /* 8008721C */ virtual ~cCcD_SphAttr() {} @@ -339,8 +352,9 @@ public: s32 getSPrm() const { return mSPrm; } void setRPrm(s32 rprm) { mRPrm = rprm; } s32 getRPrm() const { return mRPrm; } - cCcD_Obj* getHitObj() { return mHitObj; } + cCcD_Obj* GetHitObj() { return mHitObj; } u32 MskSPrm(u32 mask) const { return mSPrm & mask; } + u32 MskRPrm(u32 mask) { return mRPrm & mask; } void OnSPrmBit(u32 flag) { mSPrm |= flag; } void OffSPrmBit(u32 flag) { mSPrm &= ~flag; } }; @@ -362,6 +376,7 @@ public: void SetType(u32 type) { mType = type; } void SetAtp(int atp) { mAtp = atp; } void ClrSet() { OffSPrmBit(1); } + u32 ChkHit() { return MskRPrm(1); } protected: /* 0x10 */ int mType; @@ -383,6 +398,7 @@ public: u32 GetGrp() const { return MskSPrm(0x1E); } bool ChkSet() const { return MskSPrm(1); } void ClrSet() { OffSPrmBit(1); } + u32 ChkHit() { return MskRPrm(1); } private: /* 0x10 */ int mType; @@ -404,6 +420,7 @@ public: u32 ChkNoCrr() const { return MskSPrm(0x100); } u32 ChkSph3DCrr() const { return MskSPrm(0x80); } void ClrSet() { OffSPrmBit(1); } + u32 ChkHit() { return MskRPrm(1); } }; STATIC_ASSERT(0x10 == sizeof(cCcD_ObjCo)); @@ -460,6 +477,15 @@ public: void OnCoSPrmBit(u32 flag) { mObjCo.OnSPrmBit(flag); } void SetTgSPrm(u32 prm) { mObjTg.SetSPrm(prm); } void SetCoSPrm(u32 prm) { mObjCo.SetSPrm(prm); } + void ClrAtHit() { mObjAt.ClrHit(); } + void ClrTgHit() { mObjTg.ClrHit(); } + void ClrCoHit() { mObjCo.ClrHit(); } + u32 ChkAtHit() { return mObjAt.ChkHit(); } + u32 ChkTgHit() { return mObjTg.ChkHit(); } + u32 ChkCoHit() { return mObjCo.ChkHit(); } + cCcD_Obj* GetAtHitObj() { return mObjAt.GetHitObj(); } + cCcD_Obj* GetTgHitObj() { return mObjTg.GetHitObj(); } + cCcD_Obj* GetCoHitObj() { return mObjCo.GetHitObj(); } }; // Size = 0x40 diff --git a/include/SSystem/SComponent/c_m3d_g_cyl.h b/include/SSystem/SComponent/c_m3d_g_cyl.h index 8e8d3936891..f9a895741f3 100644 --- a/include/SSystem/SComponent/c_m3d_g_cyl.h +++ b/include/SSystem/SComponent/c_m3d_g_cyl.h @@ -31,7 +31,7 @@ public: bool cross(const cM3dGSph*, cXyz*) const; bool cross(const cM3dGCyl*, cXyz*) const; void calcMinMax(cXyz*, cXyz*); - const cXyz& GetCP(void) const { return mCenter; } + const cXyz* GetCP(void) const { return &mCenter; } f32 GetR(void) const { return mRadius; } f32 GetH(void) const { return mHeight; } cXyz& GetC() { return mCenter; } diff --git a/include/SSystem/SComponent/c_m3d_g_sph.h b/include/SSystem/SComponent/c_m3d_g_sph.h index 494521fa016..e1a09de2ada 100644 --- a/include/SSystem/SComponent/c_m3d_g_sph.h +++ b/include/SSystem/SComponent/c_m3d_g_sph.h @@ -30,6 +30,7 @@ public: bool cross(const cM3dGCyl*, cXyz*) const; void GetMinMaxCube(cXyz&, cXyz&) const; const cXyz& GetC(void) const { return mCenter; } + const cXyz* GetCP() const { return &mCenter; } const f32 GetR(void) const { return mRadius; } f32 GetCX(void) const { return mCenter.x; } f32 GetCY(void) const { return mCenter.y; } diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h index 66c72175990..83d8714930a 100644 --- a/include/d/cc/d_cc_d.h +++ b/include/d/cc/d_cc_d.h @@ -7,6 +7,7 @@ */ #include "SSystem/SComponent/c_cc_d.h" +#include "Z2AudioLib/Z2SeMgr.h" #include "dolphin/types.h" enum dCcD_hitSe { @@ -66,16 +67,20 @@ struct dCcD_SrcGObjTg { /* 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_SrcGAtTgCoCommonBase mGObjCo; + /* 0x2C */ dCcD_SrcGObjCo mGObjCo; }; // Size: 0x30 struct dCcD_SrcSph { /* 0x00 */ dCcD_SrcGObjInf mObjInf; - /* 0x30 */ cM3dGSphS mSph; + /* 0x30 */ cCcD_SrcSphAttr mSphAttr; }; // Size: 0x40 struct dCcD_SrcTri { @@ -89,7 +94,7 @@ struct dCcD_SrcCyl { struct dCcD_SrcCps { /* 0x00 */ dCcD_SrcGObjInf mObjInf; - /* 0x30 */ cM3dGCpsS mCps; + /* 0x30 */ cCcD_SrcCpsAttr mCpsAttr; }; // Size: 0x4C class dCcD_GStts : public cCcD_GStts { @@ -98,6 +103,7 @@ public: /* 800837F8 */ void Ct(); /* 80083830 */ void Move(); /* 8008523C */ virtual ~dCcD_GStts() {} + void ClrAt() { mAt = 0; } void ClrTg() { mTg = 0; } void SetAtApid(unsigned int id) { mAtApid = id; } void SetTgApid(unsigned int id) { mTgApid = id; } @@ -111,6 +117,7 @@ public: 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; @@ -127,11 +134,11 @@ public: class dCcD_Stts : public cCcD_Stts, public dCcD_GStts { public: dCcD_Stts() {} - /* 80083850 */ cCcD_GStts* GetGStts(); + /* 80083850 */ virtual cCcD_GStts* GetGStts(); /* 80083860 */ void Init(int, int, fopAc_ac_c*); - /* 800838F4 */ void Ct(); - /* 80083928 */ void ClrAt(); - /* 80083934 */ void ClrTg(); + /* 800838F4 */ virtual void Ct(); + /* 80083928 */ virtual void ClrAt(); + /* 80083934 */ virtual void ClrTg(); /* 800851AC */ virtual ~dCcD_Stts() {} }; // Size = 0x3C @@ -164,7 +171,7 @@ public: /* 80083748 */ bool ChkEffCounter(); /* 80083CA0 */ virtual ~dCcD_GAtTgCoCommonBase() {} - void ResetEffCounter() { mEffCounter = 0; } + void ClrEffCounter() { mEffCounter = 0; } u32 GetGFlag() const { return mGFlag; } u32 GetRPrm() const { return mRPrm; } u32 MskSPrm(u32 mask) const { return mGFlag & mask; } @@ -173,9 +180,11 @@ public: 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 @@ -243,6 +252,7 @@ private: class dCcD_GObjCo : public dCcD_GAtTgCoCommonBase { public: /* 80083B8C */ virtual ~dCcD_GObjCo() {} + void Set(dCcD_SrcGObjCo const& pSrc) { dCcD_GAtTgCoCommonBase::Set(pSrc.mBase); } }; // Size = 0x1C ? // Object Info @@ -250,21 +260,21 @@ class dCcD_GObjInf : public cCcD_GObjInf { public: /* 80083A28 */ dCcD_GObjInf(); /* 800840E4 */ virtual ~dCcD_GObjInf(); - /* 80084268 */ cCcD_GObjInf* GetGObjInf(); + /* 80084268 */ virtual cCcD_GObjInf* GetGObjInf(); /* 8008426C */ virtual void ClrAtHit(); /* 800842C0 */ u32 ChkAtHit(); /* 80084318 */ void ResetAtHit(); /* 80084358 */ cCcD_Obj* GetAtHitObj(); /* 800843A8 */ cCcD_GObjInf* GetAtHitGObj(); - /* 800843DC */ bool ChkAtNoGuard(); - /* 800843FC */ void ClrTgHit(); + /* 800843DC */ u8 ChkAtNoGuard(); + /* 800843FC */ virtual void ClrTgHit(); /* 80084460 */ u32 ChkTgHit(); /* 800844B8 */ void ResetTgHit(); /* 800844F8 */ cCcD_Obj* GetTgHitObj(); /* 80084548 */ dCcD_GObjInf* GetTgHitGObj(); /* 8008457C */ u8 GetTgHitObjSe(); - /* 800845B0 */ static u32 getHitSeID(u8, int); - /* 8008460C */ void ClrCoHit(); + /* 800845B0 */ static Z2SoundID getHitSeID(u8, int); + /* 8008460C */ virtual void ClrCoHit(); /* 80084658 */ u32 ChkCoHit(); /* 800846B0 */ void ResetCoHit(); /* 800846F0 */ cCcD_Obj* GetCoHitObj(); @@ -273,6 +283,7 @@ public: 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); } @@ -326,8 +337,14 @@ public: 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); } @@ -338,17 +355,26 @@ public: 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); } u32 GetTgHitObjHitSeID(int i_soundID) { return getHitSeID(GetTgHitObjSe(),i_soundID); } - static u32 const m_hitSeID[24]; + static const Z2SoundID m_hitSeID[24]; protected: /* 0x058 */ dCcD_GObjAt mGObjAt; diff --git a/libs/SSystem/SComponent/c_m3d.cpp b/libs/SSystem/SComponent/c_m3d.cpp index c9c83afa104..148318f8251 100644 --- a/libs/SSystem/SComponent/c_m3d.cpp +++ b/libs/SSystem/SComponent/c_m3d.cpp @@ -296,17 +296,17 @@ bool cM3d_Cross_AabAab(const cM3dGAab* pAabA, const cM3dGAab* pAabB) { /* 80268B0C-80268BB4 26344C 00A8+00 0/0 4/4 0/0 .text cM3d_Cross_AabCyl__FPC8cM3dGAabPC8cM3dGCyl */ bool cM3d_Cross_AabCyl(const cM3dGAab* pAab, const cM3dGCyl* pCyl) { - if (pAab->getMinP().x > pCyl->GetCP().x + pCyl->GetR()) { + if (pAab->getMinP().x > pCyl->GetCP()->x + pCyl->GetR()) { return false; - } else if (pAab->getMaxP().x < pCyl->GetCP().x - pCyl->GetR()) { + } else if (pAab->getMaxP().x < pCyl->GetCP()->x - pCyl->GetR()) { return false; - } else if (pAab->getMinP().z > pCyl->GetCP().z + pCyl->GetR()) { + } else if (pAab->getMinP().z > pCyl->GetCP()->z + pCyl->GetR()) { return false; - } else if (pAab->getMaxP().z < pCyl->GetCP().z - pCyl->GetR()) { + } else if (pAab->getMaxP().z < pCyl->GetCP()->z - pCyl->GetR()) { return false; - } else if (pAab->getMinP().y > pCyl->GetCP().y + pCyl->GetH()) { + } else if (pAab->getMinP().y > pCyl->GetCP()->y + pCyl->GetH()) { return false; - } else if (pAab->getMaxP().y < pCyl->GetCP().y) { + } else if (pAab->getMaxP().y < pCyl->GetCP()->y) { return false; } else { return true; @@ -1002,11 +1002,11 @@ static int cM3d_Cross_CylPntPnt(const cM3dGCyl* pCylinder, const Vec* pVecStart, /* 8026D0B0-8026D114 2679F0 0064+00 2/2 0/0 0/0 .text cM3d_Cross_CylPnt__FPC8cM3dGCylPC3Vec */ bool cM3d_Cross_CylPnt(const cM3dGCyl* pCylinder, const Vec* pPoint) { - f32 dX = pCylinder->GetCP().getXDiff(pPoint); - f32 dZ = pCylinder->GetCP().getZDiff(pPoint); - f32 maxY = pCylinder->GetCP().y + pCylinder->GetH(); + f32 dX = pCylinder->GetCP()->getXDiff(pPoint); + f32 dZ = pCylinder->GetCP()->getZDiff(pPoint); + f32 maxY = pCylinder->GetCP()->y + pCylinder->GetH(); if (dX * dX + dZ * dZ < pCylinder->GetR() * pCylinder->GetR() && - pCylinder->GetCP().y < pPoint->y && maxY > pPoint->y) { + pCylinder->GetCP()->y < pPoint->y && maxY > pPoint->y) { return true; } else { return false; diff --git a/rel/d/a/d_a_crod/d_a_crod.cpp b/rel/d/a/d_a_crod/d_a_crod.cpp index e031eeb2394..fa29b20f33f 100644 --- a/rel/d/a/d_a_crod/d_a_crod.cpp +++ b/rel/d/a/d_a_crod/d_a_crod.cpp @@ -70,10 +70,12 @@ static dCcD_SrcCps l_atCpsSrc = { {0}, }, { - {0.0f, 0.0f, 0.0f}, - {0.0f, 0.0f, 0.0f}, - 20.0f, - }, + { + {0.0f, 0.0f, 0.0f}, + {0.0f, 0.0f, 0.0f}, + 20.0f, + }, + } }; /* 804A2F18-804A31F8 000158 02E0+00 1/1 0/0 0/0 .text create__8daCrod_cFv */ diff --git a/rel/d/a/d_a_hitobj/d_a_hitobj.cpp b/rel/d/a/d_a_hitobj/d_a_hitobj.cpp index b391295804f..231a5556e03 100644 --- a/rel/d/a/d_a_hitobj/d_a_hitobj.cpp +++ b/rel/d/a/d_a_hitobj/d_a_hitobj.cpp @@ -51,9 +51,11 @@ static dCcD_SrcSph cc_sph_src = { {0}, }, { - {0.0f, 0.0f, 0.0f}, - 100.0f, - }, + { + {0.0f, 0.0f, 0.0f}, + 100.0f, + }, + } }; /* 8046B400-8046B53C 000120 013C+00 1/0 0/0 0/0 .text daHitobj_Create__FP10fopAc_ac_c */ diff --git a/rel/d/a/e/d_a_e_ym/d_a_e_ym.cpp b/rel/d/a/e/d_a_e_ym/d_a_e_ym.cpp index f9e92762bf5..e6e104c125d 100644 --- a/rel/d/a/e/d_a_e_ym/d_a_e_ym.cpp +++ b/rel/d/a/e/d_a_e_ym/d_a_e_ym.cpp @@ -436,9 +436,11 @@ dCcD_SrcSph E_YM_n::cc_sph_src = { {0}, }, { - {0.0f, 0.0f, 0.0f}, - 40.0f, - }, + { + {0.0f, 0.0f, 0.0f}, + 40.0f, + }, + } }; /* 80815B7C-80815B84 000078 0008+00 0/0 0/0 0/0 .data w_eff_id$5427 */ diff --git a/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp b/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp index 31f931b973a..803ca22165d 100644 --- a/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp +++ b/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp @@ -198,9 +198,11 @@ const static dCcD_SrcSph l_sph_src = { {0}, }, { - {0.0f, 0.0f, 0.0f}, - 50.0f, - }, + { + {0.0f, 0.0f, 0.0f}, + 50.0f, + }, + } }; COMPILER_STRIP_GATE(0x80CECABC, &l_sph_src); #pragma pop diff --git a/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp b/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp index 374042f83f8..9f4b95d22a5 100644 --- a/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp +++ b/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp @@ -410,9 +410,11 @@ static const dCcD_SrcSph l_sph_src = { {0}, }, { - {0.0f, 0.0f, 0.0f}, - 100.0f, - }, + { + {0.0f, 0.0f, 0.0f}, + 100.0f, + }, + } }; /* 80D23E0C-80D23E10 000040 0004+00 2/6 0/0 0/0 .rodata @3715 */ diff --git a/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0.cpp b/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0.cpp index d292238a6e4..14ef764cf3e 100644 --- a/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0.cpp +++ b/rel/d/a/obj/d_a_obj_web0/d_a_obj_web0.cpp @@ -378,9 +378,11 @@ static int daObj_Web0_Create(fopAc_ac_c* i_this) { {0}, }, { - {0.0f, 0.0f, 0.0f}, - 40.0f, - }, + { + {0.0f, 0.0f, 0.0f}, + 40.0f, + }, + } }; int phase = dComIfG_resLoad(&_this->mPhase, "Obj_web0"); diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index 479d1da91ae..22256973436 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -11287,8 +11287,10 @@ static dCcD_SrcSph l_sphSrc = { {0}, }, { - {0.0f, 0.0f, 0.0f}, - 40.0f, + { + {0.0f, 0.0f, 0.0f}, + 40.0f, + } }, }; @@ -11316,9 +11318,11 @@ static dCcD_SrcCps l_atCpsSrc = { {0}, }, { - {0.0f, 0.0f, 0.0f}, - {0.0f, 0.0f, 0.0f}, - 20.0f, + { + {0.0f, 0.0f, 0.0f}, + {0.0f, 0.0f, 0.0f}, + 20.0f, + } }, }; diff --git a/src/d/cc/d_cc_d_nonmatching.cpp b/src/d/cc/d_cc_d_nonmatching.cpp index a67067aa585..acde826b654 100644 --- a/src/d/cc/d_cc_d_nonmatching.cpp +++ b/src/d/cc/d_cc_d_nonmatching.cpp @@ -16,13 +16,13 @@ /* 8008364C-80083660 07DF8C 0014+00 3/3 0/0 0/0 .text ClrActorInfo__22dCcD_GAtTgCoCommonBaseFv */ void dCcD_GAtTgCoCommonBase::ClrActorInfo() { - mApid = 0xFFFFFFFF; + mApid = -1; mAc = NULL; } /* 80083660-80083678 07DFA0 0018+00 1/1 0/0 0/0 .text ct__22dCcD_GAtTgCoCommonBaseFv */ void dCcD_GAtTgCoCommonBase::ct() { - mGFlag = NULL; + mGFlag = 0; mRPrm = 0; mHitCallback = NULL; mEffCounter = 0; @@ -36,18 +36,16 @@ void dCcD_GAtTgCoCommonBase::SetHitApid(unsigned int hitApid) { /* 80083688-80083704 07DFC8 007C+00 6/6 17/17 43/43 .text GetAc__22dCcD_GAtTgCoCommonBaseFv */ fopAc_ac_c* dCcD_GAtTgCoCommonBase::GetAc() { - if (mApid == 0xFFFFFFFF) { + if (mApid == -1) { return NULL; - } else { - if (mAc == NULL) { - u32 apid = mApid; - mAc = static_cast(fopAcIt_Judge(fpcSch_JudgeByID, &apid)); - if (mAc == NULL) { - mApid = 0xFFFFFFFF; - } - } - return mAc; } + if (mAc == NULL) { + mAc = fopAcM_SearchByID(mApid); + if (mAc == NULL) { + mApid = -1; + } + } + return mAc; } /* 80083704-80083718 07E044 0014+00 3/3 0/0 0/0 .text @@ -82,11 +80,11 @@ dCcD_GStts::dCcD_GStts() { mAt = 0; mTg = 0; mRoomId = 0; - field_0x08 = 0xFFFF; - mAtApid = 0xFFFFFFFF; - mAtOldApid = 0xFFFFFFFF; - mTgApid = 0xFFFFFFFF; - mTgOldApid = 0xFFFFFFFF; + field_0x08 = -1; + mAtApid = -1; + mAtOldApid = -1; + mTgApid = -1; + mTgOldApid = -1; field_0x1C = 0; } @@ -95,11 +93,11 @@ void dCcD_GStts::Ct() { mAt = 0; mTg = 0; mRoomId = 0; - field_0x08 = 0xFFFF; - mAtApid = 0xFFFFFFFF; - mAtOldApid = 0xFFFFFFFF; - mTgApid = 0xFFFFFFFF; - mTgOldApid = 0xFFFFFFFF; + field_0x08 = -1; + mAtApid = -1; + mAtOldApid = -1; + mTgApid = -1; + mTgOldApid = -1; field_0x1C = 0; } @@ -122,7 +120,7 @@ void dCcD_Stts::Init(int param_0, int param_1, fopAc_ac_c* pActor) { if (pActor != NULL) { actorPid = fopAcM_GetID(pActor); } else { - actorPid = 0xFFFFFFFF; + actorPid = -1; } cCcD_Stts::Init(param_0, param_1, pActor, actorPid); @@ -132,13 +130,13 @@ void dCcD_Stts::Init(int param_0, int param_1, fopAc_ac_c* pActor) { roomNo = fopAcM_GetRoomNo(pActor); } else { roomNo = 0; - field_0x1C |= 1; + OnNoActor(); } if (roomNo != -1) { - mRoomId = roomNo; + SetRoomId(roomNo); } else { - mRoomId = 0; + SetRoomId(0); } } @@ -150,7 +148,8 @@ void dCcD_Stts::Ct() { /* 80083928-80083934 07E268 000C+00 1/0 0/0 0/0 .text ClrAt__9dCcD_SttsFv */ void dCcD_Stts::ClrAt() { - mAt = 0; + cCcD_Stts::ClrAt(); + dCcD_GStts::ClrAt(); } /* 80083934-80083944 07E274 0010+00 1/0 0/0 0/0 .text ClrTg__9dCcD_SttsFv */ @@ -191,18 +190,18 @@ cCcD_GObjInf* dCcD_GObjInf::GetGObjInf() { /* 8008426C-800842C0 07EBAC 0054+00 5/0 0/0 0/0 .text ClrAtHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ClrAtHit() { - mObjAt.ClrHit(); - mGObjAt.ClrActorInfo(); - mGObjAt.mRPrm &= ~1; - mGObjAt.mRPrm &= ~2; - mGObjAt.SubtractEffCounter(); + cCcD_ObjHitInf::ClrAtHit(); + mGObjAt.ClrHit(); + OffAtShieldHit(); + OffAtHitNoActor(); + SubtractAtEffCounter(); } /* 800842C0-80084318 07EC00 0058+00 0/0 12/12 78/78 .text ChkAtHit__12dCcD_GObjInfFv */ -s32 dCcD_GObjInf::ChkAtHit() { - if ((mObjAt.getRPrm() & 1) == 0) { +u32 dCcD_GObjInf::ChkAtHit() { + if (cCcD_ObjHitInf::ChkAtHit() == 0) { return 0; - } else if ((mGObjAt.mRPrm & 2) == 0 && mGObjAt.GetAc() == NULL) { + } else if (ChkAtHitNoActor() == 0 && GetAtHitAc() == NULL) { return 0; } else { return 1; @@ -212,15 +211,15 @@ s32 dCcD_GObjInf::ChkAtHit() { /* 80084318-80084358 07EC58 0040+00 0/0 10/10 7/7 .text ResetAtHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ResetAtHit() { ClrAtHit(); - mGObjAt.mEffCounter = 0; + ClrAtEffCounter(); } /* 80084358-800843A8 07EC98 0050+00 1/1 0/0 31/31 .text GetAtHitObj__12dCcD_GObjInfFv */ cCcD_Obj* dCcD_GObjInf::GetAtHitObj() { - if ((mGObjAt.mRPrm & 2) == 0 && mGObjAt.GetAc() == NULL) { + if (ChkAtHitNoActor() == 0 && GetAtHitAc() == NULL) { return NULL; } else { - return mObjAt.getHitObj(); + return cCcD_ObjHitInf::GetAtHitObj(); } } @@ -235,36 +234,25 @@ cCcD_GObjInf* dCcD_GObjInf::GetAtHitGObj() { } /* 800843DC-800843FC 07ED1C 0020+00 0/0 1/1 0/0 .text ChkAtNoGuard__12dCcD_GObjInfFv */ -#ifdef NONMATCHING -bool dCcD_GObjInf::ChkAtNoGuard() { - return 12 < mGObjAt.mSpl; +u8 dCcD_GObjInf::ChkAtNoGuard() { + return GetAtSpl() >= 12; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dCcD_GObjInf::ChkAtNoGuard() { - nofralloc -#include "asm/d/cc/d_cc_d/ChkAtNoGuard__12dCcD_GObjInfFv.s" -} -#pragma pop -#endif /* 800843FC-80084460 07ED3C 0064+00 5/0 0/0 0/0 .text ClrTgHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ClrTgHit() { - mObjTg.ClrHit(); - mGObjTg.ClrActorInfo(); - mGObjTg.mRPrm &= ~1; - mGObjTg.mRPrm &= ~2; - mGObjTg.mRPrm &= ~4; - mGObjTg.SubtractEffCounter(); + cCcD_ObjHitInf::ClrTgHit(); + mGObjTg.ClrHit(); + OffTgHitNoActor(); + OffTgShieldHit(); + OffTgMagneHit(); + SubtractTgEffCounter(); } /* 80084460-800844B8 07EDA0 0058+00 0/0 6/6 305/305 .text ChkTgHit__12dCcD_GObjInfFv */ -bool dCcD_GObjInf::ChkTgHit() { - if ((mObjTg.getRPrm() & 1) == 0) { +u32 dCcD_GObjInf::ChkTgHit() { + if (cCcD_ObjHitInf::ChkTgHit() == 0) { return false; - } else if ((mGObjTg.mRPrm & 1) == 0 && mGObjTg.GetAc() == NULL) { + } else if (ChkTgHitNoActor() == 0 && GetTgHitAc() == NULL) { return false; } else { return true; @@ -274,16 +262,16 @@ bool dCcD_GObjInf::ChkTgHit() { /* 800844B8-800844F8 07EDF8 0040+00 0/0 1/1 5/5 .text ResetTgHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ResetTgHit() { ClrTgHit(); - mGObjTg.mEffCounter = 0; + ClrTgEffCounter(); } /* 800844F8-80084548 07EE38 0050+00 1/1 3/3 228/228 .text GetTgHitObj__12dCcD_GObjInfFv */ cCcD_Obj* dCcD_GObjInf::GetTgHitObj() { - if ((mGObjTg.mRPrm & 1) == 0 && mGObjTg.GetAc() == NULL) { + if (ChkTgHitNoActor() == 0 && GetTgHitAc() == NULL) { return NULL; } else { - return mObjTg.getHitObj(); + return cCcD_ObjHitInf::GetTgHitObj(); } } @@ -304,13 +292,13 @@ u8 dCcD_GObjInf::GetTgHitObjSe() { if (objInf == NULL) { return NULL; } else { - return objInf->mGObjAt.mSe; + return objInf->GetAtSe(); } } /* ############################################################################################## */ /* 8037A780-8037A7E0 006DE0 0060+00 1/1 0/0 0/0 .rodata m_hitSeID__12dCcD_GObjInf */ -u32 const dCcD_GObjInf::m_hitSeID[24] = { +Z2SoundID const dCcD_GObjInf::m_hitSeID[24] = { Z2SE_HIT_DUMMY_CANCEL, Z2SE_HIT_SWORD, Z2SE_HIT_SHIELD_ATTACK, Z2SE_HIT_WOLFKICK, Z2SE_HIT_HOOKSHOT_STICK, Z2SE_HIT_METAL_WEAPON, Z2SE_HIT_STONE_WEAPON, Z2SE_HIT_HARD_BODY, Z2SE_HIT_SOFT_BODY, @@ -322,7 +310,7 @@ u32 const dCcD_GObjInf::m_hitSeID[24] = { }; /* 800845B0-8008460C 07EEF0 005C+00 0/0 3/3 32/32 .text getHitSeID__12dCcD_GObjInfFUci */ -u32 dCcD_GObjInf::getHitSeID(u8 seIdx, int useRebound) { +Z2SoundID dCcD_GObjInf::getHitSeID(u8 seIdx, int useRebound) { if (useRebound) { if (seIdx == 23) { return Z2SE_HIT_AL_ARROW_REBOUND; @@ -339,17 +327,17 @@ u32 dCcD_GObjInf::getHitSeID(u8 seIdx, int useRebound) { /* 8008460C-80084658 07EF4C 004C+00 5/0 0/0 0/0 .text ClrCoHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ClrCoHit() { - mObjCo.ClrHit(); - mGObjCo.ClrActorInfo(); - mGObjCo.mRPrm &= ~1; - mGObjCo.SubtractEffCounter(); + cCcD_ObjHitInf::ClrCoHit(); + mGObjCo.ClrHit(); + OffCoHitNoActor(); + SubtractCoEffCounter(); } /* 80084658-800846B0 07EF98 0058+00 0/0 5/5 74/74 .text ChkCoHit__12dCcD_GObjInfFv */ -bool dCcD_GObjInf::ChkCoHit() { - if ((mObjCo.getRPrm() & 1) == 0) { +u32 dCcD_GObjInf::ChkCoHit() { + if (cCcD_ObjHitInf::ChkCoHit() == 0) { return false; - } else if ((mGObjCo.mRPrm & 1) == 0 && mGObjCo.GetAc() == NULL) { + } else if (ChkCoHitNoActor() == 0 && GetCoHitAc() == NULL) { return false; } else { return true; @@ -359,15 +347,15 @@ bool dCcD_GObjInf::ChkCoHit() { /* 800846B0-800846F0 07EFF0 0040+00 0/0 1/1 2/2 .text ResetCoHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ResetCoHit() { ClrCoHit(); - mGObjCo.ResetEffCounter(); + ClrCoEffCounter(); } /* 800846F0-80084740 07F030 0050+00 0/0 0/0 36/36 .text GetCoHitObj__12dCcD_GObjInfFv */ cCcD_Obj* dCcD_GObjInf::GetCoHitObj() { - if ((mGObjCo.mRPrm & 1) == 0 && mGObjCo.GetAc() == NULL) { + if (ChkCoHitNoActor() == 0 && GetCoHitAc() == NULL) { return NULL; } else { - return mObjCo.getHitObj(); + return cCcD_ObjHitInf::GetCoHitObj(); } } @@ -387,7 +375,7 @@ dCcD_GObjInf* dCcD_GetGObjInf(cCcD_Obj* p_obj) { /* 800847D0-80084814 07F110 0044+00 0/0 1/1 20/20 .text Set__8dCcD_CpsFRC11dCcD_SrcCps */ void dCcD_Cps::Set(dCcD_SrcCps const& src) { dCcD_GObjInf::Set(src.mObjInf); - cCcD_CpsAttr::Set(src.mCps); + cCcD_CpsAttr::Set(src.mCpsAttr); } /* 80084814-80084824 07F154 0010+00 1/0 0/0 0/0 .text GetShapeAttr__8dCcD_CpsFv */ @@ -397,14 +385,14 @@ cCcD_ShapeAttr* dCcD_Cps::GetShapeAttr() { /* 80084824-80084854 07F164 0030+00 0/0 0/0 6/6 .text CalcAtVec__8dCcD_CpsFv */ void dCcD_Cps::CalcAtVec() { - cXyz& dest = mGObjAt.GetVec(); - PSVECSubtract(&GetEndP(), &GetStartP(), &dest); + cXyz* dest = GetAtVecP(); + CalcVec(dest); } /* 80084854-80084884 07F194 0030+00 0/0 0/0 2/2 .text CalcTgVec__8dCcD_CpsFv */ void dCcD_Cps::CalcTgVec() { - cXyz& dest = mGObjTg.GetVec(); - PSVECSubtract(&GetEndP(), &GetStartP(), &dest); + cXyz* dest = GetTgVecP(); + CalcVec(dest); } /* 80084884-800848A4 07F1C4 0020+00 0/0 0/0 5/5 .text Set__8dCcD_TriFRC11dCcD_SrcTri */ @@ -431,28 +419,24 @@ cCcD_ShapeAttr* dCcD_Cyl::GetShapeAttr() { /* 80084908-80084954 07F248 004C+00 0/0 3/3 3/3 .text StartCAt__8dCcD_CylFR4cXyz */ void dCcD_Cyl::StartCAt(cXyz& pos) { - cXyz zero = cXyz::Zero; - mGObjAt.SetVec(zero); + cXyz zero(cXyz::Zero); + SetAtVec(zero); SetC(pos); } -inline void vecDiff(cXyz& out, const cXyz& a, const cXyz& b) { - out = a - b; -} - /* 80084954-800849C4 07F294 0070+00 0/0 3/3 4/4 .text MoveCAt__8dCcD_CylFR4cXyz */ void dCcD_Cyl::MoveCAt(cXyz& pos) { - cXyz diff; - vecDiff(diff, pos, GetCP()); - mGObjAt.SetVec(diff); + const cXyz* center = GetCP(); + cXyz diff = pos - *center; + SetAtVec(diff); SetC(pos); } /* 800849C4-80084A34 07F304 0070+00 0/0 0/0 1/1 .text MoveCTg__8dCcD_CylFR4cXyz */ void dCcD_Cyl::MoveCTg(cXyz& pos) { - cXyz diff; - vecDiff(diff, pos, GetCP()); - mGObjTg.SetVec(diff); + const cXyz* center = GetCP(); + cXyz diff = pos - *center; + SetTgVec(diff); SetC(pos); } @@ -460,7 +444,7 @@ void dCcD_Cyl::MoveCTg(cXyz& pos) { */ void dCcD_Sph::Set(dCcD_SrcSph const& src) { dCcD_GObjInf::Set(src.mObjInf); - cCcD_SphAttr::Set(src.mSph); + cCcD_SphAttr::Set(src.mSphAttr); } /* 80084A78-80084AC4 07F3B8 004C+00 0/0 3/3 25/25 .text StartCAt__8dCcD_SphFR4cXyz */ @@ -472,9 +456,9 @@ void dCcD_Sph::StartCAt(cXyz& pos) { /* 80084AC4-80084B34 07F404 0070+00 0/0 2/2 23/23 .text MoveCAt__8dCcD_SphFR4cXyz */ void dCcD_Sph::MoveCAt(cXyz& pos) { - cXyz diff; - vecDiff(diff, pos, GetC()); - mGObjAt.SetVec(diff); + const cXyz* center = GetCP(); + cXyz diff = pos - *center; + SetAtVec(diff); SetC(pos); } diff --git a/src/d/cc/d_cc_s.cpp b/src/d/cc/d_cc_s.cpp index d98e77f0c56..d06ca721268 100644 --- a/src/d/cc/d_cc_s.cpp +++ b/src/d/cc/d_cc_s.cpp @@ -700,8 +700,8 @@ bool dCcS::chkCameraPoint(cXyz const& param_0, cCcD_ShapeAttr::Shape* param_1, f cCcD_SphAttr sp48; cCcD_SrcSphAttr sp1C; - sp1C.mCenter = param_0; - sp1C.mRadius = 1.0f; + sp1C.mSph.mCenter = param_0; + sp1C.mSph.mRadius = 1.0f; sp48.Set(sp1C); sp48.CalcAabBox();