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
46 static J3DMtxBuffer* getMtxBuffer() { return mMtxBuffer; }
47 static J3DJoint* getJoint() {
48 J3D_ASSERT_NULLPTR(185, mJoint != NULL)
49 return mJoint;
50 }
51 static void setJoint(J3DJoint* joint) { mJoint = joint; }
52
55}; // Size: 0x4
56
57typedef int (*J3DJointCallBack)(J3DJoint*, int);
58
63class J3DJoint {
64public:
65 void appendChild(J3DJoint*);
66 J3DJoint();
67 void entryIn();
68 void recursiveCalc();
69
70 u32 getType() const { return 'NJNT'; }
71
72 J3DMaterial* getMesh() { return mMesh; }
73 void addMesh(J3DMaterial* pMesh) {
74 if (mMesh != NULL) {
75 pMesh->setNext(mMesh);
76 }
77
78 mMesh = pMesh;
79 }
80
81 u16 getJntNo() const { return mJntNo; }
84 void setYounger(J3DJoint* pYounger) { mYounger = pYounger; }
85 void setCurrentMtxCalc(J3DMtxCalc* pMtxCalc) { mCurrentMtxCalc = pMtxCalc; }
87 void setTransformInfo(const J3DTransformInfo& i_info) { mTransformInfo = i_info; }
88 Vec* getMax() { return &mMax; }
89 Vec* getMin() { return &mMin; }
92 void setMtxCalc(J3DMtxCalc* i_mtxCalc) { mMtxCalc = i_mtxCalc; }
95 J3DJoint* getChild() { return mChild; }
96 u8 getMtxType() const { return (mKind & 0xf0) >> 4; }
97 void setMtxType(u8 type) { mKind = (mKind & ~0xf0) | (type << 4); }
99
101
102 u8 getKind() const { return mKind & 15; }
103
104private:
105 friend struct J3DJointFactory;
106 friend class J3DJointTree;
107
108 /* 0x00 */ void* mCallBackUserData;
110 /* 0x08 */ void* field_0x8;
111 /* 0x0C */ J3DJoint* mChild;
112 /* 0x10 */ J3DJoint* mYounger;
113 /* 0x14 */ u16 mJntNo;
114 /* 0x16 */ u8 mKind;
118 /* 0x3C */ Vec mMin;
119 /* 0x48 */ Vec mMax;
120 /* 0x54 */ J3DMtxCalc* mMtxCalc;
121 /* 0x58 */ J3DMaterial* mMesh;
122}; // Size: 0x5C
123
129public:
131};
132
137template <class A, class B>
139public:
141 virtual ~J3DMtxCalcNoAnm() {}
142 virtual void init(const Vec& param_0, const Mtx& param_1) { B::init(param_0, param_1); }
143 virtual void calc() {
145 A::calcTransform(transInfo);
146 }
147};
148
154 static void init(const Vec& param_0, const Mtx& param_1) {
155 J3DSys::mCurrentS = param_0;
156 MTXCopy(param_1, J3DSys::mCurrentMtx);
157 }
158};
159
165 static void init(const Vec&, const Mtx& param_1);
166};
167
173 static void init(const Vec&, const Mtx& param_1);
174};
175
183
189 static void calcTransform(J3DTransformInfo const&);
190};
191
197 static void calcTransform(J3DTransformInfo const&);
198};
199
200#endif /* J3DJOINT_H */
int(* J3DJointCallBack)(J3DJoint *, int)
Definition J3DJoint.h:57
Definition J3DAnimation.h:504
Definition J3DJointTree.h:39
Definition J3DJoint.h:63
void setMtxType(u8 type)
Definition J3DJoint.h:97
Vec * getMin()
Definition J3DJoint.h:89
void setCallBack(J3DJointCallBack callback)
Definition J3DJoint.h:90
J3DJoint * getYounger()
Definition J3DJoint.h:83
J3DMaterial * mMesh
Definition J3DJoint.h:121
void * mCallBackUserData
Definition J3DJoint.h:108
u8 getKind() const
Definition J3DJoint.h:102
void appendChild(J3DJoint *)
Definition J3DJoint.cpp:131
J3DJoint * mYounger
Definition J3DJoint.h:112
J3DJoint * mChild
Definition J3DJoint.h:111
void addMesh(J3DMaterial *pMesh)
Definition J3DJoint.h:73
Vec * getMax()
Definition J3DJoint.h:88
u32 getType() const
Definition J3DJoint.h:70
void setCurrentMtxCalc(J3DMtxCalc *pMtxCalc)
Definition J3DJoint.h:85
void setMtxCalc(J3DMtxCalc *i_mtxCalc)
Definition J3DJoint.h:92
u8 getMtxType() const
Definition J3DJoint.h:96
u8 mScaleCompensate
Definition J3DJoint.h:115
Vec mMax
Definition J3DJoint.h:119
J3DJointCallBack mCallBack
Definition J3DJoint.h:109
J3DMtxCalc * getCurrentMtxCalc()
Definition J3DJoint.h:94
void entryIn()
Definition J3DJoint.cpp:163
u8 mKind
Definition J3DJoint.h:114
void recursiveCalc()
Definition J3DJoint.cpp:197
J3DJointCallBack getCallBack()
Definition J3DJoint.h:91
J3DMaterial * getMesh()
Definition J3DJoint.h:72
void setTransformInfo(const J3DTransformInfo &i_info)
Definition J3DJoint.h:87
J3DTransformInfo & getTransformInfo()
Definition J3DJoint.h:86
u16 mJntNo
Definition J3DJoint.h:113
static J3DMtxCalc * mCurrentMtxCalc
Definition J3DJoint.h:100
u16 getJntNo() const
Definition J3DJoint.h:81
f32 getRadius() const
Definition J3DJoint.h:98
J3DMtxCalc * getMtxCalc()
Definition J3DJoint.h:93
u8 getScaleCompensate() const
Definition J3DJoint.h:82
J3DMtxCalc * mMtxCalc
Definition J3DJoint.h:120
J3DJoint()
Definition J3DJoint.cpp:143
J3DTransformInfo mTransformInfo
Definition J3DJoint.h:116
void setYounger(J3DJoint *pYounger)
Definition J3DJoint.h:84
Vec mMin
Definition J3DJoint.h:118
J3DJoint * getChild()
Definition J3DJoint.h:95
void * field_0x8
Definition J3DJoint.h:110
f32 mBoundingSphereRadius
Definition J3DJoint.h:117
Definition J3DMaterial.h:16
void setNext(J3DMaterial *pMaterial)
Definition J3DMaterial.h:98
Definition J3DMtxBuffer.h:12
Definition J3DJoint.h:128
virtual ~J3DMtxCalcNoAnmBase()
Definition J3DJoint.h:130
Definition J3DJoint.h:138
virtual ~J3DMtxCalcNoAnm()
Definition J3DJoint.h:141
J3DMtxCalcNoAnm()
Definition J3DJoint.h:140
virtual void init(const Vec &param_0, const Mtx &param_1)
Definition J3DJoint.h:142
virtual void calc()
Definition J3DJoint.h:143
Definition J3DJoint.h:17
virtual void setWeight(u8, f32)
Definition J3DJoint.h:36
static J3DJoint * getJoint()
Definition J3DJoint.h:47
static J3DJoint * mJoint
Definition J3DJoint.h:54
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:51
virtual J3DAnmTransform * getAnmTransform(u8)
Definition J3DJoint.h:32
static J3DMtxBuffer * getMtxBuffer()
Definition J3DJoint.h:46
static J3DMtxBuffer * mMtxBuffer
Definition J3DJoint.h:53
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:116
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
unsigned char u8
Definition types.h:8
static void callback(u32 param_0)
Definition OSExec.c:308
Definition J3DJointFactory.h:26
Definition J3DJoint.h:196
static void calcTransform(J3DTransformInfo const &)
Definition J3DJoint.cpp:37
Definition J3DJoint.h:188
static void calcTransform(J3DTransformInfo const &)
Definition J3DJoint.cpp:89
Definition J3DJoint.h:180
static void calcTransform(J3DTransformInfo const &)
Definition J3DJoint.cpp:60
Definition J3DJoint.h:172
Definition J3DJoint.h:164
Definition J3DJoint.h:153
static void init(const Vec &param_0, const Mtx &param_1)
Definition J3DJoint.h:154
static Mtx mCurrentMtx
Definition J3DSys.h:173
static Vec mCurrentS
Definition J3DSys.h:174
Definition J3DTransform.h:13
Definition mtx.h:13