mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 23:05:11 -04:00
137 lines
4.4 KiB
C++
137 lines
4.4 KiB
C++
#ifndef J3DSHAPEMTX_H
|
|
#define J3DSHAPEMTX_H
|
|
|
|
#include "JSystem/J3DGraphBase/J3DShape.h"
|
|
#include "dolphin/mtx/mtx.h"
|
|
|
|
class J3DShapeMtxImm : public J3DShapeMtx {
|
|
public:
|
|
typedef void (J3DShapeMtxImm::*MtxLoadImm)(int mtxNo, u16 index) const;
|
|
|
|
J3DShapeMtxImm(u16 useMtxIndex) : J3DShapeMtx(useMtxIndex) {}
|
|
|
|
virtual ~J3DShapeMtxImm() {}
|
|
virtual u32 getType() const { return 'SMIM'; }
|
|
virtual void load() const;
|
|
virtual void loadNrmMtx(int, u16) const;
|
|
|
|
void loadMtxImm_PNGP(int, u16) const;
|
|
void loadMtxImm_PCPU(int, u16) const;
|
|
void loadMtxImm_NCPU(int, u16) const;
|
|
void loadMtxImm_PNCPU(int, u16) const;
|
|
void loadMtxImm_PNGP_LOD(int, u16) const;
|
|
|
|
static MtxLoadImm sMtxLoadPipeline[4];
|
|
};
|
|
|
|
class J3DShapeMtxMultiImm : public J3DShapeMtxImm {
|
|
public:
|
|
J3DShapeMtxMultiImm(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
|
|
: J3DShapeMtxImm(useMtxIndex), mUseMtxNum(useMtxNum), mUseMtxIndexTable(useMtxIndexTable) {}
|
|
|
|
virtual ~J3DShapeMtxMultiImm() {}
|
|
virtual u32 getType() const { return 'SMMI'; }
|
|
virtual u32 getUseMtxNum() const { return mUseMtxNum; }
|
|
virtual u16 getUseMtxIndex(u16 i) const { return mUseMtxIndexTable[i]; }
|
|
virtual void load() const;
|
|
virtual void loadNrmMtx(int, u16) const;
|
|
|
|
private:
|
|
/* 0x8 */ u16 mUseMtxNum;
|
|
/* 0xC */ u16* mUseMtxIndexTable;
|
|
};
|
|
|
|
class J3DShapeMtxConcatView : public J3DShapeMtxImm {
|
|
public:
|
|
typedef void (J3DShapeMtxConcatView::*MtxLoadConcatView)(int mtxNo, u16 index) const;
|
|
|
|
J3DShapeMtxConcatView(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {}
|
|
|
|
virtual ~J3DShapeMtxConcatView() {}
|
|
virtual u32 getType() const { return 'SMCV'; }
|
|
virtual void load() const;
|
|
virtual void loadNrmMtx(int, u16) const {}
|
|
virtual void loadNrmMtx(int, u16, Mtx) const;
|
|
|
|
void loadMtxConcatView_PNGP(int, u16) const;
|
|
void loadMtxConcatView_PCPU(int, u16) const;
|
|
void loadMtxConcatView_NCPU(int, u16) const;
|
|
void loadMtxConcatView_PNCPU(int, u16) const;
|
|
void loadMtxConcatView_PNGP_LOD(int, u16) const;
|
|
|
|
static MtxLoadConcatView sMtxLoadPipeline[4];
|
|
static Mtx * sMtxPtrTbl[2];
|
|
};
|
|
|
|
class J3DShapeMtxBBoardImm : public J3DShapeMtxImm {
|
|
public:
|
|
J3DShapeMtxBBoardImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {}
|
|
|
|
virtual ~J3DShapeMtxBBoardImm() {}
|
|
virtual u32 getType() const { return 'SMBB'; }
|
|
virtual void load() const;
|
|
};
|
|
|
|
class J3DShapeMtxYBBoardImm : public J3DShapeMtxImm {
|
|
public:
|
|
J3DShapeMtxYBBoardImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {}
|
|
|
|
virtual ~J3DShapeMtxYBBoardImm() {}
|
|
virtual u32 getType() const { return 'SMYB'; }
|
|
virtual void load() const;
|
|
};
|
|
|
|
class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxYBBoardImm {
|
|
public:
|
|
J3DShapeMtxYBBoardConcatView(u16 useMtxIndex) : J3DShapeMtxYBBoardImm(useMtxIndex) {}
|
|
|
|
virtual ~J3DShapeMtxYBBoardConcatView() {}
|
|
virtual void load() const;
|
|
};
|
|
|
|
class J3DShapeMtxBBoardConcatView : public J3DShapeMtxBBoardImm {
|
|
public:
|
|
J3DShapeMtxBBoardConcatView(u16 useMtxIndex) : J3DShapeMtxBBoardImm(useMtxIndex) {}
|
|
|
|
virtual ~J3DShapeMtxBBoardConcatView() {}
|
|
virtual void load() const;
|
|
};
|
|
|
|
class J3DShapeMtxMulti : public J3DShapeMtx {
|
|
public:
|
|
J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
|
|
: J3DShapeMtx(useMtxIndex), mUseMtxNum(useMtxNum), mUseMtxIndexTable(useMtxIndexTable) {}
|
|
|
|
virtual ~J3DShapeMtxMulti() {}
|
|
virtual u32 getType() const { return 'SMML'; }
|
|
virtual u32 getUseMtxNum() const { return mUseMtxNum; }
|
|
virtual u16 getUseMtxIndex(u16 i) const { return mUseMtxIndexTable[i]; }
|
|
virtual void load() const;
|
|
virtual void calcNBTScale(Vec const&, Mtx33*, Mtx33*);
|
|
|
|
private:
|
|
/* 0x8 */ u16 mUseMtxNum;
|
|
/* 0xC */ u16* mUseMtxIndexTable;
|
|
};
|
|
|
|
class J3DShapeMtxMultiConcatView : public J3DShapeMtxConcatView {
|
|
public:
|
|
J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
|
|
: J3DShapeMtxConcatView(useMtxIndex), mUseMtxNum(useMtxNum),
|
|
mUseMtxIndexTable(useMtxIndexTable) {}
|
|
|
|
virtual ~J3DShapeMtxMultiConcatView() {}
|
|
virtual u32 getType() const { return 'SMMI'; }
|
|
virtual u32 getUseMtxNum() const { return mUseMtxNum; }
|
|
virtual u16 getUseMtxIndex(u16 i) const { return mUseMtxIndexTable[i]; }
|
|
virtual void load() const;
|
|
virtual void loadNrmMtx(int, u16) const {}
|
|
virtual void loadNrmMtx(int, u16, Mtx) const;
|
|
|
|
private:
|
|
/* 0x8 */ u16 mUseMtxNum;
|
|
/* 0xC */ u16* mUseMtxIndexTable;
|
|
};
|
|
|
|
#endif /* J3DSHAPEMTX_H */
|