diff options
| author | Max Roncace <me@caseif.net> | 2025-08-11 02:22:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-10 23:22:28 -0700 |
| commit | ddf4fc0677f6b93162389063168458244e14ac59 (patch) | |
| tree | 6a5ed9d344a1f28860754a8220659fd0fdefa243 /include/SSystem | |
| parent | 87858822619e0a503e12f78690388c67df13f220 (diff) | |
Misc framework fixes (#2578)
Diffstat (limited to 'include/SSystem')
| -rw-r--r-- | include/SSystem/SComponent/c_cc_d.h | 376 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_m3d_g_sph.h | 3 |
2 files changed, 204 insertions, 175 deletions
diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 72c2f633a8..8944ccc133 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -6,6 +6,7 @@ #include "SSystem/SComponent/c_m3d_g_cyl.h" #include "SSystem/SComponent/c_m3d_g_sph.h" #include "SSystem/SComponent/c_m3d_g_tri.h" +#include "SSystem/SComponent/c_m3d_g_vtx.h" #include "f_pc/f_pc_manager.h" typedef struct _GXColor GXColor; @@ -64,192 +65,18 @@ enum cCcD_ObjAtType { /* 0xD8000000 */ AT_TYPE_UNK = 0xD8000000 }; -class cCcD_ShapeAttr { -public: - /* 0x00 */ cM3dGAab mAab; - /* 0x1C vtable */ - - struct Shape { - /* 80167BBC */ ~Shape() {} - - /* 0x00 */ int _0; - /* 0x04 */ cXyz _4; - /* 0x10 */ f32 _10; - /* 0x14 */ f32 _14; - }; - cCcD_ShapeAttr() {} - /* 8008556C vt[2] */ virtual ~cCcD_ShapeAttr() {} - /* 802649D8 vt[3] */ virtual bool CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const { - return false; - } - /* vt[4] */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const = 0; - /* vt[5] */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const = 0; - /* vt[6] */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const = 0; - /* vt[7] */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const = 0; - /* vt[8] */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const = 0; - /* vt[9] */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const = 0; - /* 802649E0 vt[10]*/ virtual bool CrossCo(cCcD_ShapeAttr const&, f32*) const { return false; } - /* vt[11]*/ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const = 0; - /* vt[12]*/ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const = 0; - /* vt[13]*/ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const = 0; - /* vt[14]*/ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const = 0; - /* vt[15]*/ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const = 0; - /* vt[16]*/ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const = 0; - /* 80084E38 vt[17]*/ virtual const cXyz& GetCoCP() const { return m_virtual_center; } - /* 80084E2C vt[18]*/ virtual cXyz& GetCoCP() { return m_virtual_center; } - /* vt[19]*/ virtual void CalcAabBox() = 0; - /* vt[20]*/ virtual bool GetNVec(cXyz const&, cXyz*) const = 0; - /* 80263A64 vt[21]*/ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; - - cM3dGAab& GetWorkAab() { return mAab; } - cM3dGAab const& GetWorkAab() const { return mAab; } - - static cXyz m_virtual_center; -}; - -STATIC_ASSERT(0x20 == sizeof(cCcD_ShapeAttr)); - struct cCcD_SrcTriAttr { cM3dGTriS mTri; }; -class cCcD_TriAttr : public cCcD_ShapeAttr, public cM3dGTri { -public: - /* 80263C04 */ virtual void CalcAabBox(); - /* 80263C9C */ virtual bool GetNVec(cXyz const&, cXyz*) const; - /* 80263A88 */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; - /* 80263BCC */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const; - /* 80263B90 */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; - /* 80084E54 */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { - return shape.CrossAtTg(*this, xyz); - } - /* 80084E4C */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } - /* 80084E44 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } - /* 80263B58 */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; - /* 80084EBC */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { - return shape.CrossCo(*this, f); - } - /* 80084EB4 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } - /* 80084EAC */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const { return false; } - /* 80084EA4 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } - /* 80084E9C */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } - /* 80084E94 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const { return false; } - /* 80084E8C */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const { return false; } - /* 80264938 */ virtual ~cCcD_TriAttr() {} - 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; - /* 80084FE4 */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { - return shape.CrossAtTg(*this, xyz); - } - /* 80084FDC */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } - /* 80084FD4 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } - /* 80263D38 */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; - /* 80263D7C */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; - /* 80263F24 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const; - /* 80263ED4 */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const; - /* 80263F74 */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const; - /* 80085034 */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { - return shape.CrossCo(*this, f); - } - /* 8008502C */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } - /* 80085024 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } - /* 8008501C */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } - /* 80263FC4 */ virtual void CalcAabBox(); - /* 80264014 */ virtual bool GetNVec(cXyz const&, cXyz*) const; -}; - -STATIC_ASSERT(0x40 == sizeof(cCcD_CpsAttr)); - 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.mSph); } - - /* 8008721C */ virtual ~cCcD_SphAttr() {} - /* 80084B44 */ virtual const cXyz& GetCoCP() const { return mCenter; } - /* 80037A54 */ virtual cXyz& GetCoCP() { return mCenter; } - /* 80084B5C */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { - return shape.CrossAtTg(*this, xyz); - } - /* 80084B54 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } - /* 80084B4C */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } - /* 80084BAC */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { - return shape.CrossCo(*this, f); - } - /* 80084BA4 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } - /* 80084B9C */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } - /* 80084B94 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } - /* 80264538 */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; - /* 802645C0 */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const; - /* 802644EC */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; - /* 8026457C */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; - /* 80264688 */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const; - /* 80264644 */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const; - /* 802645F8 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const; - /* 802646E0 */ virtual void CalcAabBox(); - /* 8026476C */ virtual bool GetNVec(cXyz const&, cXyz*) const; - /* 80264808 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; - - const cM3dGSph* GetShapeP() const { return this; } - -}; // Size = 0x34 - -STATIC_ASSERT(0x34 == sizeof(cCcD_SphAttr)); - -class cCcD_CylAttr : public cCcD_ShapeAttr, public cM3dGCyl { -public: - cCcD_CylAttr() {} - /* 800854E0 */ virtual ~cCcD_CylAttr() {} - /* 80084CC0 */ virtual const cXyz& GetCoCP() const { return mCenter; } - /* 8026420C */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; - /* 802641C8 */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; - /* 80264250 */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const; - /* 80084CD8 */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { - return shape.CrossAtTg(*this, xyz); - } - /* 80084CD0 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } - /* 80084CC8 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } - /* 8026417C */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; - /* 80264288 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const; - /* 80264310 */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const; - /* 80084D28 */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { - return shape.CrossCo(*this, f); - } - /* 80084D20 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } - /* 80084D18 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } - /* 80084D10 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } - /* 802642CC */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const; - /* 80037A4C */ virtual cXyz& GetCoCP() { return mCenter; } - /* 80264368 */ virtual void CalcAabBox(); - /* 802643D0 */ virtual bool GetNVec(cXyz const&, cXyz*) const; - /* 802644B8 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; - - const cM3dGCyl* GetShapeP() const { return this; } - -}; // Size = 0x38 - -STATIC_ASSERT(0x38 == sizeof(cCcD_CylAttr)); - class cCcD_DivideInfo { private: /* 0x00 */ u32 mXDivInfo; @@ -384,6 +211,7 @@ public: void setRPrm(s32 rprm) { mRPrm = rprm; } s32 getRPrm() const { return mRPrm; } cCcD_Obj* GetHitObj() { return mHitObj; } + const cCcD_Obj* GetHitObj() const { return mHitObj; } u32 MskSPrm(u32 mask) const { return mSPrm & mask; } u32 MskRPrm(u32 mask) { return mRPrm & mask; } void OnSPrmBit(u32 flag) { mSPrm |= flag; } @@ -551,6 +379,51 @@ public: STATIC_ASSERT(0x40 == sizeof(cCcD_ObjHitInf)); +class cCcD_ShapeAttr { +public: + /* 0x00 */ cM3dGAab mAab; + /* 0x1C vtable */ + + struct Shape { + /* 80167BBC */ ~Shape() {} + + /* 0x00 */ int _0; + /* 0x04 */ cXyz _4; + /* 0x10 */ f32 _10; + /* 0x14 */ f32 _14; + }; + cCcD_ShapeAttr() {} + /* 8008556C vt[2] */ virtual ~cCcD_ShapeAttr() {} + /* 802649D8 vt[3] */ virtual bool CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const { + return false; + } + /* vt[4] */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const = 0; + /* vt[5] */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const = 0; + /* vt[6] */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const = 0; + /* vt[7] */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const = 0; + /* vt[8] */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const = 0; + /* vt[9] */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const = 0; + /* 802649E0 vt[10]*/ virtual bool CrossCo(cCcD_ShapeAttr const&, f32*) const { return false; } + /* vt[11]*/ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const = 0; + /* vt[12]*/ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const = 0; + /* vt[13]*/ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const = 0; + /* vt[14]*/ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const = 0; + /* vt[15]*/ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const = 0; + /* vt[16]*/ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const = 0; + /* 80084E38 vt[17]*/ virtual const cXyz& GetCoCP() const { return m_virtual_center; } + /* 80084E2C vt[18]*/ virtual cXyz& GetCoCP() { return m_virtual_center; } + /* vt[19]*/ virtual void CalcAabBox() = 0; + /* vt[20]*/ virtual bool GetNVec(cXyz const&, cXyz*) const = 0; + /* 80263A64 vt[21]*/ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; + + cM3dGAab& GetWorkAab() { return mAab; } + cM3dGAab const& GetWorkAab() const { return mAab; } + + static cXyz m_virtual_center; +}; + +STATIC_ASSERT(0x20 == sizeof(cCcD_ShapeAttr)); + class cCcD_GObjInf; class cCcD_Obj : public cCcD_ObjHitInf { @@ -591,6 +464,161 @@ public: /* 800851A0 */ virtual cCcD_GObjInf* GetGObjInf() { return this; } }; +class cCcD_PntAttr : public cCcD_ShapeAttr, public cM3dGVtx { +public: + cCcD_PntAttr() {} + virtual ~cCcD_PntAttr() {} + virtual bool GetNVec(cXyz const&, cXyz*) const; + virtual bool CrossAtTg(cCcD_ShapeAttr const& param_0, cXyz* param_1) const { + return param_0.CrossAtTg(*this, param_1); + } + virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } + virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const { return false; } + virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const { return false; } + virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } + virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const { return false; } + virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const { return false; } + virtual bool CrossCo(const cCcD_ShapeAttr& param_0, f32* param_1) const { + return param_0.CrossCo(*this, param_1); + } + virtual bool CrossCo(const cCcD_PntAttr&, f32*) const { return false; } + virtual bool CrossCo(const cCcD_CpsAttr&, f32*) const { return false; } + virtual bool CrossCo(const cCcD_TriAttr&, f32*) const { return false; } + virtual bool CrossCo(const cCcD_AabAttr&, f32*) const { return false; } + virtual bool CrossCo(const cCcD_CylAttr&, f32*) const { return false; } + virtual bool CrossCo(const cCcD_SphAttr&, f32*) const { return false; } + virtual void CalcAabBox() {} +}; + +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; + /* 80084FE4 */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { + return shape.CrossAtTg(*this, xyz); + } + /* 80084FDC */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } + /* 80084FD4 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } + /* 80263D38 */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 80263D7C */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 80263F24 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const; + /* 80263ED4 */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const; + /* 80263F74 */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const; + /* 80085034 */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { + return shape.CrossCo(*this, f); + } + /* 8008502C */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } + /* 80085024 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } + /* 8008501C */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } + /* 80263FC4 */ virtual void CalcAabBox(); + /* 80264014 */ virtual bool GetNVec(cXyz const&, cXyz*) const; +}; + +STATIC_ASSERT(0x40 == sizeof(cCcD_CpsAttr)); + +class cCcD_TriAttr : public cCcD_ShapeAttr, public cM3dGTri { +public: + /* 80263C04 */ virtual void CalcAabBox(); + /* 80263C9C */ virtual bool GetNVec(cXyz const&, cXyz*) const; + /* 80263A88 */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 80263BCC */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const; + /* 80263B90 */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; + /* 80084E54 */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { + return shape.CrossAtTg(*this, xyz); + } + /* 80084E4C */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } + /* 80084E44 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } + /* 80263B58 */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 80084EBC */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { + return shape.CrossCo(*this, f); + } + /* 80084EB4 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } + /* 80084EAC */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const { return false; } + /* 80084EA4 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } + /* 80084E9C */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } + /* 80084E94 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const { return false; } + /* 80084E8C */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const { return false; } + /* 80264938 */ virtual ~cCcD_TriAttr() {} + cCcD_TriAttr() {} +}; + +class cCcD_CylAttr : public cCcD_ShapeAttr, public cM3dGCyl { +public: + cCcD_CylAttr() {} + /* 800854E0 */ virtual ~cCcD_CylAttr() {} + /* 80084CC0 */ virtual const cXyz& GetCoCP() const { return *GetCP(); } + /* 8026420C */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; + /* 802641C8 */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 80264250 */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const; + /* 80084CD8 */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { + return shape.CrossAtTg(*this, xyz); + } + /* 80084CD0 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } + /* 80084CC8 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } + /* 8026417C */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 80264288 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const; + /* 80264310 */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const; + /* 80084D28 */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { + return shape.CrossCo(*this, f); + } + /* 80084D20 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } + /* 80084D18 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } + /* 80084D10 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } + /* 802642CC */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const; + /* 80037A4C */ virtual cXyz& GetCoCP() { return *GetCP(); } + /* 80264368 */ virtual void CalcAabBox(); + /* 802643D0 */ virtual bool GetNVec(cXyz const&, cXyz*) const; + /* 802644B8 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; + + const cM3dGCyl* GetShapeP() const { return this; } + +}; // Size = 0x38 + +STATIC_ASSERT(0x38 == sizeof(cCcD_CylAttr)); + +class cCcD_SphAttr : public cCcD_ShapeAttr, public cM3dGSph { +public: + cCcD_SphAttr() {} + void Set(const cCcD_SrcSphAttr& src) { cM3dGSph::Set(src.mSph); } + + /* 8008721C */ virtual ~cCcD_SphAttr() {} + /* 80084B44 */ virtual const cXyz& GetCoCP() const { return *GetCP(); } + /* 80037A54 */ virtual cXyz& GetCoCP() { return *GetCP(); } + /* 80084B5C */ virtual bool CrossAtTg(cCcD_ShapeAttr const& shape, cXyz* xyz) const { + return shape.CrossAtTg(*this, xyz); + } + /* 80084B54 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const { return false; } + /* 80084B4C */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const { return false; } + /* 80084BAC */ virtual bool CrossCo(cCcD_ShapeAttr const& shape, f32* f) const { + return shape.CrossCo(*this, f); + } + /* 80084BA4 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const { return false; } + /* 80084B9C */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const { return false; } + /* 80084B94 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const { return false; } + /* 80264538 */ virtual bool CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 802645C0 */ virtual bool CrossAtTg(cCcD_TriAttr const&, cXyz*) const; + /* 802644EC */ virtual bool CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 8026457C */ virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; + /* 80264688 */ virtual bool CrossCo(cCcD_CpsAttr const&, f32*) const; + /* 80264644 */ virtual bool CrossCo(cCcD_SphAttr const&, f32*) const; + /* 802645F8 */ virtual bool CrossCo(cCcD_CylAttr const&, f32*) const; + /* 802646E0 */ virtual void CalcAabBox(); + /* 8026476C */ virtual bool GetNVec(cXyz const&, cXyz*) const; + /* 80264808 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; + + const cM3dGSph* GetShapeP() const { return this; } + +}; // Size = 0x34 + +STATIC_ASSERT(0x34 == sizeof(cCcD_SphAttr)); + STATIC_ASSERT(0x58 == sizeof(cCcD_GObjInf)); #endif /* C_CC_D_H */ diff --git a/include/SSystem/SComponent/c_m3d_g_sph.h b/include/SSystem/SComponent/c_m3d_g_sph.h index 217dcefc04..98cac29027 100644 --- a/include/SSystem/SComponent/c_m3d_g_sph.h +++ b/include/SSystem/SComponent/c_m3d_g_sph.h @@ -33,6 +33,7 @@ public: void GetMinMaxCube(cXyz&, cXyz&) const; const cXyz& GetC(void) const { return mCenter; } const cXyz* GetCP() const { return &mCenter; } + cXyz* GetCP() { return &mCenter; } const f32 GetR(void) const { return mRadius; } f32 GetCX(void) const { return mCenter.x; } f32 GetCY(void) const { return mCenter.y; } @@ -50,4 +51,4 @@ extern "C" { void Set__8cM3dGSphFRC4cXyzf(void); } -#endif
\ No newline at end of file +#endif |
