Merge pull request #359 from Jcw87/d_cc_d_nonmatching

d_cc_d_nonmatching
This commit is contained in:
hatal175 2023-07-03 20:37:56 +03:00 committed by GitHub
commit 92fa379d54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 204 additions and 151 deletions

View File

@ -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

View File

@ -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; }

View File

@ -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; }

View File

@ -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;

View File

@ -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;

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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

View File

@ -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 */

View File

@ -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");

View File

@ -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,
}
},
};

View File

@ -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<fopAc_ac_c*>(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);
}

View File

@ -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();