mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-29 16:44:40 -04:00
d_cc_mass_s
This commit is contained in:
@@ -278,7 +278,7 @@ public:
|
||||
STATIC_ASSERT(0x38 == sizeof(cCcD_CylAttr));
|
||||
|
||||
class cCcD_DivideInfo {
|
||||
private:
|
||||
public:
|
||||
/* 0x00 */ u32 mRangeBits;
|
||||
/* 0x04 vtable */
|
||||
public:
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user