mirror of https://github.com/zeldaret/tp.git
Merge pull request #359 from Jcw87/d_cc_d_nonmatching
d_cc_d_nonmatching
This commit is contained in:
commit
92fa379d54
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue