J3DMaterialAttach progress

This commit is contained in:
Jasper St. Pierre
2023-09-23 21:06:24 -07:00
parent 4e40d06439
commit 3f669fb895
5 changed files with 372 additions and 126 deletions
+70 -65
View File
@@ -57,7 +57,7 @@ struct J3DAnmTransformFullTable {
struct J3DAnmTexPatternFullTable {
/* 0x00 */ u16 mMaxFrame;
/* 0x02 */ u16 mOffset;
/* 0x04 */ u8 _4;
/* 0x04 */ u8 mTexNo;
/* 0x06 */ u16 _6;
}; // Size = 0x8
@@ -66,7 +66,7 @@ struct J3DAnmCRegKeyTable {
/* 0x06 */ J3DAnmKeyTableBase mGTable;
/* 0x0C */ J3DAnmKeyTableBase mBTable;
/* 0x12 */ J3DAnmKeyTableBase mATable;
/* 0x18 */ u8 _18;
/* 0x18 */ u8 mColorId;
u8 padding[3];
}; // Size = 0x1C
@@ -75,7 +75,7 @@ struct J3DAnmKRegKeyTable {
/* 0x06 */ J3DAnmKeyTableBase mGTable;
/* 0x0C */ J3DAnmKeyTableBase mBTable;
/* 0x12 */ J3DAnmKeyTableBase mATable;
/* 0x18 */ u8 _18;
/* 0x18 */ u8 mColorId;
u8 padding[3];
}; // Size = 0x1C
@@ -373,36 +373,42 @@ public:
}
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
u16 getUpdateMaterialNum() const { return field_0x14 / 3; }
u16 getUpdateMaterialNum() const { return mTrackNum / 3; }
u16 getUpdateTexMtxID(u16 idx) const { return mUpdateTexMtxID[idx]; }
u32 getTexMtxCalcType() const { return mTexMtxCalcType; }
Vec& getSRTCenter(u16 idx) const { return mSRTCenter[idx]; }
private:
/* 0x0C */ int field_0xc;
/* 0x10 */ int field_0x10;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 field_0x16;
/* 0x18 */ u16 field_0x18;
/* 0x1A */ u16 field_0x1a;
/* 0x1C */ int field_0x1c;
/* 0x20 */ int field_0x20;
/* 0x24 */ int field_0x24;
/* 0x28 */ u8 mUpdateTexMtxID[4];
/* 0x2C */ u16* mUpdateMaterialID;
/* 0x30 */ JUTNameTab field_0x30;
/* 0x40 */ int field_0x40;
/* 0x44 */ u16 field_0x44;
/* 0x46 */ u16 field_0x46;
/* 0x48 */ u16 field_0x48;
/* 0x4A */ u16 field_0x4a;
/* 0x4C */ int field_0x4c;
/* 0x50 */ int field_0x50;
/* 0x54 */ int field_0x54;
/* 0x58 */ int field_0x58;
/* 0x5C */ u8 field_0x5c[4];
/* 0x60 */ u16* field_0x60;
/* 0x64 */ JUTNameTab field_0x64;
/* 0x74 */ u8 field_0x74[4];
/* 0x78 */ u32 mTexMtxCalcType;
}; // Size: 0x7C
/* 0x0C */ void* field_0xc;
/* 0x10 */ int mDecShift;
/* 0x14 */ u16 mTrackNum;
/* 0x18 */ void* mAnmTable;
/* 0x1C */ u16 mScaleNum;
/* 0x1E */ u16 mRotNum;
/* 0x20 */ u16 mTransNum;
/* 0x24 */ f32* mScaleData;
/* 0x28 */ f32* mRotData;
/* 0x2C */ f32* mTransData;
/* 0x30 */ u8* mUpdateTexMtxID;
/* 0x34 */ u16* mUpdateMaterialID;
/* 0x38 */ JUTNameTab mMaterialName;
/* 0x48 */ Vec* mSRTCenter;
/* 0x4C */ u16 mPostTrackNum;
/* 0x50 */ void * mPostAnmTable;
/* 0x54 */ void * field_0x54;
/* 0x58 */ void * field_0x58;
/* 0x5C */ f32* mPostScaleData;
/* 0x60 */ f32* mPostRotData;
/* 0x64 */ f32* mPostTransData;
/* 0x68 */ u8* mPostUpdateTexMtxID;
/* 0x68 */ u16* mPostUpdateMaterialID;
/* 0x70 */ JUTNameTab mDualName;
/* 0x80 */ Vec* mPostSRTCenter;
/* 0x80 */ u32 mTexMtxCalcType;
}; // Size: 0x88
STATIC_ASSERT(sizeof(J3DAnmTextureSRTKey) == 0x88);
class J3DAnmVisibilityFull : public J3DAnmBase {
public:
@@ -428,16 +434,22 @@ public:
void searchUpdateMaterialID(J3DMaterialTable*);
void searchUpdateMaterialID(J3DModelData*);
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; }
J3DAnmTexPatternFullTable * getAnmTable() const { return mAnmTable; }
virtual ~J3DAnmTexPattern();
virtual s32 getKind() const;
private:
/* 0x0C */ void* field_0xc;
/* 0x10 */ void* mAnmTable;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 mUpdateMaterialNum;
/* 0x18 */ u16* field_0x18;
/* 0x1C */ JUTNameTab field_0x1c;
/* 0x10 */ s16* mTextureIndex;
/* 0x14 */ J3DAnmTexPatternFullTable* mAnmTable;
/* 0x18 */ u16 field_0x18;
/* 0x1A */ u16 mUpdateMaterialNum;
/* 0x1C */ u16* mUpdateMaterialID;
/* 0x20 */ JUTNameTab mMaterialName;
}; // Size: 0x2C
class J3DAnmTevRegKey : public J3DAnmBase {
@@ -457,32 +469,24 @@ public:
u16 getCRegUpdateMaterialID(u16 idx) const { return mCRegUpdateMaterialID[idx]; }
u16 getKRegUpdateMaterialID(u16 idx) const { return mKRegUpdateMaterialID[idx]; }
J3DAnmCRegKeyTable * getAnmCRegKeyTable() const { return mAnmCRegKeyTable; }
J3DAnmKRegKeyTable * getAnmKRegKeyTable() const { return mAnmKRegKeyTable; }
private:
/* 0x0C */ u16 mCRegUpdateMaterialNum;
/* 0x0E */ u16 mKRegUpdateMaterialNum;
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 field_0x16;
/* 0x18 */ u16 field_0x18;
/* 0x1A */ u16 field_0x1a;
/* 0x1C */ u16 field_0x1c;
/* 0x1E */ u16 field_0x1e;
/* 0x20 */ u16* mCRegUpdateMaterialID;
/* 0x24 */ JUTNameTab field_0x24;
/* 0x34 */ u16* mKRegUpdateMaterialID;
/* 0x38 */ JUTNameTab field_0x38;
/* 0x48 */ void* field_0x48;
/* 0x4C */ void* field_0x4c;
/* 0x50 */ int field_0x50;
/* 0x54 */ int field_0x54;
/* 0x58 */ int field_0x58;
/* 0x5C */ int field_0x5c;
/* 0x60 */ int field_0x60;
/* 0x64 */ int field_0x64;
/* 0x68 */ int field_0x68;
/* 0x6C */ int field_0x6c;
}; // Size: 0x70
/* 0x0C */ u32 field_0x0c;
/* 0x10 */ u16 mCRegUpdateMaterialNum;
/* 0x12 */ u16 mKRegUpdateMaterialNum;
/* 0x14 */ u16 mCRegDataCount[4];
/* 0x1C */ u16 mKRegDataCount[4];
/* 0x24 */ u16* mCRegUpdateMaterialID;
/* 0x28 */ JUTNameTab mCRegNameTab;
/* 0x38 */ u16* mKRegUpdateMaterialID;
/* 0x3C */ JUTNameTab mKRegNameTab;
/* 0x4C */ J3DAnmCRegKeyTable* mAnmCRegKeyTable;
/* 0x50 */ J3DAnmKRegKeyTable* mAnmKRegKeyTable;
/* 0x54 */ s16 * mAnmCRegData[4];
/* 0x64 */ s16 * mAnmKRegData[4];
}; // Size: 0x74
class J3DAnmColor : public J3DAnmBase {
public:
@@ -503,10 +507,11 @@ private:
/* 0x0E */ u16 field_0xe;
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ u16 mUpdateMaterialNum;
/* 0x18 */ u16* mUpdateMaterialID;
/* 0x1C */ JUTNameTab field_0x1c;
}; // Size: 0x2C
/* 0x14 */ u32 field_0x14;
/* 0x18 */ u16 mUpdateMaterialNum;
/* 0x1C */ u16* mUpdateMaterialID;
/* 0x20 */ JUTNameTab field_0x1c;
}; // Size: 0x30
class J3DAnmColorKey : public J3DAnmColor {
public:
@@ -8,21 +8,25 @@ typedef struct _GXColorS10 GXColorS10;
class J3DMatColorAnm {
public:
~J3DMatColorAnm() {};
J3DMatColorAnm() {};
~J3DMatColorAnm() {}
J3DMatColorAnm() {}
J3DMatColorAnm(J3DAnmColor * pAnm, u16 materialIdx) {
mAnmColor = pAnm;
mMaterialIdx = materialIdx;
}
void operator=(J3DMatColorAnm const& other) {
mAnmColor = other.mAnmColor;
field_0x0 = other.field_0x0;
mMaterialIdx = other.mMaterialIdx;
mAnmFlag = other.mAnmFlag;
}
void setAnmFlag(bool flag) { mAnmFlag = flag; }
bool getAnmFlag() const { return mAnmFlag; }
void calc(_GXColor* pColor) const { mAnmColor->getColor(field_0x0, pColor); }
void calc(_GXColor* pColor) const { mAnmColor->getColor(mMaterialIdx, pColor); }
private:
/* 0x0 */ u16 field_0x0;
/* 0x0 */ u16 mMaterialIdx;
/* 0x2 */ u16 mAnmFlag;
/* 0x4 */ J3DAnmColor* mAnmColor;
}; // Size: 0x8
@@ -51,65 +55,77 @@ private:
class J3DTexMtxAnm {
public:
~J3DTexMtxAnm() {};
J3DTexMtxAnm() {};
~J3DTexMtxAnm() {}
J3DTexMtxAnm() {}
J3DTexMtxAnm(J3DAnmTextureSRTKey * pAnm, u16 materialIdx) {
mAnmTransform = pAnm;
mMaterialIdx = materialIdx;
}
void operator=(J3DTexMtxAnm const& other) {
mAnmTransform = other.mAnmTransform;
field_0x0 = other.field_0x0;
mMaterialIdx = other.mMaterialIdx;
mAnmFlag = other.mAnmFlag;
}
void setAnmFlag(bool flag) { mAnmFlag = flag; }
void calc(J3DTextureSRTInfo* pSRTInfo) const {
mAnmTransform->getTransform(field_0x0, pSRTInfo);
mAnmTransform->getTransform(mMaterialIdx, pSRTInfo);
}
bool getAnmFlag() const { return mAnmFlag; }
private:
/* 0x0 */ u16 field_0x0;
/* 0x0 */ u16 mMaterialIdx;
/* 0x2 */ u16 mAnmFlag;
/* 0x4 */ J3DAnmTextureSRTKey* mAnmTransform;
}; // Size: 0x8
class J3DTevKColorAnm {
public:
~J3DTevKColorAnm() {};
J3DTevKColorAnm() {};
~J3DTevKColorAnm() {}
J3DTevKColorAnm() {}
J3DTevKColorAnm(J3DAnmTevRegKey * pAnm, u16 materialIdx) {
mAnmTevReg = pAnm;
mMaterialIdx = materialIdx;
}
void operator=(J3DTevKColorAnm const& other) {
mAnmTevReg = other.mAnmTevReg;
field_0x0 = other.field_0x0;
mMaterialIdx = other.mMaterialIdx;
mAnmFlag = other.mAnmFlag;
}
void setAnmFlag(bool flag) { mAnmFlag = flag; }
bool getAnmFlag() const { return mAnmFlag; }
void calc(_GXColor* pColor) const { mAnmTevReg->getTevKonstReg(field_0x0, pColor); }
void calc(_GXColor* pColor) const { mAnmTevReg->getTevKonstReg(mMaterialIdx, pColor); }
private:
/* 0x0 */ u16 field_0x0;
/* 0x0 */ u16 mMaterialIdx;
/* 0x2 */ u16 mAnmFlag;
/* 0x4 */ J3DAnmTevRegKey* mAnmTevReg;
}; // Size: 0x8
class J3DTevColorAnm {
public:
~J3DTevColorAnm() {};
J3DTevColorAnm() {};
~J3DTevColorAnm() {}
J3DTevColorAnm() {}
J3DTevColorAnm(J3DAnmTevRegKey * pAnm, u16 materialIdx) {
mAnmTevReg = pAnm;
mMaterialIdx = materialIdx;
}
void operator=(J3DTevColorAnm const& other) {
mAnmTevReg = other.mAnmTevReg;
field_0x0 = other.field_0x0;
mMaterialIdx = other.mMaterialIdx;
mAnmFlag = other.mAnmFlag;
}
void setAnmFlag(bool flag) { mAnmFlag = flag; }
bool getAnmFlag() const { return mAnmFlag; }
void calc(_GXColorS10* pColor) const { mAnmTevReg->getTevColorReg(field_0x0, pColor); }
void calc(_GXColorS10* pColor) const { mAnmTevReg->getTevColorReg(mMaterialIdx, pColor); }
private:
/* 0x0 */ u16 field_0x0;
/* 0x0 */ u16 mMaterialIdx;
/* 0x2 */ u16 mAnmFlag;
/* 0x4 */ J3DAnmTevRegKey* mAnmTevReg;
}; // Size: 0x8
@@ -119,11 +135,11 @@ public:
J3DMaterialAnm() { initialize(); }
void initialize();
void setMatColorAnm(int, J3DMatColorAnm*);
void setTexMtxAnm(int, J3DTexMtxAnm*);
void setTexNoAnm(int, J3DTexNoAnm*);
void setTevColorAnm(int, J3DTevColorAnm*);
void setTevKColorAnm(int, J3DTevKColorAnm*);
inline void setMatColorAnm(int i, J3DMatColorAnm* pAnm) { mMatColorAnm[i] = pAnm; }
inline void setTexMtxAnm(int i, J3DTexMtxAnm* pAnm) { mTexMtxAnm[i] = pAnm; }
inline void setTexNoAnm(int i, J3DTexNoAnm* pAnm) { mTexNoAnm[i] = pAnm; }
inline void setTevColorAnm(int i, J3DTevColorAnm* pAnm) { mTevColorAnm[i] = pAnm; }
inline void setTevKColorAnm(int i, J3DTevKColorAnm* pAnm) { mTevKColorAnm[i] = pAnm; }
virtual ~J3DMaterialAnm() {};
virtual void calc(J3DMaterial*) const;
@@ -20,19 +20,18 @@ class J3DMaterialTable {
public:
void clear();
J3DMaterialTable();
s32 entryMatColorAnimator(J3DAnmColor*);
s32 entryTexNoAnimator(J3DAnmTexPattern*);
s32 entryTexMtxAnimator(J3DAnmTextureSRTKey*);
s32 entryTevRegAnimator(J3DAnmTevRegKey*);
int removeMatColorAnimator(J3DAnmColor*);
int removeTexNoAnimator(J3DAnmTexPattern*);
int removeTexMtxAnimator(J3DAnmTextureSRTKey*);
int removeTevRegAnimator(J3DAnmTevRegKey*);
void createTexMtxForAnimator(J3DAnmTextureSRTKey*);
void entryMatColorAnimator(J3DAnmColor*);
void entryTexNoAnimator(J3DAnmTexPattern*);
void entryTexMtxAnimator(J3DAnmTextureSRTKey*);
void entryTevRegAnimator(J3DAnmTevRegKey*);
void setMatColorAnimator(J3DAnmColor*, J3DMatColorAnm *);
void setTexNoAnimator(J3DAnmTexPattern*, J3DTexNoAnm*);
void setTexMtxAnimator(J3DAnmTextureSRTKey*, J3DTexMtxAnm*, J3DTexMtxAnm*);
void setTevRegAnimator(J3DAnmTevRegKey*, J3DTevColorAnm*, J3DTevKColorAnm*);
s32 setMatColorAnimator(J3DAnmColor*, J3DMatColorAnm *);
s32 setTexNoAnimator(J3DAnmTexPattern*, J3DTexNoAnm*);
s32 setTexMtxAnimator(J3DAnmTextureSRTKey*, J3DTexMtxAnm*, J3DTexMtxAnm*);
s32 setTevRegAnimator(J3DAnmTevRegKey*, J3DTevColorAnm*, J3DTevKColorAnm*);
virtual ~J3DMaterialTable();
@@ -50,10 +49,11 @@ private:
/* 0x06 */ u16 mUniqueMatNum;
/* 0x08 */ J3DMaterial** mMaterialNodePointer;
/* 0x0C */ JUTNameTab* mMaterialName;
/* 0x10 */ u32 field_0x10;
/* 0x10 */ u16 field_0x10;
/* 0x14 */ u32 field_0x14;
/* 0x18 */ J3DTexture* mTexture;
/* 0x1C */ JUTNameTab* mTextureName;
}; // Size: 0x20
/* 0x20 */ u16 field_0x20;
}; // Size: 0x22
#endif /* J3DMATERIALATTACH_H */
@@ -63,6 +63,8 @@ struct J3DTexCoord : public J3DTexCoordInfo {
u8 getTexGenMtx() { return mTexGenMtx & 0xff; }
u16 getTexMtxReg() { return mTexMtxReg & 0xff; }
void setTexGenMtx(u8 v) { mTexGenMtx = v; }
void resetTexMtxReg() {
mTexMtxReg = mTexGenMtx;
}
@@ -4,16 +4,24 @@
//
#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
/* 802F5C48-802F5C70 .text clear__16J3DMaterialTableFv */
void J3DMaterialTable::clear() {
/* Nonmatching */
mMaterialNum = 0;
mMaterialNodePointer = NULL;
mMaterialName = NULL;
field_0x10 = NULL;
field_0x14 = NULL;
mTexture = NULL;
mTextureName = NULL;
field_0x20 = 0;
}
/* 802F5C70-802F5CAC .text __ct__16J3DMaterialTableFv */
J3DMaterialTable::J3DMaterialTable() {
/* Nonmatching */
clear();
}
/* 802F5CAC-802F5CF4 .text __dt__16J3DMaterialTableFv */
@@ -22,56 +30,271 @@ J3DMaterialTable::~J3DMaterialTable() {
}
/* 802F5CF4-802F5DC8 .text entryMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor */
void J3DMaterialTable::entryMatColorAnimator(J3DAnmColor*) {
/* Nonmatching */
s32 J3DMaterialTable::entryMatColorAnimator(J3DAnmColor* pAnm) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(materialID)->getMaterialAnm();
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setMatColorAnm(0, new J3DMatColorAnm(pAnm, i));
}
}
return ret;
}
/* 802F5DC8-802F6058 .text entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey */
void J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey*) {
/* Nonmatching */
s32 J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey* pAnm) {
}
/* 802F6058-802F61E8 .text entryTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey */
void J3DMaterialTable::entryTevRegAnimator(J3DAnmTevRegKey*) {
/* Nonmatching */
s32 J3DMaterialTable::entryTevRegAnimator(J3DAnmTevRegKey* pAnm) {
s32 ret = 0;
u16 cRegMaterialNum = pAnm->getCRegUpdateMaterialNum();
u16 kRegMaterialNum = pAnm->getKRegUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
for (u16 i = 0; i < cRegMaterialNum; i++) {
u16 materialID = pAnm->getCRegUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(materialID)->getMaterialAnm();
u8 colorId = pAnm->getAnmCRegKeyTable()[i].mColorId;
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setTevColorAnm(colorId, new J3DTevColorAnm(pAnm, i));
}
}
for (u16 i = 0; i < kRegMaterialNum; i++) {
u16 materialID = pAnm->getKRegUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(materialID)->getMaterialAnm();
u8 colorId = pAnm->getAnmKRegKeyTable()[i].mColorId;
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setTevKColorAnm(colorId, new J3DTevKColorAnm(pAnm, i));
}
}
return ret;
}
/* 802F61E8-802F6260 .text removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor */
int J3DMaterialTable::removeMatColorAnimator(J3DAnmColor*) {
/* Nonmatching */
int J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* pAnm) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(materialID)->getMaterialAnm();
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setMatColorAnm(0, NULL);
}
}
return ret;
}
/* 802F6260-802F62F4 .text removeTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPattern */
int J3DMaterialTable::removeTexNoAnimator(J3DAnmTexPattern*) {
/* Nonmatching */
int J3DMaterialTable::removeTexNoAnimator(J3DAnmTexPattern* pAnm) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(materialID)->getMaterialAnm();
u8 texNo = pAnm->getAnmTable()[i].mTexNo;
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setTexNoAnm(texNo, NULL);
}
}
return ret;
}
/* 802F62F4-802F6398 .text removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey */
int J3DMaterialTable::removeTexMtxAnimator(J3DAnmTextureSRTKey*) {
/* Nonmatching */
int J3DMaterialTable::removeTexMtxAnimator(J3DAnmTextureSRTKey* pAnm) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterial * pMaterial = getMaterialNodePointer(materialID);
J3DMaterialAnm * pMatAnm = pMaterial->getMaterialAnm();
u8 texMtxID = pAnm->getUpdateTexMtxID(i);
if (pMatAnm == NULL) {
ret = 1;
} else if (texMtxID != 0xFF) {
pMatAnm->setTexMtxAnm(texMtxID, NULL);
}
}
}
return ret;
}
/* 802F6398-802F64B8 .text removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey */
int J3DMaterialTable::removeTevRegAnimator(J3DAnmTevRegKey*) {
/* Nonmatching */
int J3DMaterialTable::removeTevRegAnimator(J3DAnmTevRegKey* pAnm) {
s32 ret = 0;
u16 cRegMaterialNum = pAnm->getCRegUpdateMaterialNum();
u16 kRegMaterialNum = pAnm->getKRegUpdateMaterialNum();
for (u16 i = 0; i < cRegMaterialNum; i++) {
if (pAnm->getCRegUpdateMaterialID(i) != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(pAnm->getCRegUpdateMaterialID(i))->getMaterialAnm();
u8 colorId = pAnm->getAnmCRegKeyTable()[i].mColorId;
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setTevColorAnm(colorId, NULL);
}
}
for (u16 i = 0; i < kRegMaterialNum; i++) {
if (pAnm->getKRegUpdateMaterialID(i) != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(pAnm->getKRegUpdateMaterialID(i))->getMaterialAnm();
u8 colorId = pAnm->getAnmKRegKeyTable()[i].mColorId;
if (pMatAnm == NULL) {
ret = 1;
} else {
pMatAnm->setTevKColorAnm(colorId, NULL);
}
}
}
return ret;
}
/* 802F64B8-802F6550 .text setMatColorAnimator__16J3DMaterialTableFP11J3DAnmColorP14J3DMatColorAnm */
void J3DMaterialTable::setMatColorAnimator(J3DAnmColor*, J3DMatColorAnm*) {
/* Nonmatching */
s32 J3DMaterialTable::setMatColorAnimator(J3DAnmColor* pAnm, J3DMatColorAnm* pAnmR) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(materialID)->getMaterialAnm();
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setMatColorAnm(0, &pAnmR[i]);
}
}
return ret;
}
/* 802F6550-802F6600 .text setTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPatternP11J3DTexNoAnm */
void J3DMaterialTable::setTexNoAnimator(J3DAnmTexPattern*, J3DTexNoAnm*) {
/* Nonmatching */
s32 J3DMaterialTable::setTexNoAnimator(J3DAnmTexPattern* pAnm, J3DTexNoAnm* pAnmR) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(materialID)->getMaterialAnm();
u8 texNo = pAnm->getAnmTable()[i].mTexNo;
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setTexNoAnm(texNo, &pAnmR[i]);
}
}
return ret;
}
/* 802F6600-802F6798 .text setTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKeyP12J3DTexMtxAnmP12J3DTexMtxAnm */
void J3DMaterialTable::setTexMtxAnimator(J3DAnmTextureSRTKey*, J3DTexMtxAnm*, J3DTexMtxAnm*) {
/* Nonmatching */
s32 J3DMaterialTable::setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* pTexAnmR, J3DTexMtxAnm* pDualAnmR) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
if (materialID != 0xFFFF) {
J3DMaterial * pMaterial = getMaterialNodePointer(materialID);
J3DMaterialAnm * pMatAnm = pMaterial->getMaterialAnm();
u8 texMtxID = pAnm->getUpdateTexMtxID(i);
if (pMatAnm == NULL) {
ret = 1;
} else if (texMtxID != 0xFF) {
if (pMaterial->getTexGenBlock()->getTexCoord(texMtxID) != NULL) {
pMaterial->getTexGenBlock()->getTexCoord(texMtxID)->setTexGenMtx(GX_TEXMTX0 + (texMtxID & 0xFF) * 3);
}
J3DTexMtx *pTexMtx = pMaterial->getTexGenBlock()->getTexMtx(texMtxID);
pTexMtx->getTexMtxInfo().mInfo = ((pTexMtx->getTexMtxInfo().mInfo) & 0x7F) | (u8)(pAnm->getTexMtxCalcType() << 7);
pTexMtx->getTexMtxInfo().mCenter.x = pAnm->getSRTCenter(i).x;
pTexMtx->getTexMtxInfo().mCenter.x = pAnm->getSRTCenter(i).y;
pTexMtx->getTexMtxInfo().mCenter.z = pAnm->getSRTCenter(i).z;
pMatAnm->setTexMtxAnm(texMtxID, &pTexAnmR[i]);
}
}
}
return ret;
}
/* 802F6798-802F68F0 .text setTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKeyP14J3DTevColorAnmP15J3DTevKColorAnm */
void J3DMaterialTable::setTevRegAnimator(J3DAnmTevRegKey*, J3DTevColorAnm*, J3DTevKColorAnm*) {
/* Nonmatching */
s32 J3DMaterialTable::setTevRegAnimator(J3DAnmTevRegKey* pAnm, J3DTevColorAnm* pCRegAnmR, J3DTevKColorAnm* pKRegAnmR) {
s32 ret = 0;
u16 cRegMaterialNum = pAnm->getCRegUpdateMaterialNum();
u16 kRegMaterialNum = pAnm->getKRegUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
for (u16 i = 0; i < cRegMaterialNum; i++) {
if (pAnm->getCRegUpdateMaterialID(i) != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(pAnm->getCRegUpdateMaterialID(i))->getMaterialAnm();
u8 colorId = pAnm->getAnmCRegKeyTable()[i].mColorId;
if (pMatAnm == NULL)
ret = 1;
else
pMatAnm->setTevColorAnm(colorId, &pCRegAnmR[i]);
}
}
for (u16 i = 0; i < kRegMaterialNum; i++) {
if (pAnm->getKRegUpdateMaterialID(i) != 0xFFFF) {
J3DMaterialAnm * pMatAnm = getMaterialNodePointer(pAnm->getKRegUpdateMaterialID(i))->getMaterialAnm();
u8 colorId = pAnm->getAnmKRegKeyTable()[i].mColorId;
if (pMatAnm == NULL) {
ret = 1;
} else {
pMatAnm->setTevKColorAnm(colorId, &pKRegAnmR[i]);
}
}
}
return ret;
}