Files
tww/include/JSystem/J3DGraphBase/J3DDrawBuffer.h
T
Jasper St. Pierre c4aef79f3f d_drawlist work
2023-10-15 16:41:33 -07:00

76 lines
1.9 KiB
C++

#ifndef J3DDRAWBUFFER_H
#define J3DDRAWBUFFER_H
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dolphin/types.h"
class J3DDrawBuffer;
class J3DPacket;
class J3DDrawPacket;
class J3DMatPacket;
class J3DShapePacket;
class J3DCallBackPacket;
class J3DDrawBuffer {
public:
typedef int (J3DDrawBuffer::*sortFunc)(J3DMatPacket*);
typedef void (J3DDrawBuffer::*drawFunc)() const;
enum EDrawType {
DRAW_HEAD,
DRAW_TAIL,
};
enum ESortType {
SORT_MAT,
SORT_MAT_ANM,
SORT_Z,
SORT_MODEL,
SORT_INVALID,
SORT_NON,
};
J3DDrawBuffer() { initialize(); }
J3DDrawBuffer(u32 size) { initialize(); allocBuffer(size); }
~J3DDrawBuffer();
void initialize();
J3DError allocBuffer(u32);
void frameInit();
int entryMatSort(J3DMatPacket*);
int entryMatAnmSort(J3DMatPacket*);
int entryZSort(J3DMatPacket*);
int entryModelSort(J3DMatPacket*);
int entryInvalidSort(J3DMatPacket*);
int entryNonSort(J3DMatPacket*);
int entryImm(J3DPacket* pPacket, u16 index);
void draw() const;
void drawHead() const;
void drawTail() const;
u32 getEntryTableSize() { return mBufSize; }
inline void calcZRatio();
void setNonSort() { mSortType = (u32)SORT_NON; }
void setZSort() { mSortType = (u32)SORT_Z; }
void setInvalidSort() { mSortType = (u32)SORT_INVALID; }
void setZMtx(MtxP mtx) { mpZMtx = mtx; }
void setCallBackPacket(J3DCallBackPacket* pPacket);
public:
/* 0x00 */ J3DPacket** mpBuf;
/* 0x04 */ u32 mBufSize;
/* 0x08 */ u32 mDrawType;
/* 0x0C */ u32 mSortType;
/* 0x10 */ f32 mZNear;
/* 0x14 */ f32 mZFar;
/* 0x18 */ f32 mZRatio;
/* 0x1C */ MtxP mpZMtx;
/* 0x20 */ J3DPacket* mpCallBackPacket;
static sortFunc sortFuncTable[6];
static drawFunc drawFuncTable[2];
static int entryNum;
};
#endif /* J3DDRAWBUFFER_H */