d_cc_mass_s

This commit is contained in:
Jcw87
2023-12-20 04:52:05 -08:00
parent 91113fa772
commit fdc216a6f2
4 changed files with 82 additions and 15 deletions
+1 -1
View File
@@ -278,7 +278,7 @@ public:
STATIC_ASSERT(0x38 == sizeof(cCcD_CylAttr));
class cCcD_DivideInfo {
private:
public:
/* 0x00 */ u32 mRangeBits;
/* 0x04 vtable */
public:
+4 -4
View File
@@ -7,7 +7,7 @@
typedef void (*dCcMassS_ObjCallback)(fopAc_ac_c*, cXyz*, u32);
class dCcMassS_Obj {
private:
public:
/* 0x00 */ cCcD_Obj* mpObj;
/* 0x04 */ u8 mPriority;
/* 0x08 */ dCcMassS_ObjCallback mpCallback;
@@ -15,7 +15,7 @@ private:
/* 0x14 vtable */
public:
dCcMassS_Obj();
dCcMassS_Obj() {}
virtual ~dCcMassS_Obj() {}
void Set(cCcD_Obj* p_obj, u8 priority, dCcMassS_ObjCallback callback);
void Clear();
@@ -53,7 +53,7 @@ public:
/* 0x00BC */ s32 mMassAreaCount;
/* 0x00C0 */ dCcMassS_Obj mMassAreas[2];
/* 0x00F0 */ cCcD_CylAttr mCylAttr;
/* 0x0128 */ u8 field_0x200;
/* 0x0128 */ u8 field_0x128;
/* 0x0129 */ u8 mResultCamBit;
/* 0x012C */ u32 mFlag;
/* 0x0130 */ u32 mResultCam;
@@ -72,7 +72,7 @@ public:
void SetAttr(f32 radius, f32 height, u8 param_2, u8 param_3) {
mCylAttr.SetR(radius);
mCylAttr.SetH(height);
field_0x200 = param_2;
field_0x128 = param_2;
mResultCamBit = param_3;
}
void Prepare();
+76 -9
View File
@@ -4,21 +4,76 @@
//
#include "d/d_cc_mass_s.h"
#include "dolphin/types.h"
#include "JSystem/JUtility/JUTAssert.h"
/* 800AC810-800AC920 .text __ct__12dCcMassS_MngFv */
dCcMassS_Mng::dCcMassS_Mng() {
/* Nonmatching */
Ct();
}
/* 800AC920-800AC96C .text Ct__12dCcMassS_MngFv */
void dCcMassS_Mng::Ct() {
/* Nonmatching */
mFlag = 0;
mResultCam = 0;
mCamTopPos.x = 0.0f;
mCamTopPos.y = -1e+9f;
mCamTopPos.z = 0.0f;
mCamBottomPos.x = 0.0f;
mCamBottomPos.y = -1e+9f;
mCamBottomPos.z = 0.0f;
Clear();
}
/* 800AC96C-800ACCB8 .text Prepare__12dCcMassS_MngFv */
void dCcMassS_Mng::Prepare() {
/* Nonmatching */
cM3dGAab local_38;
local_38.ClearForMinMax();
for (dCcMassS_Obj* mass = mMassObjs; mass < mMassObjs + mMassObjCount; mass++) {
cCcD_Obj* pobj = mass->mpObj;
JUT_ASSERT(61, pobj != 0);
cCcD_ShapeAttr* attr = pobj->GetShapeAttr();
attr->CalcAabBox();
local_38.SetMinMax(attr->mAab.mMin);
local_38.SetMinMax(attr->mAab.mMax);
}
for (dCcMassS_Obj* mass = mMassAreas; mass < mMassAreas + mMassAreaCount; mass++) {
cCcD_Obj* parea = mass->mpObj;
JUT_ASSERT(73, parea != 0);
cCcD_ShapeAttr* attr = parea->GetShapeAttr();
attr->CalcAabBox();
local_38.SetMinMax(attr->mAab.mMin);
local_38.SetMinMax(attr->mAab.mMax);
}
if (mFlag & 1) {
mCpsAttr.CalcAabBox();
local_38.SetMinMax(mCpsAttr.mAab.mMin);
local_38.SetMinMax(mCpsAttr.mAab.mMax);
}
mDivideArea.SetArea(local_38);
for (dCcMassS_Obj* mass = mMassObjs; mass < mMassObjs + mMassObjCount; mass++) {
cCcD_Obj* pobj = mass->mpObj;
JUT_ASSERT(93, pobj != 0);
cCcD_ShapeAttr* attr = pobj->GetShapeAttr();
mDivideArea.CalcDivideInfo(&mass->mDivideInfo, attr->mAab, 0);
}
for (dCcMassS_Obj* mass = mMassAreas; mass < mMassAreas + mMassAreaCount; mass++) {
cCcD_Obj* parea = mass->mpObj;
JUT_ASSERT(104, parea != 0);
cCcD_ShapeAttr* attr = parea->GetShapeAttr();
mDivideArea.CalcDivideInfo(&mass->mDivideInfo, attr->mAab, 0);
}
if (mFlag & 1) {
mDivideArea.CalcDivideInfo(&mDivideInfo, mCpsAttr.mAab, 0);
}
mCamTopPos.x = 0.0f;
mCamTopPos.y = -1e+9f;
mCamTopPos.z = 0.0f;
mCamTopDist = 1e+9f;
mCamBottomPos.x = 0.0f;
mCamBottomPos.y = -1e+9f;
mCamBottomPos.z = 0.0f;
mCamBottomDist = 1e+9f;
}
/* 800ACCB8-800AD17C .text Chk__12dCcMassS_MngFP4cXyzPP10fopAc_ac_cP15dCcMassS_HitInf */
@@ -28,7 +83,24 @@ u32 dCcMassS_Mng::Chk(cXyz*, fopAc_ac_c**, dCcMassS_HitInf*) {
/* 800AD17C-800AD234 .text Clear__12dCcMassS_MngFv */
void dCcMassS_Mng::Clear() {
/* Nonmatching */
mMassObjCount = 0;
mMassAreaCount = 0;
for (int i = 0; i < 5; i++) {
mMassObjs[i].mpObj = NULL;
mMassObjs[i].mPriority = 5;
mMassObjs[i].mpCallback = NULL;
mMassObjs[i].mDivideInfo.mRangeBits = 0;
}
for (int i = 0; i < 2; i++) {
mMassAreas[i].mpObj = NULL;
mMassAreas[i].mPriority = 5;
mMassAreas[i].mpCallback = NULL;
mMassAreas[i].mDivideInfo.mRangeBits = 0;
}
mCylAttr.SetR(0.0f);
mCylAttr.SetH(0.0f);
field_0x128 = 0;
mResultCamBit = 4;
}
/* 800AD234-800AD310 .text Set__12dCcMassS_MngFP8cCcD_ObjUc */
@@ -55,8 +127,3 @@ u8 dCcMassS_Mng::GetResultCam() const {
void dCcMassS_Mng::GetCamTopPos(Vec*) {
/* Nonmatching */
}
/* 800AD594-800AD5B0 .text __ct__12dCcMassS_ObjFv */
dCcMassS_Obj::dCcMassS_Obj() {
/* Nonmatching */
}
+1 -1
View File
@@ -782,7 +782,7 @@ void dKyr_poison_light_colision() {
dCcMassS_Mng * mass = &dComIfG_Ccsp()->mMass_Mng;
dComIfG_Ccsp()->mMass_Mng.mCylAttr.SetR(220.0f);
dComIfG_Ccsp()->mMass_Mng.mCylAttr.SetH(140.0f);
mass->field_0x200 = 0x0B;
mass->field_0x128 = 0x0B;
mass->mResultCamBit = 0x03;
#endif