mirror of https://github.com/zeldaret/tp.git
90 lines
3.3 KiB
C++
90 lines
3.3 KiB
C++
#ifndef J3DMTXBUFFER_H
|
|
#define J3DMTXBUFFER_H
|
|
|
|
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
|
|
|
|
class J3DModelData;
|
|
|
|
/**
|
|
* @ingroup jsystem-j3d
|
|
*
|
|
*/
|
|
class J3DMtxBuffer {
|
|
public:
|
|
J3DMtxBuffer() { initialize(); }
|
|
|
|
/* 80326214 */ void initialize();
|
|
/* 80326258 */ s32 create(J3DModelData*, u32);
|
|
/* 80326364 */ J3DError createAnmMtx(J3DModelData*);
|
|
/* 803263F0 */ s32 createWeightEnvelopeMtx(J3DModelData*);
|
|
/* 8032648C */ s32 setNoUseDrawMtx();
|
|
/* 803264B8 */ s32 createDoubleDrawMtx(J3DModelData*, u32);
|
|
/* 80326664 */ s32 createBumpMtxArray(J3DModelData*, u32);
|
|
/* 803268D4 */ void calcWeightEnvelopeMtx();
|
|
/* 80326ACC */ void calcDrawMtx(u32, Vec const&, f32 const (&)[3][4]);
|
|
/* 80326D3C */ void calcNrmMtx();
|
|
/* 80326EF0 */ void calcBBoardMtx();
|
|
|
|
MtxP getAnmMtx(int idx) const { return mpAnmMtx[idx]; }
|
|
void setAnmMtx(int i, Mtx m) { MTXCopy(m, (MtxP)mpAnmMtx[i]); }
|
|
MtxP getWeightAnmMtx(int idx) const { return mpWeightEvlpMtx[idx]; }
|
|
MtxP getUserAnmMtx(int idx) const { return mpUserAnmMtx[idx]; }
|
|
|
|
void setScaleFlag(int idx, u8 flag) { mpScaleFlagArr[idx] = flag; }
|
|
u32* getCurrentViewNoPtr() { return &mCurrentViewNo; }
|
|
u8* getScaleFlagArray() const { return mpScaleFlagArr; }
|
|
u8 getScaleFlag(int idx) const { return mpScaleFlagArr[idx]; }
|
|
u8 getEnvScaleFlag(int idx) const { return mpEvlpScaleFlagArr[idx]; }
|
|
Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr[1]; }
|
|
Mtx* getDrawMtxPtr() const { return mpDrawMtxArr[1][mCurrentViewNo]; }
|
|
Mtx* getDrawMtx(int idx) const { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; }
|
|
Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxArr[1]; }
|
|
Mtx33* getNrmMtxPtr() const { return mpNrmMtxArr[1][mCurrentViewNo]; }
|
|
Mtx33* getNrmMtx(u16 idx) const { return &mpNrmMtxArr[1][mCurrentViewNo][idx]; }
|
|
Mtx33*** getBumpMtxPtrPtr() const { return mpBumpMtxArr[1]; }
|
|
Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[1][idx][mCurrentViewNo]; }
|
|
J3DJointTree* getJointTree() const { return mJointTree; }
|
|
|
|
void setNrmMtx(int idx, Mtx* mtx) {
|
|
J3DPSMtx33CopyFrom34(*mtx, mpNrmMtxArr[1][mCurrentViewNo][idx]);
|
|
}
|
|
|
|
void swapDrawMtx() {
|
|
Mtx* tmp = mpDrawMtxArr[0][mCurrentViewNo];
|
|
mpDrawMtxArr[0][mCurrentViewNo] = mpDrawMtxArr[1][mCurrentViewNo];
|
|
mpDrawMtxArr[1][mCurrentViewNo] = tmp;
|
|
}
|
|
|
|
void swapNrmMtx() {
|
|
Mtx33* tmp = mpNrmMtxArr[0][mCurrentViewNo];
|
|
mpNrmMtxArr[0][mCurrentViewNo] = mpNrmMtxArr[1][mCurrentViewNo];
|
|
mpNrmMtxArr[1][mCurrentViewNo] = tmp;
|
|
}
|
|
|
|
static Mtx sNoUseDrawMtx;
|
|
static Mtx33 sNoUseNrmMtx;
|
|
static Mtx* sNoUseDrawMtxPtr;
|
|
static Mtx33* sNoUseNrmMtxPtr;
|
|
|
|
private:
|
|
/* 0x00 */ J3DJointTree* mJointTree;
|
|
/* 0x04 */ u8* mpScaleFlagArr;
|
|
/* 0x08 */ u8* mpEvlpScaleFlagArr;
|
|
/* 0x0C */ Mtx* mpAnmMtx;
|
|
/* 0x10 */ Mtx* mpWeightEvlpMtx;
|
|
/* 0x14 */ Mtx** mpDrawMtxArr[2];
|
|
/* 0x1C */ Mtx33** mpNrmMtxArr[2];
|
|
/* 0x24 */ Mtx33*** mpBumpMtxArr[2];
|
|
/* 0x2C */ u32 mFlags;
|
|
/* 0x30 */ u32 mCurrentViewNo;
|
|
/* 0x34 */ Mtx* mpUserAnmMtx;
|
|
|
|
public:
|
|
/* 803283B4 */ virtual ~J3DMtxBuffer() {}
|
|
};
|
|
|
|
void J3DCalcViewBaseMtx(f32 (*param_0)[4], Vec const& param_1, f32 const (¶m_2)[3][4],
|
|
f32 (*param_3)[4]);
|
|
|
|
#endif /* J3DMTXBUFFER_H */
|