mirror of https://github.com/zeldaret/tp.git
104 lines
3.5 KiB
C++
104 lines
3.5 KiB
C++
#ifndef J3DSKINDEFORM_H
|
|
#define J3DSKINDEFORM_H
|
|
|
|
#include "JSystem/J3DGraphAnimator/J3DCluster.h"
|
|
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
|
|
#include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h"
|
|
#include "JSystem/J3DGraphBase/J3DVertex.h"
|
|
#include "dolphin/types.h"
|
|
|
|
class J3DModel;
|
|
class J3DAnmCluster;
|
|
|
|
class J3DDeformData {
|
|
public:
|
|
/* 8032E1F8 */ J3DDeformData();
|
|
/* 8032E230 */ void offAllFlag(u32);
|
|
/* 8032E298 */ void deform(J3DVertexBuffer*);
|
|
/* 8032E274 */ void deform(J3DModel*);
|
|
/* 8032E364 */ void setAnm(J3DAnmCluster*);
|
|
|
|
private:
|
|
/* 0x00 */ u16 mClusterNum;
|
|
/* 0x02 */ u16 mClusterKeyNum;
|
|
/* 0x04 */ u16 field_0x4;
|
|
/* 0x08 */ J3DCluster** mClusterPointer;
|
|
/* 0x0C */ J3DClusterKey** mClusterKeyPointer;
|
|
/* 0x10 */ int field_0x10;
|
|
/* 0x14 */ u16 field_0x14;
|
|
/* 0x16 */ u16 field_0x16;
|
|
/* 0x18 */ void* mVtxPos;
|
|
/* 0x1C */ void* mVtxNrm;
|
|
/* 0x20 */ int field_0x20;
|
|
/* 0x24 */ int field_0x24;
|
|
}; // Size: 0x28
|
|
|
|
struct J3DSkinNList {
|
|
/* 8032C6E4 */ J3DSkinNList();
|
|
/* 8032C85C */ void calcSkin_VtxPosF32(f32 (*)[4], void*, void*);
|
|
/* 8032C8E4 */ void calcSkin_VtxNrmF32(f32 (*)[4], void*, void*);
|
|
|
|
/* 0x00 */ int field_0x0;
|
|
/* 0x04 */ int field_0x4;
|
|
/* 0x08 */ int field_0x8;
|
|
/* 0x0C */ int field_0xc;
|
|
/* 0x10 */ u16 field_0x10;
|
|
/* 0x12 */ u16 field_0x12;
|
|
}; // Size: 0x14
|
|
|
|
class J3DSkinDeform {
|
|
public:
|
|
/* 8032C96C */ J3DSkinDeform();
|
|
/* 8032C9B0 */ void initSkinInfo(J3DModelData*);
|
|
/* 8032CF44 */ void initMtxIndexArray(J3DModelData*);
|
|
/* 8032D378 */ void changeFastSkinDL(J3DModelData*);
|
|
/* 8032D5C4 */ void calcNrmMtx(J3DMtxBuffer*);
|
|
/* 8032D738 */ void transformVtxPosNrm(J3DModelData*);
|
|
/* 8032D87C */ void calcAnmInvJointMtx(J3DMtxBuffer*);
|
|
/* 8032D8F4 */ void deformFastVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
|
/* 8032DA1C */ void deformFastVtxNrm_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
|
/* 8032DB50 */ void deformVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
|
/* 8032DC74 */ void deformVtxPos_S16(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
|
/* 8032DDB8 */ void deformVtxNrm_F32(J3DVertexBuffer*) const;
|
|
/* 8032DEBC */ void deformVtxNrm_S16(J3DVertexBuffer*) const;
|
|
/* 8032DFDC */ void deform(J3DModel*);
|
|
|
|
/* 8032E064 */ virtual void deform(J3DVertexBuffer*, J3DMtxBuffer*);
|
|
/* 8032E1B0 */ virtual ~J3DSkinDeform();
|
|
|
|
static u8 sWorkArea_WEvlpMixMtx[4096];
|
|
static u8 sWorkArea_WEvlpMixWeight[4096];
|
|
static u8 sWorkArea_MtxReg[2048 + 8 /* padding */];
|
|
|
|
private:
|
|
/* 0x04 */ void** mPosData;
|
|
/* 0x08 */ void** field_0x8;
|
|
/* 0x0C */ void** field_0xc;
|
|
/* 0x10 */ Mtx** mNrmMtx;
|
|
/* 0x14 */ u32 mFlags;
|
|
/* 0x18 */ u8 field_0x18;
|
|
/* 0x19 */ u8 field_0x19;
|
|
/* 0x1C */ int field_0x1c;
|
|
/* 0x20 */ int field_0x20;
|
|
/* 0x24 */ J3DSkinNList** mSkinNList;
|
|
};
|
|
|
|
class J3DDeformer {
|
|
public:
|
|
/* 8032E39C */ J3DDeformer(J3DDeformData*);
|
|
/* 8032EAB4 */ void deform(J3DVertexBuffer*, u16, f32*);
|
|
/* 8032E3BC */ void deform(J3DVertexBuffer*, u16);
|
|
/* 8032E4A4 */ void deform_VtxPosF32(J3DVertexBuffer*, J3DCluster*, J3DClusterKey*, f32*);
|
|
/* 8032E60C */ void deform_VtxNrmF32(J3DVertexBuffer*, J3DCluster*, J3DClusterKey*, f32*);
|
|
/* 8032EBCC */ void normalizeWeight(int, f32*);
|
|
|
|
private:
|
|
/* 0x00 */ J3DDeformData* mDeformData;
|
|
/* 0x04 */ J3DAnmCluster* mAnmCluster;
|
|
/* 0x08 */ int field_0x8;
|
|
/* 0x0C */ int field_0xc;
|
|
/* 0x10 */ u32 mFlags;
|
|
}; // Size: 0x14
|
|
|
|
#endif /* J3DSKINDEFORM_H */
|