NW4F G3d
Loading...
Searching...
No Matches
g3d_ResSkeleton.h
Go to the documentation of this file.
1#ifndef NW_G3D_RES_RESSKELETON_H_
2#define NW_G3D_RES_RESSKELETON_H_
3
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/math/g3d_Vector3.h>
6#include <nw/g3d/math/g3d_Matrix34.h>
7#include <nw/g3d/math/g3d_Quaternion.h>
8#include <nw/g3d/res/g3d_ResCommon.h>
9#include <nw/g3d/res/g3d_ResDictionary.h>
10#include <nw/g3d/res/g3d_ResUserData.h>
11
12namespace nw { namespace g3d {namespace res {
13
14class ResFile;
15
39
40class ResBone : private ResBoneData
41{
43
44public:
85
86 enum
87 {
89 };
90
91 int GetIndex() const { return ref().index; }
92
94
95 int GetSmoothMtxIndex() const { return ref().smoothMtxIndex; }
96
97 int GetRigidMtxIndex() const { return ref().rigidMtxIndex; }
98
99 int GetParentIndex() const { return ref().parentIndex; }
100
101 bit32 GetRotateMode() const { return ref().flag & ROT_MASK; }
102
103 bit32 GetBillboardMode() const { return ref().flag & BILLBOARD_MASK; }
104
105 Vec3& GetScale() { return ref().scale; }
106
107 const Vec3& GetScale() const { return ref().scale; }
108
109 Vec3& GetTranslate() { return ref().translate; }
110
111 const Vec3& GetTranslate() const { return ref().translate; }
112
114 {
115 NW_G3D_ASSERT(ROT_EULER_XYZ == GetRotateMode());
116 return ref().rotate.euler;
117 }
118
119 const Vec3& GetRotateEuler() const
120 {
121 NW_G3D_ASSERT(ROT_EULER_XYZ == GetRotateMode());
122 return ref().rotate.euler;
123 }
124
126 {
127 NW_G3D_ASSERT(ROT_QUAT == GetRotateMode());
128 return ref().rotate.quat;
129 }
130
131 const Quat& GetRotateQuat() const
132 {
133 NW_G3D_ASSERT(ROT_QUAT == GetRotateMode());
134 return ref().rotate.quat;
135 }
136
138
139 const Mtx34& GetInvModelMtx() const { return ref().invModelMtx; }
140
141 NW_G3D_RES_FIELD_DIC_DECL(ResUserData, UserData)
142};
143
160
162{
164
165public:
166 enum Signature { SIGNATURE = NW_G3D_MAKE_U8X4_AS_U32('F', 'S', 'K', 'L') };
167
184
185 int GetSmoothMtxCount() const { return ref().numSmoothMtx; }
186
187 int GetRigidMtxCount() const { return ref().numRigidMtx; }
188
190
191 bit32 GetScaleMode() const { return ref().flag & SCALE_MASK; }
192
193 bit32 GetRotateMode() const { return ref().flag & ROT_MASK; }
194
195 int GetBranchEndIndex(int boneIndex) const;
196
197 void SetUserPtr(void* pUserPtr) { ref().pUserPtr.set_ptr(pUserPtr); }
198
199 void* GetUserPtr() { return ref().pUserPtr.to_ptr(); }
200
201 const void* GetUserPtr() const { return ref().pUserPtr.to_ptr(); }
202
203 template <typename T>
204 T* GetUserPtr() { return ref().pUserPtr.to_ptr<T>(); }
205
206 template <typename T>
207 const T* GetUserPtr() const { return ref().pUserPtr.to_ptr<T>(); }
208
210
212};
213
214} } } // namespace nw::g3d::res
215
216#endif // NW_G3D_RES_RESSKELETON_H_
Definition g3d_Matrix34.h:34
Definition g3d_Quaternion.h:28
Definition g3d_Vector3.h:30
Definition g3d_ResCommon.h:109
BinPtr & set_ptr(void *ptr)
Definition g3d_ResCommon.h:143
const void * to_ptr() const
Definition g3d_ResCommon.h:121
void * to_ptr()
Definition g3d_ResCommon.h:119
Definition g3d_ResCommon.h:93
Definition g3d_ResCommon.h:62
Definition g3d_ResSkeleton.h:41
const Mtx34 & GetInvModelMtx() const
Definition g3d_ResSkeleton.h:139
Quat & GetRotateQuat()
Definition g3d_ResSkeleton.h:125
int GetIndex() const
Definition g3d_ResSkeleton.h:91
bit32 GetBillboardMode() const
Definition g3d_ResSkeleton.h:103
Vec3 & GetScale()
Definition g3d_ResSkeleton.h:105
const Vec3 & GetTranslate() const
Definition g3d_ResSkeleton.h:111
Flag
Definition g3d_ResSkeleton.h:46
@ HI_IDENTITY
Definition g3d_ResSkeleton.h:83
@ HI_SCALE_ONE
Definition g3d_ResSkeleton.h:81
@ ROT_QUAT
Definition g3d_ResSkeleton.h:50
@ HI_TRANSLATE_ZERO
Definition g3d_ResSkeleton.h:80
@ SCALE_UNIFORM
Definition g3d_ResSkeleton.h:67
@ SCALE_ONE
Definition g3d_ResSkeleton.h:71
@ HI_ROTTRANS_ZERO
Definition g3d_ResSkeleton.h:82
@ ROT_MASK
Definition g3d_ResSkeleton.h:52
@ HIERARCHY_SHIFT
Definition g3d_ResSkeleton.h:76
@ BILLBOARD_YAXIS_VIEWVECTOR
Definition g3d_ResSkeleton.h:61
@ SCALE_VOLUME_ONE
Definition g3d_ResSkeleton.h:68
@ BILLBOARD_YAXIS_VIEWPOINT
Definition g3d_ResSkeleton.h:62
@ IDENTITY
Definition g3d_ResSkeleton.h:73
@ ROTTRANS_ZERO
Definition g3d_ResSkeleton.h:72
@ BILLBOARD_NONE
Definition g3d_ResSkeleton.h:55
@ HI_SCALE_UNIFORM
Definition g3d_ResSkeleton.h:77
@ BILLBOARD_MAX
Definition g3d_ResSkeleton.h:63
@ BILLBOARD_WORLD_VIEWPOINT
Definition g3d_ResSkeleton.h:58
@ BILLBOARD_SCREEN_VIEWVECTOR
Definition g3d_ResSkeleton.h:59
@ VISIBILITY
Definition g3d_ResSkeleton.h:47
@ BILLBOARD_SHIFT
Definition g3d_ResSkeleton.h:54
@ BILLBOARD_MASK
Definition g3d_ResSkeleton.h:64
@ TRANSFORM_MASK
Definition g3d_ResSkeleton.h:74
@ ROT_EULER_XYZ
Definition g3d_ResSkeleton.h:51
@ SEGMENT_SCALE_COMPENSATE
Definition g3d_ResSkeleton.h:66
@ HI_SCALE_VOLUME_ONE
Definition g3d_ResSkeleton.h:78
@ ROT_SHIFT
Definition g3d_ResSkeleton.h:49
@ BILLBOARD_WORLD_VIEWVECTOR
Definition g3d_ResSkeleton.h:57
@ BILLBOARD_CHILD
Definition g3d_ResSkeleton.h:56
@ BILLBOARD_SCREEN_VIEWPOINT
Definition g3d_ResSkeleton.h:60
@ TRANSLATE_ZERO
Definition g3d_ResSkeleton.h:70
@ ROTATE_ZERO
Definition g3d_ResSkeleton.h:69
@ HI_ROTATE_ZERO
Definition g3d_ResSkeleton.h:79
int GetSmoothMtxIndex() const
Definition g3d_ResSkeleton.h:95
Vec3 & GetTranslate()
Definition g3d_ResSkeleton.h:109
Vec3 & GetRotateEuler()
Definition g3d_ResSkeleton.h:113
@ BB_INDEX_NONE
Definition g3d_ResSkeleton.h:88
Mtx34 & GetInvModelMtx()
Definition g3d_ResSkeleton.h:137
bit32 GetRotateMode() const
Definition g3d_ResSkeleton.h:101
int GetRigidMtxIndex() const
Definition g3d_ResSkeleton.h:97
int GetParentIndex() const
Definition g3d_ResSkeleton.h:99
const Vec3 & GetRotateEuler() const
Definition g3d_ResSkeleton.h:119
const Vec3 & GetScale() const
Definition g3d_ResSkeleton.h:107
const Quat & GetRotateQuat() const
Definition g3d_ResSkeleton.h:131
Definition g3d_ResFile.h:62
Definition g3d_ResSkeleton.h:162
T * GetUserPtr()
Definition g3d_ResSkeleton.h:204
int GetMtxCount() const
Definition g3d_ResSkeleton.h:189
Signature
Definition g3d_ResSkeleton.h:166
@ SIGNATURE
Definition g3d_ResSkeleton.h:166
void * GetUserPtr()
Definition g3d_ResSkeleton.h:199
const void * GetUserPtr() const
Definition g3d_ResSkeleton.h:201
bit32 GetRotateMode() const
Definition g3d_ResSkeleton.h:193
Flag
Definition g3d_ResSkeleton.h:169
@ SCALE_SOFTIMAGE
Definition g3d_ResSkeleton.h:174
@ ROT_EULER_XYZ
Definition g3d_ResSkeleton.h:179
@ SCALE_STD
Definition g3d_ResSkeleton.h:172
@ SCALE_MASK
Definition g3d_ResSkeleton.h:175
@ ROT_SHIFT
Definition g3d_ResSkeleton.h:177
@ SCALE_SHIFT
Definition g3d_ResSkeleton.h:170
@ TRANSFORM_MASK
Definition g3d_ResSkeleton.h:182
@ ROT_MASK
Definition g3d_ResSkeleton.h:180
@ SCALE_NONE
Definition g3d_ResSkeleton.h:171
@ ROT_QUAT
Definition g3d_ResSkeleton.h:178
@ SCALE_MAYA
Definition g3d_ResSkeleton.h:173
bit32 GetScaleMode() const
Definition g3d_ResSkeleton.h:191
int GetBranchEndIndex(int boneIndex) const
Definition g3d_ResSkeleton.cpp:5
int GetRigidMtxCount() const
Definition g3d_ResSkeleton.h:187
void SetUserPtr(void *pUserPtr)
Definition g3d_ResSkeleton.h:197
int GetSmoothMtxCount() const
Definition g3d_ResSkeleton.h:185
const T * GetUserPtr() const
Definition g3d_ResSkeleton.h:207
#define NW_G3D_RES_COMMON(class_name)
Definition g3d_ResCommon.h:30
#define NW_G3D_RES_FIELD_CLASS_NAMED_ARRAY_DECL(type, name)
Definition g3d_ResDefs.h:108
#define NW_G3D_RES_FIELD_STRING_DECL(name)
Definition g3d_ResDefs.h:137
#define NW_G3D_RES_FIELD_DIC_DECL(type, name)
Definition g3d_ResDefs.h:51
#define NW_G3D_ASSERT(exp)
Definition g3d_assert.h:17
u32 bit32
Definition g3d_defs.h:131
#define NW_G3D_MAKE_U8X4_AS_U32(a, b, c, d)
Definition g3d_defs.h:90
Definition g3d_defs.h:122
Definition g3d_GfxManage.cpp:10
Definition g3d_ResCommon.h:179
Definition g3d_ResSkeleton.h:17
bit32 flag
Definition g3d_ResSkeleton.h:26
Mtx34 invModelMtx
Definition g3d_ResSkeleton.h:37
u16 numUserData
Definition g3d_ResSkeleton.h:24
u16 parentIndex
Definition g3d_ResSkeleton.h:20
Offset ofsUserDataDic
Definition g3d_ResSkeleton.h:35
Quat quat
Definition g3d_ResSkeleton.h:30
s16 rigidMtxIndex
Definition g3d_ResSkeleton.h:22
s16 smoothMtxIndex
Definition g3d_ResSkeleton.h:21
u16 index
Definition g3d_ResSkeleton.h:19
Vec3 scale
Definition g3d_ResSkeleton.h:27
BinString ofsName
Definition g3d_ResSkeleton.h:18
Vec3 euler
Definition g3d_ResSkeleton.h:31
Vec3 translate
Definition g3d_ResSkeleton.h:33
u16 billboardIndex
Definition g3d_ResSkeleton.h:23
Definition g3d_ResSkeleton.h:145
u16 numRigidMtx
Definition g3d_ResSkeleton.h:151
Offset ofsMtxToBoneTable
Definition g3d_ResSkeleton.h:156
Offset ofsBoneDic
Definition g3d_ResSkeleton.h:154
BinaryBlockHeader blockHeader
Definition g3d_ResSkeleton.h:146
u16 numBone
Definition g3d_ResSkeleton.h:149
u16 reserved
Definition g3d_ResSkeleton.h:152
bit32 flag
Definition g3d_ResSkeleton.h:148
Offset ofsBoneArray
Definition g3d_ResSkeleton.h:155
BinPtr pUserPtr
Definition g3d_ResSkeleton.h:158
u16 numSmoothMtx
Definition g3d_ResSkeleton.h:150