d_bg_w_deform OK

This commit is contained in:
LagoLunatic
2024-02-10 17:40:02 -05:00
parent 5024ec5c63
commit 256665d6c1
5 changed files with 45 additions and 8 deletions
+1 -1
View File
@@ -394,7 +394,7 @@ config.libs = [
Object(Matching, "d/d_bg_s_spl_grp_chk.cpp"),
Object(Matching, "d/d_bg_s_wtr_chk.cpp"),
Object(NonMatching, "d/d_bg_w.cpp"),
Object(NonMatching, "d/d_bg_w_deform.cpp"),
Object(Matching, "d/d_bg_w_deform.cpp"),
Object(NonMatching, "d/d_bg_w_hf.cpp"),
Object(NonMatching, "d/d_bg_w_sv.cpp"),
Object(Matching, "d/d_cc_d.cpp"),
+1 -1
View File
@@ -70,7 +70,7 @@ public:
/* 0xB8 */ u16 mRoomNo;
/* 0xBA */ u8 mFlag;
/* 0xBB */ u8 mRoomNo2;
};
}; // Size: 0xBC
dBgW* dBgW_NewSet(cBgD_t*, unsigned long, float(*)[3][4]);
+16
View File
@@ -0,0 +1,16 @@
#ifndef D_BG_W_DEFORM_H
#define D_BG_W_DEFORM_H
#include "d/d_bg_w_sv.h"
#include "JSystem/J3DGraphAnimator/J3DSkinDeform.h"
class dBgWDeform : public dBgWSv, public J3DSkinDeform {
public:
bool Set(cBgD_t*, J3DModel*, u32);
public:
/* 0x00 */ /* dBgWSv */
/* 0xC4 */ /* J3DSkinDeform */
}; // Size: 0xDC
#endif /* D_BG_W_DEFORM_H */
+5 -1
View File
@@ -17,6 +17,10 @@ public:
virtual void CrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
void TransPosWork(cXyz*, int, int, int);
virtual void TransPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
};
public:
/* 0xBC */ u32 mBC;
/* 0xC0 */ Vec* mC0;
}; // Size: 0xC4
#endif /* D_BG_W_SV_H */
+22 -5
View File
@@ -3,11 +3,28 @@
// Translation Unit: d_bg_w_deform.cpp
//
#include "d_bg_w_deform.h"
#include "dolphin/types.h"
#include "d/d_bg_w_deform.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
/* 800A9928-800A9A48 .text Set__10dBgWDeformFP6cBgD_tP8J3DModelUl */
void dBgWDeform::Set(cBgD_t*, J3DModel*, unsigned long) {
/* Nonmatching */
bool dBgWDeform::Set(cBgD_t* bgd, J3DModel* pmodel, u32 r30) {
JUT_ASSERT(32, pmodel->getModelData()->isDeformablePositionFormat() == true);
if (cBgW::Set(bgd, 0x33, NULL)) {
return true;
}
mBC = r30;
if (pmodel->setSkinDeform(this, 1) == J3DErrType_OutOfMemory) {
return true;
}
pmodel->offFlag(J3DMdlFlag_SkinNrmCpu);
pmodel->onFlag(J3DMdlFlag_SkinPosCpu);
if (mBC & 1) {
return false;
}
mC0 = new Vec[pm_bgd->m_v_num];
if (mC0 == NULL) {
return true;
}
return false;
}