Files
tp/include/JSystem/J3DGraphAnimator/J3DJointTree.h
T

96 lines
3.2 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef J3DJOINTTREE_H
#define J3DJOINTTREE_H
2021-10-11 09:38:53 -07:00
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
2021-03-28 22:49:05 +02:00
2023-05-12 12:10:14 -07:00
class JUTNameTab;
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-j3d
*
*/
2022-12-30 14:09:21 -08:00
struct J3DModelHierarchy {
/* 0x0 */ u16 mType;
/* 0x2 */ u16 mValue;
};
2023-09-04 16:17:51 -07:00
class J3DMaterialTable;
2021-10-11 09:38:53 -07:00
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-j3d
*
*/
2021-10-11 09:38:53 -07:00
struct J3DDrawMtxData {
/* 803115E0 */ J3DDrawMtxData();
/* 803115F4 */ ~J3DDrawMtxData();
/* 0x0 */ u16 mEntryNum;
/* 0x2 */ u16 mDrawFullWgtMtxNum;
/* 0x4 */ u8* mDrawMtxFlag;
/* 0x8 */ u16* mDrawMtxIndex;
}; // Size: 0xC
class J3DShapeTable;
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-j3d
*
*/
2021-10-11 09:38:53 -07:00
class J3DJointTree {
public:
/* 80325A18 */ J3DJointTree();
/* 80325A9C */ void makeHierarchy(J3DJoint*, J3DModelHierarchy const**, J3DMaterialTable*,
J3DShapeTable*);
/* 80325C00 */ void findImportantMtxIndex();
/* 80325CAC */ virtual void calc(J3DMtxBuffer*, Vec const&, f32 const (&)[3][4]);
2024-10-15 16:59:31 -04:00
/* 80325D24 */ virtual ~J3DJointTree() {}
2021-10-11 09:38:53 -07:00
2023-11-08 22:56:00 -05:00
J3DModelHierarchy const* getHierarchy() { return mHierarchy; }
void setHierarchy(J3DModelHierarchy* hierarchy) { mHierarchy = hierarchy; }
void setBasicMtxCalc(J3DMtxCalc* calc) { mBasicMtxCalc = calc; }
2021-10-11 09:38:53 -07:00
u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; }
2024-11-10 11:53:09 +02:00
u16* getWEvlpMixIndex() const { return mWEvlpMixMtxIndex; }
2022-12-30 14:09:21 -08:00
u8 getWEvlpMixMtxNum(u16 idx) const { return mWEvlpMixMtxNum[idx]; }
2024-10-15 16:59:31 -04:00
u16 * getWEvlpMixMtxIndex() const { return mWEvlpMixMtxIndex; }
2022-12-30 14:09:21 -08:00
f32 * getWEvlpMixWeight() const { return mWEvlpMixWeight; }
u16 * getWEvlpImportantMtxIndex() const { return mWEvlpImportantMtxIdx; }
u16 getDrawFullWgtMtxNum() const { return mDrawMtxData.mDrawFullWgtMtxNum; }
2021-12-06 06:51:53 -05:00
u16 getJointNum() const { return mJointNum; }
u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; }
2022-12-31 11:20:28 -08:00
u8 getDrawMtxFlag(u16 idx) const { return mDrawMtxData.mDrawMtxFlag[idx]; }
2023-07-14 11:30:07 +03:00
u16 getDrawMtxIndex(u16 idx) const { return mDrawMtxData.mDrawMtxIndex[idx]; }
2023-11-08 22:56:00 -05:00
J3DDrawMtxData* getDrawMtxData() { return &mDrawMtxData; }
2022-10-18 05:15:45 -07:00
JUTNameTab* getJointName() const { return mJointName; }
2021-12-06 06:51:53 -05:00
J3DJoint* getRootNode() { return mRootNode; }
2021-10-11 09:38:53 -07:00
J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; }
2021-12-06 06:51:53 -05:00
J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; }
2022-04-23 22:17:28 -07:00
Mtx& getInvJointMtx(s32 idx) const { return mInvJointMtx[idx]; }
u32 getModelDataType() const { return mModelDataType; }
2023-11-08 22:56:00 -05:00
void setModelDataType(u32 type) { mModelDataType = type; }
2023-07-14 11:30:07 +03:00
bool checkFlag(u32 flag) { return mFlags & flag; }
2023-11-08 22:56:00 -05:00
void setFlag(u32 flag) { mFlags = flag; }
2021-10-11 09:38:53 -07:00
private:
2023-11-08 22:56:00 -05:00
friend class J3DModelLoader;
2021-10-11 09:38:53 -07:00
/* 0x04 */ J3DModelHierarchy* mHierarchy;
/* 0x08 */ u32 mFlags;
/* 0x0C */ u32 mModelDataType;
/* 0x10 */ J3DJoint* mRootNode;
/* 0x14 */ J3DMtxCalc* mBasicMtxCalc;
/* 0x18 */ J3DJoint** mJointNodePointer;
/* 0x1C */ u16 mJointNum;
/* 0x1E */ u16 mWEvlpMtxNum;
2022-12-30 14:09:21 -08:00
/* 0x20 */ u8* mWEvlpMixMtxNum;
2024-10-15 16:59:31 -04:00
/* 0x24 */ u16* mWEvlpMixMtxIndex;
2022-12-30 14:09:21 -08:00
/* 0x28 */ f32* mWEvlpMixWeight;
2021-10-11 09:38:53 -07:00
/* 0x2C */ Mtx* mInvJointMtx;
2022-12-30 14:09:21 -08:00
/* 0x30 */ u16* mWEvlpImportantMtxIdx;
2021-12-06 06:51:53 -05:00
/* 0x34 */ J3DDrawMtxData mDrawMtxData;
/* 0x40 */ u32 field_0x40;
2021-10-11 09:38:53 -07:00
/* 0x44 */ JUTNameTab* mJointName;
}; // Size: 0x48
2021-03-28 22:49:05 +02:00
#endif /* J3DJOINTTREE_H */