Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
J3DJoint.h
Go to the documentation of this file.
1#ifndef J3DJOINT_H
2#define J3DJOINT_H
3
7
9class J3DJoint;
10class J3DMaterial;
11class J3DMtxBuffer;
12
18public:
19 static void setMtxBuffer(J3DMtxBuffer*);
20
21 virtual ~J3DMtxCalc() {}
23 JUT_ASSERT_MSG(127, FALSE, "You cannot use this method");
24 }
26 JUT_ASSERT_MSG(131, FALSE, "You cannot use this method");
27 return NULL;
28 }
30 JUT_ASSERT_MSG(137, FALSE, "You cannot use this method");
31 }
33 JUT_ASSERT_MSG(141, FALSE, "You cannot use this method");
34 return NULL;
35 }
36 virtual void setWeight(u8, f32) {
37 JUT_ASSERT_MSG(147, FALSE, "You cannot use this method");
38 }
39 virtual f32 getWeight(u8) const {
40 JUT_ASSERT_MSG(152, FALSE, "You cannot use this method");
41 return 0.0f;
42 }
43 virtual void init(const Vec& param_0, const Mtx&) = 0;
44 virtual void calc() = 0;
45
47 J3D_ASSERT_NULLPTR(174, mMtxBuffer != NULL)
48 return mMtxBuffer;
49 }
50 static J3DJoint* getJoint() {
51 J3D_ASSERT_NULLPTR(185, mJoint != NULL)
52 return mJoint;
53 }
54 static void setJoint(J3DJoint* joint) { mJoint = joint; }
55
58}; // Size: 0x4
59
60typedef int (*J3DJointCallBack)(J3DJoint*, int);
61
66class J3DJoint {
67public:
68 void appendChild(J3DJoint*);
69 J3DJoint();
70 void entryIn();
71 void recursiveCalc();
72
73 u32 getType() const { return 'NJNT'; }
74
75 J3DMaterial* getMesh() { return mMesh; }
76 void addMesh(J3DMaterial* pMesh) {
77 if (mMesh != NULL) {
78 pMesh->setNext(mMesh);
79 }
80
81 mMesh = pMesh;
82 }
83
84 u16 getJntNo() const { return mJntNo; }
87 void setYounger(J3DJoint* pYounger) { mYounger = pYounger; }
88 void setCurrentMtxCalc(J3DMtxCalc* pMtxCalc) { mCurrentMtxCalc = pMtxCalc; }
90 void setTransformInfo(const J3DTransformInfo& i_info) { mTransformInfo = i_info; }
91 Vec* getMax() { return &mMax; }
92 Vec* getMin() { return &mMin; }
95 void setMtxCalc(J3DMtxCalc* i_mtxCalc) { mMtxCalc = i_mtxCalc; }
98 J3DJoint* getChild() { return mChild; }
99 u8 getMtxType() const { return (mKind & 0xf0) >> 4; }
100 void setMtxType(u8 type) { mKind = (mKind & ~0xf0) | (type << 4); }
102
104
105 u8 getKind() const { return mKind & 15; }
106
107private:
108 friend struct J3DJointFactory;
109 friend class J3DJointTree;
110
111 /* 0x00 */ void* mCallBackUserData;
113 /* 0x08 */ void* field_0x8;
114 /* 0x0C */ J3DJoint* mChild;
115 /* 0x10 */ J3DJoint* mYounger;
116 /* 0x14 */ u16 mJntNo;
117 /* 0x16 */ u8 mKind;
121 /* 0x3C */ Vec mMin;
122 /* 0x48 */ Vec mMax;
123 /* 0x54 */ J3DMtxCalc* mMtxCalc;
124 /* 0x58 */ J3DMaterial* mMesh;
125}; // Size: 0x5C
126
132public:
134};
135
140template <class A, class B>
142public:
144 virtual ~J3DMtxCalcNoAnm() {}
145 virtual void init(const Vec& param_0, const Mtx& param_1) { B::init(param_0, param_1); }
146 virtual void calc() {
148 A::calcTransform(transInfo);
149 }
150};
151
160
165
166template <typename A0>
169
170 void calc(J3DMtxCalcAnmBase* pMtxCalc) {
171 J3DTransformInfo transform;
172 J3DTransformInfo* transform_p;
173 if (pMtxCalc->getAnmTransform() != NULL) {
174 pMtxCalc->getAnmTransform()->getTransform(J3DMtxCalc::getJoint()->getJntNo(), &transform);
175 transform_p = &transform;
176 } else {
177 transform_p = &J3DMtxCalc::getJoint()->getTransformInfo();
178 }
179
180 A0::calcTransform(*transform_p);
181 }
182};
183
184template <typename A0, typename B0>
186 J3DMtxCalcAnimation(J3DAnmTransform* pAnmTransform) : J3DMtxCalcAnmBase(pAnmTransform), field_0x8(pAnmTransform) {}
188
189 void setAnmTransform(J3DAnmTransform* pAnmTransform) {
190 mAnmTransform = pAnmTransform;
191 field_0x8.change(pAnmTransform);
192 }
193
194 void init(const Vec& param_0, const Mtx& param_1) { B0::init(param_0, param_1); }
195 void calc() { field_0x8.calc(this); }
196
198};
199
205 static void init(const Vec&, const Mtx& param_1);
206};
207
213 static void init(const Vec&, const Mtx& param_1);
214};
215
223
229 static void calcTransform(J3DTransformInfo const&);
230};
231
237 static void calcTransform(J3DTransformInfo const&);
238};
239
240inline s32 checkScaleOne(const Vec& param_0) {
241 if (param_0.x == 1.0f && param_0.y == 1.0f && param_0.z == 1.0f) {
242 return true;
243 } else {
244 return false;
245 }
246}
247
248#endif /* J3DJOINT_H */
s32 checkScaleOne(const Vec &param_0)
Definition J3DJoint.h:240
int(* J3DJointCallBack)(J3DJoint *, int)
Definition J3DJoint.h:60
Definition J3DAnimation.h:506
virtual void getTransform(u16, J3DTransformInfo *) const =0
Definition J3DJointTree.h:43
Definition J3DJoint.h:66
void setMtxType(u8 type)
Definition J3DJoint.h:100
Vec * getMin()
Definition J3DJoint.h:92
void setCallBack(J3DJointCallBack callback)
Definition J3DJoint.h:93
J3DJoint * getYounger()
Definition J3DJoint.h:86
J3DMaterial * mMesh
Definition J3DJoint.h:124
void * mCallBackUserData
Definition J3DJoint.h:111
u8 getKind() const
Definition J3DJoint.h:105
void appendChild(J3DJoint *)
Definition J3DJoint.cpp:127
J3DJoint * mYounger
Definition J3DJoint.h:115
J3DJoint * mChild
Definition J3DJoint.h:114
void addMesh(J3DMaterial *pMesh)
Definition J3DJoint.h:76
Vec * getMax()
Definition J3DJoint.h:91
u32 getType() const
Definition J3DJoint.h:73
void setCurrentMtxCalc(J3DMtxCalc *pMtxCalc)
Definition J3DJoint.h:88
void setMtxCalc(J3DMtxCalc *i_mtxCalc)
Definition J3DJoint.h:95
u8 getMtxType() const
Definition J3DJoint.h:99
u8 mScaleCompensate
Definition J3DJoint.h:118
Vec mMax
Definition J3DJoint.h:122
J3DJointCallBack mCallBack
Definition J3DJoint.h:112
J3DMtxCalc * getCurrentMtxCalc()
Definition J3DJoint.h:97
void entryIn()
Definition J3DJoint.cpp:160
u8 mKind
Definition J3DJoint.h:117
void recursiveCalc()
Definition J3DJoint.cpp:194
J3DJointCallBack getCallBack()
Definition J3DJoint.h:94
J3DMaterial * getMesh()
Definition J3DJoint.h:75
void setTransformInfo(const J3DTransformInfo &i_info)
Definition J3DJoint.h:90
J3DTransformInfo & getTransformInfo()
Definition J3DJoint.h:89
u16 mJntNo
Definition J3DJoint.h:116
static J3DMtxCalc * mCurrentMtxCalc
Definition J3DJoint.h:103
u16 getJntNo() const
Definition J3DJoint.h:84
f32 getRadius() const
Definition J3DJoint.h:101
J3DMtxCalc * getMtxCalc()
Definition J3DJoint.h:96
u8 getScaleCompensate() const
Definition J3DJoint.h:85
J3DMtxCalc * mMtxCalc
Definition J3DJoint.h:123
J3DJoint()
Definition J3DJoint.cpp:139
J3DTransformInfo mTransformInfo
Definition J3DJoint.h:119
void setYounger(J3DJoint *pYounger)
Definition J3DJoint.h:87
Vec mMin
Definition J3DJoint.h:121
J3DJoint * getChild()
Definition J3DJoint.h:98
void * field_0x8
Definition J3DJoint.h:113
f32 mBoundingSphereRadius
Definition J3DJoint.h:120
Definition J3DMaterial.h:16
void setNext(J3DMaterial *pMaterial)
Definition J3DMaterial.h:96
Definition J3DMtxBuffer.h:13
Definition J3DJoint.h:131
virtual ~J3DMtxCalcNoAnmBase()
Definition J3DJoint.h:133
Definition J3DJoint.h:141
virtual ~J3DMtxCalcNoAnm()
Definition J3DJoint.h:144
J3DMtxCalcNoAnm()
Definition J3DJoint.h:143
virtual void init(const Vec &param_0, const Mtx &param_1)
Definition J3DJoint.h:145
virtual void calc()
Definition J3DJoint.h:146
Definition J3DJoint.h:17
virtual void setWeight(u8, f32)
Definition J3DJoint.h:36
static J3DJoint * getJoint()
Definition J3DJoint.h:50
static J3DJoint * mJoint
Definition J3DJoint.h:57
virtual ~J3DMtxCalc()
Definition J3DJoint.h:21
virtual f32 getWeight(u8) const
Definition J3DJoint.h:39
virtual J3DAnmTransform * getAnmTransform()
Definition J3DJoint.h:25
static void setJoint(J3DJoint *joint)
Definition J3DJoint.h:54
virtual J3DAnmTransform * getAnmTransform(u8)
Definition J3DJoint.h:32
static J3DMtxBuffer * getMtxBuffer()
Definition J3DJoint.h:46
static J3DMtxBuffer * mMtxBuffer
Definition J3DJoint.h:56
virtual void setAnmTransform(u8, J3DAnmTransform *)
Definition J3DJoint.h:29
virtual void init(const Vec &param_0, const Mtx &)=0
virtual void setAnmTransform(J3DAnmTransform *)
Definition J3DJoint.h:22
virtual void calc()=0
static void setMtxBuffer(J3DMtxBuffer *)
Definition J3DJointTree.cpp:114
static initFunc init[]
Definition d_menu_collect.cpp:39
f32 Mtx[3][4]
Definition mtx.h:25
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
static void callback(u32 param_0)
Definition OSExec.c:308
Definition J3DJointFactory.h:26
Definition J3DJoint.h:161
J3DMtxCalcAnimationAdaptorBase()
Definition J3DJoint.h:162
void change(J3DAnmTransform *)
Definition J3DJoint.h:163
Definition J3DJoint.h:167
J3DMtxCalcAnimationAdaptorDefault(J3DAnmTransform *pAnmTransform)
Definition J3DJoint.h:168
void calc(J3DMtxCalcAnmBase *pMtxCalc)
Definition J3DJoint.h:170
Definition J3DJoint.h:185
J3DMtxCalcAnimation(J3DAnmTransform *pAnmTransform)
Definition J3DJoint.h:186
void setAnmTransform(J3DAnmTransform *pAnmTransform)
Definition J3DJoint.h:189
void calc()
Definition J3DJoint.h:195
~J3DMtxCalcAnimation()
Definition J3DJoint.h:187
void init(const Vec &param_0, const Mtx &param_1)
Definition J3DJoint.h:194
A0 field_0x8
Definition J3DJoint.h:197
Definition J3DJoint.h:152
J3DAnmTransform * getAnmTransform()
Definition J3DJoint.h:155
~J3DMtxCalcAnmBase()
Definition J3DJoint.h:154
J3DAnmTransform * mAnmTransform
Definition J3DJoint.h:158
J3DMtxCalcAnmBase(J3DAnmTransform *pAnmTransform)
Definition J3DJoint.h:153
void setAnmTransform(J3DAnmTransform *pAnmTransform)
Definition J3DJoint.h:156
Definition J3DJoint.h:236
static void calcTransform(J3DTransformInfo const &)
Definition J3DJoint.cpp:29
Definition J3DJoint.h:228
static void calcTransform(J3DTransformInfo const &)
Definition J3DJoint.cpp:83
Definition J3DJoint.h:220
static void calcTransform(J3DTransformInfo const &)
Definition J3DJoint.cpp:53
Definition J3DJoint.h:212
Definition J3DJoint.h:204
Definition J3DTransform.h:13
Definition mtx.h:13
f32 z
Definition mtx.h:14
f32 x
Definition mtx.h:14
f32 y
Definition mtx.h:14