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

89 lines
3.2 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef J3DMTXBUFFER_H
#define J3DMTXBUFFER_H
2021-10-11 09:38:53 -07:00
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
2021-03-28 22:49:05 +02:00
2021-10-11 09:38:53 -07:00
class J3DModelData;
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-j3d
*
*/
2021-10-11 09:38:53 -07:00
class J3DMtxBuffer {
public:
J3DMtxBuffer() { initialize(); }
/* 80326214 */ void initialize();
/* 80326258 */ s32 create(J3DModelData*, u32);
2025-04-16 00:09:31 +03:00
/* 80326364 */ J3DError createAnmMtx(J3DModelData*);
2022-12-31 10:44:40 -08:00
/* 803263F0 */ s32 createWeightEnvelopeMtx(J3DModelData*);
/* 8032648C */ s32 setNoUseDrawMtx();
/* 803264B8 */ s32 createDoubleDrawMtx(J3DModelData*, u32);
/* 80326664 */ s32 createBumpMtxArray(J3DModelData*, u32);
2021-10-11 09:38:53 -07:00
/* 803268D4 */ void calcWeightEnvelopeMtx();
/* 80326ACC */ void calcDrawMtx(u32, Vec const&, f32 const (&)[3][4]);
/* 80326D3C */ void calcNrmMtx();
/* 80326EF0 */ void calcBBoardMtx();
2025-09-04 07:56:59 -07:00
MtxP getAnmMtx(int idx) { return mpAnmMtx[idx]; }
void setAnmMtx(int i, Mtx m) { MTXCopy(m, (MtxP)mpAnmMtx[i]); }
2025-09-04 07:56:59 -07:00
MtxP getWeightAnmMtx(int idx) { return mpWeightEvlpMtx[idx]; }
MtxP getUserAnmMtx(int idx) { return mpUserAnmMtx[idx]; }
2021-10-11 09:38:53 -07:00
2022-12-31 11:20:28 -08:00
void setScaleFlag(int idx, u8 flag) { mpScaleFlagArr[idx] = flag; }
2021-12-06 06:51:53 -05:00
u32* getCurrentViewNoPtr() { return &mCurrentViewNo; }
2022-12-31 11:20:28 -08:00
u8* getScaleFlagArray() const { return mpScaleFlagArr; }
2023-07-14 11:30:07 +03:00
u8 getScaleFlag(int idx) const { return mpScaleFlagArr[idx]; }
u8 getEnvScaleFlag(int idx) const { return mpEvlpScaleFlagArr[idx]; }
2025-09-04 07:56:59 -07:00
Mtx** getDrawMtxPtrPtr() { return mpDrawMtxArr[1]; }
Mtx* getDrawMtxPtr() { return mpDrawMtxArr[1][mCurrentViewNo]; }
Mtx* getDrawMtx(int idx) { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; }
Mtx33** getNrmMtxPtrPtr() { return mpNrmMtxArr[1]; }
Mtx33* getNrmMtxPtr() { return mpNrmMtxArr[1][mCurrentViewNo]; }
Mtx33* getNrmMtx(int idx) { return &mpNrmMtxArr[1][mCurrentViewNo][idx]; }
2022-12-31 11:44:43 -08:00
Mtx33*** getBumpMtxPtrPtr() const { return mpBumpMtxArr[1]; }
2025-09-04 07:56:59 -07:00
Mtx33* getBumpMtxPtr(int idx) { return mpBumpMtxArr[1][idx][mCurrentViewNo]; }
2023-07-14 11:30:07 +03:00
J3DJointTree* getJointTree() const { return mJointTree; }
2021-10-11 09:38:53 -07:00
2025-09-04 07:56:59 -07:00
void setNrmMtx(int idx, Mtx mtx) {
J3DPSMtx33CopyFrom34(mtx, mpNrmMtxArr[1][mCurrentViewNo][idx]);
2024-10-15 16:59:31 -04:00
}
void swapDrawMtx() {
2022-12-31 11:20:28 -08:00
Mtx* tmp = mpDrawMtxArr[0][mCurrentViewNo];
mpDrawMtxArr[0][mCurrentViewNo] = mpDrawMtxArr[1][mCurrentViewNo];
mpDrawMtxArr[1][mCurrentViewNo] = tmp;
}
void swapNrmMtx() {
2022-12-31 11:20:28 -08:00
Mtx33* tmp = mpNrmMtxArr[0][mCurrentViewNo];
mpNrmMtxArr[0][mCurrentViewNo] = mpNrmMtxArr[1][mCurrentViewNo];
mpNrmMtxArr[1][mCurrentViewNo] = tmp;
}
2021-10-11 09:38:53 -07:00
static Mtx sNoUseDrawMtx;
static Mtx33 sNoUseNrmMtx;
static Mtx* sNoUseDrawMtxPtr;
static Mtx33* sNoUseNrmMtxPtr;
/* 0x00 */ J3DJointTree* mJointTree;
2022-12-31 11:20:28 -08:00
/* 0x04 */ u8* mpScaleFlagArr;
/* 0x08 */ u8* mpEvlpScaleFlagArr;
2021-12-06 06:51:53 -05:00
/* 0x0C */ Mtx* mpAnmMtx;
2022-12-31 11:20:28 -08:00
/* 0x10 */ Mtx* mpWeightEvlpMtx;
/* 0x14 */ Mtx** mpDrawMtxArr[2];
/* 0x1C */ Mtx33** mpNrmMtxArr[2];
2024-10-15 16:59:31 -04:00
/* 0x24 */ Mtx33*** mpBumpMtxArr[2];
2025-09-04 07:56:59 -07:00
/* 0x2C */ u32 mMtxNum;
2021-12-06 06:51:53 -05:00
/* 0x30 */ u32 mCurrentViewNo;
2022-12-31 11:20:28 -08:00
/* 0x34 */ Mtx* mpUserAnmMtx;
2021-10-11 09:38:53 -07:00
public:
2024-10-15 16:59:31 -04:00
/* 803283B4 */ virtual ~J3DMtxBuffer() {}
2021-10-11 09:38:53 -07:00
};
void J3DCalcViewBaseMtx(f32 (*param_0)[4], Vec const& param_1, f32 const (&param_2)[3][4],
f32 (*param_3)[4]);
2021-03-28 22:49:05 +02:00
#endif /* J3DMTXBUFFER_H */