From 03d835f6d48f352ba39322c201c38867005e0a78 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 30 Sep 2023 19:42:26 -0700 Subject: [PATCH] d_cc_d work --- include/SSystem/SComponent/c_cc_d.h | 21 ++- include/SSystem/SComponent/c_m3d_g_cps.h | 5 +- include/SSystem/SComponent/c_m3d_g_cyl.h | 5 + include/SSystem/SComponent/c_m3d_g_lin.h | 5 +- include/SSystem/SComponent/c_m3d_g_sph.h | 6 +- include/d/d_cc_d.h | 57 ++++--- src/d/d_cc_d.cpp | 190 +++++++++++++++-------- 7 files changed, 198 insertions(+), 91 deletions(-) diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index f1e1822ac..57fdcee60 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -78,6 +78,10 @@ public: STATIC_ASSERT(0x20 == sizeof(cCcD_ShapeAttr)); +struct cCcD_SrcCylAttr { + cM3dGCylS mCyl; +}; + struct cCcD_SrcTriAttr { cM3dGTriS mTri; }; @@ -156,6 +160,10 @@ class cCcD_SphAttr : public cCcD_ShapeAttr, public cM3dGSph { public: cCcD_SphAttr() {} + inline void Set(const cCcD_SrcSphAttr& src) { + cM3dGSph::Set(src.mSph); + } + virtual ~cCcD_SphAttr() {} virtual const cXyz& GetCoCP() const { return mCenter; } virtual cXyz& GetCoCP() { return mCenter; } @@ -187,6 +195,10 @@ STATIC_ASSERT(0x34 == sizeof(cCcD_SphAttr)); class cCcD_CylAttr : public cCcD_ShapeAttr, public cM3dGCyl { public: cCcD_CylAttr() {} + inline void Set(const cCcD_SrcCylAttr& src) { + cM3dGCyl::Set(src.mCyl); + } + virtual ~cCcD_CylAttr() {} virtual const cXyz& GetCoCP() const { return mCenter; } virtual bool CrossAtTg(cCcD_SphAttr const&, cXyz*) const; @@ -366,7 +378,7 @@ public: virtual ~cCcD_ObjAt() {} void SetHit(cCcD_Obj*); void Set(cCcD_SrcObjAt const&); - void ClrHit() { ClrObj(); } + void ClrHit() { ClrRPrm(1); ClrObj(); } int GetType() const { return mType; } u32 GetGrp() const { return MskSPrm(0x1E); } bool ChkSet() const { return MskSPrm(1); } @@ -391,7 +403,7 @@ public: virtual ~cCcD_ObjTg() {} void Set(cCcD_SrcObjTg const&); void SetGrp(u32); - void ClrHit(); + void ClrHit() { ClrRPrm(1); ClrObj(); } void SetHit(cCcD_Obj*); int GetType() const { return mType; } void SetType(u32 type) { mType = type; } @@ -410,7 +422,7 @@ class cCcD_ObjCo : public cCcD_ObjCommonBase { public: virtual ~cCcD_ObjCo() {} void SetHit(cCcD_Obj*); - void ClrHit(); + void ClrHit() { ClrRPrm(1); ClrObj(); } void SetIGrp(u32); void SetVsGrp(u32); u32 GetGrp() const { return MskSPrm(0x1E); } @@ -505,7 +517,6 @@ public: virtual cCcD_GObjInf const* GetGObjInf() const { return NULL; } virtual cCcD_GObjInf* GetGObjInf() { return NULL; } virtual cCcD_ShapeAttr const* GetShapeAttr() const { return NULL; } - virtual cCcD_ShapeAttr* GetShapeAttr() { return NULL; } void ct(); void Set(cCcD_SrcObj const&); fopAc_ac_c* GetAc(); @@ -528,7 +539,7 @@ STATIC_ASSERT(0x50 == sizeof(cCcD_Obj)); class cCcD_GObjInf : public cCcD_Obj { public: cCcD_GObjInf() {} - virtual ~cCcD_GObjInf() {} + virtual ~cCcD_GObjInf(); virtual void ClrAtHit() { mObjAt.ClrHit(); } virtual void ClrTgHit() { mObjTg.ClrHit(); } virtual void ClrCoHit() { mObjCo.ClrHit(); } diff --git a/include/SSystem/SComponent/c_m3d_g_cps.h b/include/SSystem/SComponent/c_m3d_g_cps.h index 510ef3869..835ce46dd 100644 --- a/include/SSystem/SComponent/c_m3d_g_cps.h +++ b/include/SSystem/SComponent/c_m3d_g_cps.h @@ -18,7 +18,10 @@ public: cM3dGCps(void) {} virtual ~cM3dGCps(void) {} void Set(const cXyz&, const cXyz&, f32); - void Set(const cM3dGCpsS&); + void Set(const cM3dGCpsS& src) { + SetStartEnd(src.mStart, src.mEnd); + SetR(src.mRadius); + } void SetCps(const cM3dGCps&); bool Cross(cM3dGCps const* other, cXyz* xyz) const { return cM3d_Cross_CpsCps(*this, *other, xyz); diff --git a/include/SSystem/SComponent/c_m3d_g_cyl.h b/include/SSystem/SComponent/c_m3d_g_cyl.h index ab37e2465..0b68b5d2b 100644 --- a/include/SSystem/SComponent/c_m3d_g_cyl.h +++ b/include/SSystem/SComponent/c_m3d_g_cyl.h @@ -25,6 +25,11 @@ public: void SetC(const cXyz& pos); void SetH(f32 h); void SetR(f32 r); + inline void Set(const cM3dGCylS & src) { + SetC(src.mCenter); + SetR(src.mRadius); + SetH(src.mHeight); + } bool cross(const cM3dGSph*, cXyz*) const; bool cross(const cM3dGCyl*, cXyz*) const; bool cross(const cM3dGSph*, f32*) const; diff --git a/include/SSystem/SComponent/c_m3d_g_lin.h b/include/SSystem/SComponent/c_m3d_g_lin.h index 1b780b078..43f6e4788 100644 --- a/include/SSystem/SComponent/c_m3d_g_lin.h +++ b/include/SSystem/SComponent/c_m3d_g_lin.h @@ -19,7 +19,10 @@ public: mStart = start; mEnd = end; } - void SetStartEnd(const Vec&, const Vec&); + void SetStartEnd(const Vec& start, const Vec& end) { + mStart = start; + mEnd = end; + } void CalcPos(Vec*, f32) const; void CalcVec(Vec* pOut) const { VECSubtract(&this->mEnd, &this->mStart, pOut); } void SetEnd(const cXyz&); diff --git a/include/SSystem/SComponent/c_m3d_g_sph.h b/include/SSystem/SComponent/c_m3d_g_sph.h index 50073b578..462928b0c 100644 --- a/include/SSystem/SComponent/c_m3d_g_sph.h +++ b/include/SSystem/SComponent/c_m3d_g_sph.h @@ -23,10 +23,14 @@ public: virtual ~cM3dGSph() {} void SetC(const cXyz&); void SetR(f32); + void Set(const cM3dGSphS & src) { + SetC(src.mCenter); + SetR(src.mRadius); + } bool cross(const cM3dGSph*, cXyz*) const; bool cross(const cM3dGCyl*, cXyz*) const; bool cross(const cM3dGSph*, f32*) const; - const cXyz& GetC(void) const { return mCenter; } + const cXyz& GetC() const { return mCenter; } const cXyz* GetCP() const { return &mCenter; } const f32 GetR(void) const { return mRadius; } f32 GetCX(void) const { return mCenter.x; } diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index 4290eda89..ac0ef47c1 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -15,7 +15,7 @@ enum dCcG_At_Spl {}; enum dCcG_Tg_Spl {}; struct dCcD_SrcGAtTgCoCommonBase { - /* 0x0 */ u32 mGFlag; + /* 0x0 */ u32 mSPrm; }; // Size: 0x4 struct dCcD_SrcGObjAt { @@ -57,7 +57,7 @@ struct dCcD_SrcTri { struct dCcD_SrcCyl { /* 0x00 */ dCcD_SrcGObjInf mObjInf; - /* 0x30 */ cM3dGCylS mCyl; + /* 0x30 */ cCcD_SrcCylAttr mCylAttr; }; // Size: 0x44 struct dCcD_SrcCps { @@ -72,8 +72,8 @@ public: void Ct(); void Move(); - void ClrAt() { mAt = 0; } - void ClrTg() { mTg = 0; } + void ClrAt() { mAtSpl = 0; } + void ClrTg() { mTgSpl = 0; } void SetAtApid(unsigned int id) { mAtApid = id; } void SetTgApid(unsigned int id) { mTgApid = id; } u8 GetRoomId() { return mRoomId; } @@ -82,15 +82,15 @@ public: 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; } + dCcG_At_Spl GetAtSpl() { return (dCcG_At_Spl)mAtSpl; } + void SetAtSpl(dCcG_At_Spl spl) { mAtSpl = spl; } + dCcG_Tg_Spl GetTgSpl() { return (dCcG_Tg_Spl)mTgSpl; } + void SetTgSpl(dCcG_Tg_Spl spl) { mTgSpl = spl; } void OnNoActor() { field_0x1C |= 1; } // private: - /* 0x04 */ u8 mAt; - /* 0x05 */ u8 mTg; + /* 0x04 */ u8 mAtSpl; + /* 0x05 */ u8 mTgSpl; /* 0x06 */ u8 mRoomId; /* 0x08 */ u16 field_0x08; /* 0x0C */ int mAtApid; @@ -103,11 +103,19 @@ public: class dCcD_Stts : public cCcD_Stts, public dCcD_GStts { public: dCcD_Stts() {} - virtual cCcD_GStts* GetGStts(); + virtual cCcD_GStts* GetGStts() { + return (cCcD_GStts*)this; + } void Init(int, int, fopAc_ac_c*); virtual void Ct(); - virtual void ClrAt(); - virtual void ClrTg(); + virtual void ClrAt() { + cCcD_Stts::ClrAt(); + dCcD_GStts::ClrAt(); + } + virtual void ClrTg() { + cCcD_Stts::ClrTg(); + dCcD_GStts::ClrTg(); + } virtual ~dCcD_Stts() {} }; // Size = 0x3C @@ -118,7 +126,7 @@ typedef void (*dCcD_HitCallback)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_G // Attack/Defense/Correction Collider Common Base class dCcD_GAtTgCoCommonBase { public: - /* 0x00 */ u32 mGFlag; + /* 0x00 */ u32 mSPrm; /* 0x04 */ u32 mRPrm; /* 0x08 */ dCcD_HitCallback mHitCallback; /* 0x0C */ u32 mApid; @@ -136,21 +144,28 @@ public: void ct(); void SetHitApid(unsigned int); fopAc_ac_c* GetAc(); - void Set(dCcD_SrcGAtTgCoCommonBase const&); + void Set(dCcD_SrcGAtTgCoCommonBase const& base) { + mSPrm = base.mSPrm; + ClrEffCounter(); + } void SetEffCounterTimer(); - void SubtractEffCounter() { mEffCounter -= 1; } + void SubtractEffCounter() { + mEffCounter -= 1; + if (mEffCounter < 0) + mEffCounter = 0; + } bool ChkEffCounter() { return mEffCounter >= 0; } virtual ~dCcD_GAtTgCoCommonBase() {} void ClrEffCounter() { mEffCounter = 0; } - u32 GetGFlag() const { return mGFlag; } + u32 GetSPrm() const { return mSPrm; } u32 GetRPrm() const { return mRPrm; } - u32 MskSPrm(u32 mask) const { return mGFlag & mask; } + u32 MskSPrm(u32 mask) const { return mSPrm & mask; } u32 MskRPrm(u32 mask) const { return mRPrm & mask; } bool ChkSPrm(u32 mask) const { return MskSPrm(mask); } - void OnSPrm(u32 flag) { mGFlag |= flag; } + void OnSPrm(u32 flag) { mSPrm |= flag; } void OnRPrm(u32 flag) { mRPrm |= flag; } - void OffSPrm(u32 flag) { mGFlag &= ~flag; } + void OffSPrm(u32 flag) { mSPrm &= ~flag; } void OffRPrm(u32 flag) { mRPrm &= ~flag; } bool ChkRPrm(u32 flag) const { return MskRPrm(flag); } void SetHitCallback(dCcD_HitCallback callback) { mHitCallback = callback; } @@ -207,6 +222,7 @@ public: cXyz* GetVecP() { return &mVec; } void SetHitPos(cXyz& pos) { mHitPos = pos; } cXyz* GetHitPosP() { return &mHitPos; } + inline void ClrHit() { ClrActorInfo(); } private: /* 0x1C */ u8 mSe; @@ -224,6 +240,7 @@ class dCcD_GObjCo : public dCcD_GAtTgCoCommonBase { public: virtual ~dCcD_GObjCo() {} void Set(dCcD_SrcGObjCo const& pSrc) { dCcD_GAtTgCoCommonBase::Set(pSrc.mBase); } + void ClrHit() { ClrActorInfo(); } }; // Size = 0x1C ? // Object Info diff --git a/src/d/d_cc_d.cpp b/src/d/d_cc_d.cpp index 918605534..41ed90c59 100644 --- a/src/d/d_cc_d.cpp +++ b/src/d/d_cc_d.cpp @@ -29,8 +29,8 @@ void dCcD_GAtTgCoCommonBase::SetEffCounterTimer() { /* 800AB334-800AB384 .text __ct__10dCcD_GSttsFv */ dCcD_GStts::dCcD_GStts() { - mAt = 0; - mTg = 0; + mAtSpl = 0; + mTgSpl = 0; mRoomId = 0; field_0x08 = -1; mAtApid = -1; @@ -42,7 +42,15 @@ dCcD_GStts::dCcD_GStts() { /* 800AB384-800AB3BC .text Ct__10dCcD_GSttsFv */ void dCcD_GStts::Ct() { - /* Nonmatching */ + mAtSpl = 0; + mTgSpl = 0; + mRoomId = 0; + field_0x08 = -1; + mAtApid = -1; + mAtOldApid = -1; + mTgApid = -1; + mTgOldApid = -1; + field_0x1C = 0; } /* 800AB3BC-800AB3DC .text Move__10dCcD_GSttsFv */ @@ -79,17 +87,28 @@ void dCcD_Stts::Init(int param_0, int param_1, fopAc_ac_c* pActor) { /* 800AB46C-800AB4A0 .text Ct__9dCcD_SttsFv */ void dCcD_Stts::Ct() { - /* Nonmatching */ + cCcD_Stts::Ct(); + dCcD_GStts::Ct(); } /* 800AB4A0-800AB4D0 .text Set__11dCcD_GObjAtFRC14dCcD_SrcGObjAt */ -void dCcD_GObjAt::Set(const dCcD_SrcGObjAt&) { - /* Nonmatching */ +void dCcD_GObjAt::Set(const dCcD_SrcGObjAt& src) { + dCcD_GAtTgCoCommonBase::Set(src.mBase); + mSe = src.mSe; + mMtrl = 0; + mHitMark = src.mHitMark; + mSpl = src.mSpl; } /* 800AB4D0-800AB520 .text Set__11dCcD_GObjTgFRC14dCcD_SrcGObjTg */ -void dCcD_GObjTg::Set(const dCcD_SrcGObjTg&) { - /* Nonmatching */ +void dCcD_GObjTg::Set(const dCcD_SrcGObjTg& src) { + dCcD_GAtTgCoCommonBase::Set(src.mBase); + mSe = src.mSe; + mMtrl = 0; + mHitMark = src.mHitMark; + mSpl = src.mSpl; + mHitPos = cXyz::Zero; + mShieldFrontRangeYAngle = NULL; } /* 800AB520-800AB63C .text __ct__12dCcD_GObjInfFv */ @@ -97,6 +116,10 @@ dCcD_GObjInf::dCcD_GObjInf() { /* Nonmatching */ } +dCcD_GObjInf::~dCcD_GObjInf() { + /* Nonmatching */ +} + /* 800AB7C0-800AB7C4 .text GetGObjInf__12dCcD_GObjInfFv */ cCcD_GObjInf* dCcD_GObjInf::GetGObjInf() { return (cCcD_GObjInf*)this; @@ -104,21 +127,23 @@ cCcD_GObjInf* dCcD_GObjInf::GetGObjInf() { /* 800AB7C4-800AB81C .text ClrAtHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ClrAtHit() { - OffAtHitBit(); cCcD_Obj::ClrAtHit(); mGObjAt.ClrHit(); OffAtShieldHit(); OffAtHitNoActor(); SubtractAtEffCounter(); - if (!ChkAtEffCounter()) { - ClrAtEffCounter(); - } } #if VERSION != VERSION_JPN /* 800AB81C-800AB874 .text ChkAtHit__12dCcD_GObjInfFv */ u32 dCcD_GObjInf::ChkAtHit() { - /* Nonmatching */ + if (!cCcD_ObjHitInf::ChkAtHit()) + return 0; + + if (!ChkAtHitNoActor() && !GetAtHitAc()) + return 0; + else + return 1; } #endif @@ -130,7 +155,10 @@ void dCcD_GObjInf::ResetAtHit() { /* 800AB8B4-800AB904 .text GetAtHitObj__12dCcD_GObjInfFv */ cCcD_Obj* dCcD_GObjInf::GetAtHitObj() { - /* Nonmatching */ + if (!ChkAtHitNoActor() && !GetAtHitAc()) + return NULL; + + return cCcD_ObjHitInf::GetAtHitObj(); } /* 800AB904-800AB938 .text GetAtHitGObj__12dCcD_GObjInfFv */ @@ -149,131 +177,167 @@ u8 dCcD_GObjInf::ChkAtNoGuard() { /* 800AB958-800AB9B0 .text ClrTgHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ClrTgHit() { - /* Nonmatching */ + cCcD_ObjHitInf::ClrTgHit(); + mGObjTg.ClrHit(); + OffTgHitNoActor(); + OffTgShieldHit(); + SubtractTgEffCounter(); } #if VERSION != VERSION_JPN /* 800AB9B0-800ABA08 .text ChkTgHit__12dCcD_GObjInfFv */ u32 dCcD_GObjInf::ChkTgHit() { - /* Nonmatching */ + if (!cCcD_ObjHitInf::ChkTgHit()) + return 0; + + if (!ChkTgHitNoActor() && !GetTgHitAc()) + return 0; + else + return 1; } #endif /* 800ABA08-800ABA48 .text ResetTgHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ResetTgHit() { - /* Nonmatching */ + // cCcD_ObjHitInf::ResetTgHit(); + ClrTgEffCounter(); } /* 800ABA48-800ABA98 .text GetTgHitObj__12dCcD_GObjInfFv */ cCcD_Obj* dCcD_GObjInf::GetTgHitObj() { - /* Nonmatching */ + if (!ChkTgHitNoActor() && !GetTgHitAc()) + return NULL; + return cCcD_ObjHitInf::GetTgHitObj(); } /* 800ABA98-800ABACC .text GetTgHitGObj__12dCcD_GObjInfFv */ dCcD_GObjInf* dCcD_GObjInf::GetTgHitGObj() { - /* Nonmatching */ + cCcD_Obj * pHitObj = GetTgHitObj(); + if (pHitObj == NULL) + return NULL; + return dCcD_GetGObjInf(pHitObj); } /* 800ABACC-800ABB00 .text GetTgHitObjSe__12dCcD_GObjInfFv */ u8 dCcD_GObjInf::GetTgHitObjSe() { - /* Nonmatching */ + dCcD_GObjInf * pHitInf = GetTgHitGObj(); + if (pHitInf == NULL) + return 0; + return pHitInf->GetAtSe(); } /* 800ABB00-800ABB4C .text ClrCoHit__12dCcD_GObjInfFv */ void dCcD_GObjInf::ClrCoHit() { - /* Nonmatching */ + cCcD_ObjHitInf::ClrCoHit(); + mGObjCo.ClrHit(); + OffCoHitNoActor(); + SubtractCoEffCounter(); } #if VERSION != VERSION_JPN /* 800ABB4C-800ABBA4 .text ChkCoHit__12dCcD_GObjInfFv */ u32 dCcD_GObjInf::ChkCoHit() { - /* Nonmatching */ + if (!cCcD_ObjHitInf::ChkCoHit()) + return 0; + + if (!ChkCoHitNoActor() && !GetCoHitAc()) + return 0; + else + return 1; } #endif /* 800ABBA4-800ABBF4 .text GetCoHitObj__12dCcD_GObjInfFv */ cCcD_Obj* dCcD_GObjInf::GetCoHitObj() { - /* Nonmatching */ + if (!ChkCoHitNoActor() && !GetCoHitAc()) + return NULL; + + return cCcD_ObjHitInf::GetCoHitObj(); } /* 800ABBF4-800ABC54 .text Set__12dCcD_GObjInfFRC15dCcD_SrcGObjInf */ -void dCcD_GObjInf::Set(const dCcD_SrcGObjInf&) { - /* Nonmatching */ +void dCcD_GObjInf::Set(const dCcD_SrcGObjInf& src) { + cCcD_Obj::Set(src.mObj); + mGObjAt.Set(src.mGObjAt); + mGObjTg.Set(src.mGObjTg); + mGObjCo.Set(src.mGObjCo); } /* 800ABC54-800ABCC4 .text dCcD_GetGObjInf__FP8cCcD_Obj */ dCcD_GObjInf* dCcD_GetGObjInf(cCcD_Obj* pobj) { - /* Nonmatching */ JUT_ASSERT(531, pobj != 0); return (dCcD_GObjInf*)pobj->GetGObjInf(); } /* 800ABCC4-800ABD34 .text Set__8dCcD_CpsFRC11dCcD_SrcCps */ -void dCcD_Cps::Set(const dCcD_SrcCps&) { - /* Nonmatching */ +void dCcD_Cps::Set(const dCcD_SrcCps& src) { + dCcD_GObjInf::Set(src.mObjInf); + cCcD_CpsAttr::Set(src.mCpsAttr); } /* 800ABD34-800ABD54 .text Set__8dCcD_TriFRC11dCcD_SrcTri */ -void dCcD_Tri::Set(const dCcD_SrcTri&) { - /* Nonmatching */ +void dCcD_Tri::Set(const dCcD_SrcTri& src) { + dCcD_GObjInf::Set(src.mObjInf); } /* 800ABD54-800ABDCC .text Set__8dCcD_CylFRC11dCcD_SrcCyl */ -void dCcD_Cyl::Set(const dCcD_SrcCyl&) { - /* Nonmatching */ +void dCcD_Cyl::Set(const dCcD_SrcCyl& src) { + dCcD_GObjInf::Set(src.mObjInf); + cCcD_CylAttr::Set(src.mCylAttr); } /* 800ABDCC-800ABE18 .text StartCAt__8dCcD_CylFR4cXyz */ -void dCcD_Cyl::StartCAt(cXyz&) { - /* Nonmatching */ +void dCcD_Cyl::StartCAt(cXyz& pos) { + cXyz vel = cXyz::Zero; + SetAtVec(vel); + SetC(pos); } /* 800ABE18-800ABE64 .text StartCTg__8dCcD_CylFR4cXyz */ -void dCcD_Cyl::StartCTg(cXyz&) { - /* Nonmatching */ +void dCcD_Cyl::StartCTg(cXyz& pos) { + cXyz vel = cXyz::Zero; + SetTgVec(vel); + SetC(pos); } /* 800ABE64-800ABEE0 .text MoveCAtTg__8dCcD_CylFR4cXyz */ -void dCcD_Cyl::MoveCAtTg(cXyz&) { - /* Nonmatching */ +void dCcD_Cyl::MoveCAtTg(cXyz& pos) { + cXyz vel = pos - GetC(); + SetAtVec(vel); + SetTgVec(vel); + SetC(pos); } /* 800ABEE0-800ABF50 .text MoveCAt__8dCcD_CylFR4cXyz */ -void dCcD_Cyl::MoveCAt(cXyz&) { - /* Nonmatching */ +void dCcD_Cyl::MoveCAt(cXyz& pos) { + cXyz vel = pos - GetC(); + SetAtVec(vel); + SetC(pos); } /* 800ABF50-800ABFC0 .text MoveCTg__8dCcD_CylFR4cXyz */ -void dCcD_Cyl::MoveCTg(cXyz&) { - /* Nonmatching */ +void dCcD_Cyl::MoveCTg(cXyz& pos) { + cXyz vel = pos - GetC(); + SetTgVec(vel); + SetC(pos); } /* 800ABFC0-800AC02C .text Set__8dCcD_SphFRC11dCcD_SrcSph */ -void dCcD_Sph::Set(const dCcD_SrcSph&) { - /* Nonmatching */ +void dCcD_Sph::Set(const dCcD_SrcSph& src) { + dCcD_GObjInf::Set(src.mObjInf); + cCcD_SphAttr::Set(src.mSphAttr); } /* 800AC02C-800AC078 .text StartCAt__8dCcD_SphFR4cXyz */ -void dCcD_Sph::StartCAt(cXyz&) { - /* Nonmatching */ +void dCcD_Sph::StartCAt(cXyz& pos) { + cXyz atVec = cXyz::Zero; + SetAtVec(atVec); + SetC(pos); } /* 800AC078-800AC0E8 .text MoveCAt__8dCcD_SphFR4cXyz */ -void dCcD_Sph::MoveCAt(cXyz&) { - /* Nonmatching */ -} - -/* 800AC6F0-800AC700 .text GetGStts__9dCcD_SttsFv */ -cCcD_GStts* dCcD_Stts::GetGStts() { - /* Nonmatching */ -} - -/* 800AC700-800AC70C .text ClrAt__9dCcD_SttsFv */ -void dCcD_Stts::ClrAt() { - /* Nonmatching */ -} - -/* 800AC70C-800AC71C .text ClrTg__9dCcD_SttsFv */ -void dCcD_Stts::ClrTg() { - /* Nonmatching */ +void dCcD_Sph::MoveCAt(cXyz& pos) { + cXyz atVec = pos - *GetCP(); + SetAtVec(atVec); + SetC(pos); }