blob: 33b6d74e75dcf0019d146827dab53caeb197712d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
#ifndef J3DMATERIAL_H
#define J3DMATERIAL_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "dolphin/types.h"
class J3DJoint;
class J3DMaterialAnm;
class J3DMaterial {
public:
static J3DColorBlock* createColorBlock(u32);
static J3DTexGenBlock* createTexGenBlock(u32);
static J3DTevBlock* createTevBlock(int);
static J3DIndBlock* createIndBlock(int);
static J3DPEBlock* createPEBlock(u32, u32);
static u32 calcSizeColorBlock(u32);
static u32 calcSizeTexGenBlock(u32);
static u32 calcSizeTevBlock(int);
static u32 calcSizeIndBlock(int);
static u32 calcSizePEBlock(u32, u32);
void initialize();
u32 countDLSize();
void makeDisplayList_private(J3DDisplayListObj*);
void setCurrentMtx();
void calcCurrentMtx();
void copy(J3DMaterial*);
s32 newSharedDisplayList(u32);
s32 newSingleSharedDisplayList(u32);
virtual void calc(const Mtx);
virtual void makeDisplayList();
virtual void makeSharedDisplayList();
virtual void load();
virtual void loadSharedDL();
virtual void patch();
virtual void diff(u32);
virtual void reset();
virtual void change();
J3DMaterial() { initialize(); }
~J3DMaterial() {}
J3DMaterial* getNext() { return mNext; }
void setNext(J3DMaterial* material) {mNext = material; }
J3DShape* getShape() { return mShape; }
J3DJoint* getJoint() { return mJoint; }
u32 getMaterialMode() { return mMaterialMode; }
void setMaterialMode(u32 mode) { mMaterialMode = mode; }
J3DTevBlock* getTevBlock() { return mTevBlock; }
J3DColorBlock* getColorBlock() { return mColorBlock; }
J3DTexGenBlock* getTexGenBlock() { return mTexGenBlock; }
J3DDisplayListObj* getSharedDisplayListObj() { return mSharedDLObj; }
J3DIndBlock* getIndBlock() { return mIndBlock; }
J3DMaterialAnm* getMaterialAnm() {
if ((u32)mMaterialAnm < 0xC0000000) {
return mMaterialAnm;
} else {
return NULL;
}
}
J3DNBTScale* getNBTScale() { return mTexGenBlock->getNBTScale(); }
u16 getTexNo(u32 idx) { return mTevBlock->getTexNo(idx); }
J3DGXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); }
J3DGXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); }
J3DFog* getFog() { return mPEBlock->getFog(); }
J3DZMode* getZMode() { return mPEBlock->getZMode(); }
J3DBlend* getBlend() { return mPEBlock->getBlend(); }
J3DAlphaComp* getAlphaComp() { return mPEBlock->getAlphaComp(); }
u8 getZCompLoc() { return mPEBlock->getZCompLoc(); }
J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); }
void setTexMtx(u32 idx, J3DTexMtx* texMtx) { mTexGenBlock->setTexMtx(idx, texMtx); }
J3DTexCoord* getTexCoord(u32 idx) { return mTexGenBlock->getTexCoord(idx); }
u16 getIndex() { return mIndex; }
bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; }
J3DPEBlock* getPEBlock() { return mPEBlock; }
void onInvalid() { mInvalid = 1; }
u32 getTexGenNum() const { return mTexGenBlock->getTexGenNum(); }
u8 getTevStageNum() const { return mTevBlock->getTevStageNum(); }
J3DIndTexOrder* getIndTexOrder(u32 i) { return mIndBlock->getIndTexOrder(i); }
J3DIndTexMtx* getIndTexMtx(u32 i) { return mIndBlock->getIndTexMtx(i); }
u8 getIndTexStageNum() const { return mIndBlock->getIndTexStageNum(); }
void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); }
void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); }
void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; }
void setCullMode(u8 i_mode) { mColorBlock->setCullMode(i_mode); }
void addShape(J3DShape*) {}
void getAmbColor(u32) {}
void getColorChan(u32) {}
void getColorChanNum() const {}
void getCullMode() const {}
void getCurrentMtx() const {}
void getDither() const {}
void getIndTevStage(u32) {}
void getIndTexCoordScale(u32) {}
void getLight(u32) {}
void getMatColor(u32) {}
void getTevKAlphaSel(u32) {}
void getTevKColorSel(u32) {}
void getTevOrder(u32) {}
void getTevStage(u32) {}
void getTevSwapModeTable(u32) {}
void getZCompLoc() const {}
void setJoint(J3DJoint*) {}
void setLight(u32, J3DLightObj*) {}
void setTevStageNum(u8) {}
public:
/* 0x04 */ J3DMaterial* mNext;
/* 0x08 */ J3DShape* mShape;
/* 0x0C */ J3DJoint* mJoint;
/* 0x10 */ u32 mMaterialMode;
/* 0x14 */ u16 mIndex;
/* 0x18 */ u32 mInvalid;
/* 0x1C */ u32 field_0x1c;
/* 0x20 */ u32 mDiffFlag;
/* 0x24 */ J3DColorBlock* mColorBlock;
/* 0x28 */ J3DTexGenBlock* mTexGenBlock;
/* 0x2C */ J3DTevBlock* mTevBlock;
/* 0x30 */ J3DIndBlock* mIndBlock;
/* 0x34 */ J3DPEBlock* mPEBlock;
/* 0x38 */ J3DMaterial* mpOrigMaterial;
/* 0x3C */ J3DMaterialAnm* mMaterialAnm;
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
/* 0x48 */ J3DDisplayListObj* mSharedDLObj;
};
class J3DPatchedMaterial : public J3DMaterial {
public:
J3DPatchedMaterial() { initialize(); }
void initialize();
virtual void calc(const Mtx);
virtual void makeDisplayList();
virtual void makeSharedDisplayList();
virtual void load();
virtual void loadSharedDL();
virtual void reset();
virtual void change();
};
class J3DLockedMaterial : public J3DMaterial {
public:
J3DLockedMaterial() { initialize(); }
void initialize();
virtual void calc(const Mtx);
virtual void makeDisplayList();
virtual void makeSharedDisplayList();
virtual void load();
virtual void loadSharedDL();
virtual void patch();
virtual void diff(u32);
virtual void reset();
virtual void change();
};
#endif /* J3DMATERIAL_H */
|