diff options
Diffstat (limited to 'include/JSystem/J3DGraphBase')
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DDrawBuffer.h | 45 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DPacket.h | 108 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DSys.h | 6 |
3 files changed, 159 insertions, 0 deletions
diff --git a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h index 5f62d772f8..f24f798b08 100644 --- a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h +++ b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h @@ -1,6 +1,51 @@ #ifndef J3DDRAWBUFFER_H #define J3DDRAWBUFFER_H +#include "JSystem/J3DGraphBase/J3DSys.h" +#include "dolphin/mtx/mtx.h" #include "dolphin/types.h" +class J3DDrawBuffer; +class J3DPacket; +class J3DDrawPacket; +class J3DMatPacket; +class J3DShapePacket; + +typedef void (*J3DDrawBuffer_DrawFunc)(const J3DDrawBuffer* this_); + +class J3DDrawBuffer { +public: + ~J3DDrawBuffer(); + void initialize(); + J3DError allocBuffer(u32); + void frameInit(); + void entryMatSort(J3DMatPacket*); + void entryMatAnmSort(J3DMatPacket*); + void entryZSort(J3DMatPacket*); + void entryModelSort(J3DMatPacket*); + void entryInvalidSort(J3DMatPacket*); + bool entryNonSort(J3DMatPacket*); + bool entryImm(J3DPacket* pPacket, u16 index); + void draw() const; + void drawHead() const; + void drawTail() const; + + inline void calcZRatio(); + +public: + J3DPacket** mpBuf; + u32 mBufSize; + u32 mDrawType; + u32 mSortType; + float mZNear; + float mZFar; + float mZRatio; + Mtx* mpZMtx; + J3DPacket* mpCallBackPacket; + + static u8 sortFuncTable[72]; + static u8 drawFuncTable[24]; + static u8 entryNum[4 + 4 /* padding */]; +}; + #endif /* J3DDRAWBUFFER_H */ diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h index 4c0f4064b4..09e3a7c739 100644 --- a/include/JSystem/J3DGraphBase/J3DPacket.h +++ b/include/JSystem/J3DGraphBase/J3DPacket.h @@ -1,6 +1,114 @@ #ifndef J3DPACKET_H #define J3DPACKET_H +#include "JSystem/J3DGraphBase/J3DSys.h" +#include "dolphin/mtx/mtx.h" #include "dolphin/types.h" +class J3DMatPacket; + +class J3DDrawBuffer; +class J3DMaterial; +class J3DMaterialAnm; +class J3DModel; +class J3DMtxBuffer; +class J3DShape; +class J3DTexMtx; +class J3DTexture; + +class J3DDisplayListObj { +public: + J3DError newDisplayList(u32); + J3DError newSingleDisplayList(u32); + J3DError single_To_Double(); + void setSingleDisplayList(void*, u32); + void swapBuffer(); + void callDL() const; + void beginDL(); + void endDL(); + void beginPatch(); + void endPatch(); + + static u8 sGDLObj[16]; + static u8 sInterruptFlag[4 + 4 /* padding */]; + + void* mpData[2]; + u32 mSize; + u32 mCapacity; +}; + +class J3DPacket { +public: + void addChildPacket(J3DPacket* pChild); + + inline void clear() { + mpNextSibling = NULL; + mpFirstChild = NULL; + } + + virtual bool entry(J3DDrawBuffer* pDrawBuffer); + virtual void draw(); + virtual ~J3DPacket(); + +public: + J3DPacket* mpNextSibling; + J3DPacket* mpFirstChild; +}; + +class J3DDrawPacket : public J3DPacket { +public: + J3DDrawPacket(); + ~J3DDrawPacket(); + J3DError newDisplayList(u32); + J3DError newSingleDisplayList(u32); + virtual void draw(); + +public: + void* mpUserData; + int mFlags; + char mPad0[0x0C]; // unk + J3DDisplayListObj* mpDisplayListObj; + J3DTexMtx* mpTexMtx; +}; + +class J3DShapePacket : public J3DDrawPacket { +public: + J3DShapePacket(); + void calcDifferedBufferSize(u32); + void newDifferedDisplayList(u32); + void prepareDraw() const; + void drawFast(); + + virtual ~J3DShapePacket(); + virtual void draw(); + +public: + J3DShape* mpShape; + J3DMtxBuffer* mpMtxBuffer; + Mtx* mpViewMtx; + u32 mDiffFlag; + J3DModel* mpModel; +}; + +class J3DMatPacket : public J3DDrawPacket { +public: + J3DMatPacket(); + void addShapePacket(J3DShapePacket*); + void beginDiff(); + void endDiff(); + void isSame(J3DMatPacket*) const; + + virtual ~J3DMatPacket(); + virtual bool entry(J3DDrawBuffer* pDrawBuffer); + virtual void draw(); + +public: + J3DShapePacket* mpShapePacket; + J3DShapePacket* mpFirstShapePacket; + J3DMaterial* mpMaterial; + s32 mSortFlags; + J3DTexture* mpTexture; + J3DMaterialAnm* mpMaterialAnm; +}; + #endif /* J3DPACKET_H */ diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index 5802253819..73cef8bde9 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -3,4 +3,10 @@ #include "dolphin/types.h" +// Perhaps move to a new J3DEnum.h? +enum J3DError { + kJ3DError_Success = 0, + kJ3DError_Alloc = 4, +}; + #endif /* J3DSYS_H */ |
