OROCHI
 
Loading...
Searching...
No Matches
GxResRagdoll.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13GX_UTILITY_NAMESPACE_BEGIN()
14//===========================================================================
16//===========================================================================
17class GxResRagdoll : public GxResBase
18{
19 //-----------------------------------------------------------
21 //-----------------------------------------------------------
23public:
24 // RTTI 宣言
25 GX_RTTI_RESOURCE_NAME(GxResRagdoll, GxResBase, "ラグドールリソース");
26 // GxClassBaseReference 継承クラス用禁止宣言
28
30
34 class GxRagdollBodyData : public gx::core::GxClassBase
35 {
36 //-----------------------------------------------------------
38 //-----------------------------------------------------------
40 public:
41 // RTTI宣言
42 GX_RTTI_CLASS(GxRagdollBodyData, gx::core::GxClassBase);
43
45 //-----------------------------------------------------------
47 //-----------------------------------------------------------
49
51 f32 _radius[2];
55 f32 _mass;
63
65 };
66
68
72 class GxRagdollJointData : public gx::core::GxClassBase
73 {
74 //-----------------------------------------------------------
76 //-----------------------------------------------------------
78 public:
79 // RTTI宣言
80 GX_RTTI_CLASS(GxRagdollJointData, gx::core::GxClassBase);
81
83 //-----------------------------------------------------------
85 //-----------------------------------------------------------
87
88#if GX_DEVELOP
90 static GxGuiBase* createGui(GxProperty & property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index = 0);
91#endif // GX_DEVELOP
92
94 //-----------------------------------------------------------
96 //-----------------------------------------------------------
98
100 u32 _bodyNumber[2];
101 GxVector3 _offset[2];
102 GxVector3 _rotateAxis[2];
103 f32 _low;
104 f32 _high;
105 f32 _twist;
106
108 };
109
111 //-----------------------------------------------------------
113 //-----------------------------------------------------------
115
117 GxResRagdoll(void);
118
120 //-----------------------------------------------------------
122 //-----------------------------------------------------------
124
126 void cleanup(void) override;
127protected:
129 b32 load(GxStream& in, u32 dataSize);
130#if GX_DEVELOP
132 b32 save(GxStream& out);
133#endif // GX_DEVELOP
134
136 //-----------------------------------------------------------
138 //-----------------------------------------------------------
140public:
142 constexpr u32 getBodyDataCount(void) const { return _bodyDataArray.getCount(); }
144 constexpr u32 getJointDataCount(void) const { return _jointDataArray.getCount(); }
145
147 const GxRagdollBodyData* getBodyData(u32 index) const;
149 const GxRagdollJointData* getJointData(u32 index) const;
150
152
156 GxRagdollBodyData* getBodyData(u32 index);
158
162 GxRagdollJointData* getJointData(u32 index);
163
165 GX_FORCE_INLINE GxArrayClassBase& getBodyDataArray(void){ return _bodyDataArray; }
167 GX_FORCE_INLINE GxArrayClassBase& getJointDataArray(void){ return _jointDataArray; }
168
170 //-----------------------------------------------------------
172 //-----------------------------------------------------------
174protected:
177
179};
180
181#if GX_DEVELOP
182//===========================================================================
184//===========================================================================
185class GxResRagdollXml : public GxResRagdoll
186{
187 //-----------------------------------------------------------
189 //-----------------------------------------------------------
191public:
192 // RTTI宣言
193 GX_RTTI_RESOURCE(GxResRagdollXml, GxResRagdoll);
194 // GxClassBaseReference 継承クラス用禁止宣言
195 GX_PROHIBIT_CLASS_BASE_REFERENCE(GxResRagdollXml);
196
198 //-----------------------------------------------------------
200 //-----------------------------------------------------------
202
204 GxResRagdollXml(void);
205
207 //-----------------------------------------------------------
209 //-----------------------------------------------------------
211
213 b32 finalized(void);
214#if GX_EDITOR
216 void getToolRtti(GxArray& arrayTool) const override;
217#endif //GX_EDITOR
218
219protected:
221 b32 load(GxStream& in, u32 dataSize);
223 b32 save(GxStream& out);
224
226 //-----------------------------------------------------------
228 //-----------------------------------------------------------
230public:
232 constexpr GxResModel* getResModel(void) const { return _pResModel; }
234 constexpr void setResModel(GxResModel* pResModel) { _pResModel = pResModel; }
236 constexpr GxResMotionPackage* getResMotionPackage(void) const { return _pResMotionPackage; }
238 constexpr void setResMotionPackage(GxResMotionPackage* pResMotionPackage) { _pResMotionPackage = pResMotionPackage; }
239
241 GX_FORCE_INLINE b32 isUsesDataCommon(void) const { return _usesDataCommon; }
243 GX_FORCE_INLINE void setUsesDataCommon(b32 value){ _usesDataCommon = value; }
245 GX_FORCE_INLINE b32 isCalcsMassAuto(void) const { return _calcsMassAuto; }
247 GX_FORCE_INLINE void setCalcsMassAut(b32 value){ _calcsMassAuto = value; }
248
250 //-----------------------------------------------------------
252 //-----------------------------------------------------------
254protected:
255 GxResModel* _pResModel;
256 GxResMotionPackage* _pResMotionPackage;
257 b32 _usesDataCommon;
258 b32 _calcsMassAuto;
259
261};
262#endif // GX_DEVELOP
263
264GX_UTILITY_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
void GxTypedObject
その他
Definition GxDefine.h:213
#define GX_RTTI_RESOURCE(__THIS__, __BASE__)
リソースクラス型情報宣言
Definition GxRttiResource.h:102
配列クラス
Definition GxArrayClassBase.h:18
配列クラス
Definition GxArray.h:18
プロパティクラス
Definition GxProperty.h:48
リソース基底クラス
Definition GxResBase.h:23
モデルリソースクラス
Definition GxResModel.h:20
モーションパッケージリソース
Definition GxResMotionPackage.h:20
剛体データクラス
Definition GxResRagdoll.h:35
GxVector3 _inertiaScale
回転しにくさ
Definition GxResRagdoll.h:59
f32 _angularDamping
角速度の減衰
Definition GxResRagdoll.h:60
GxVector3 _rotate
パーツの初期姿勢 // 中間リソースは degree で保持
Definition GxResRagdoll.h:53
f32 _linearDamping
線形速度の減衰
Definition GxResRagdoll.h:58
f32 _friction
摩擦係数
Definition GxResRagdoll.h:56
f32 _angularVelocityThreshold
角速度の非アクティブ化閾値
Definition GxResRagdoll.h:62
GxVector3 _offset
関節からのオフセット
Definition GxResRagdoll.h:52
f32 _linearVelocityThreshold
線形速度の非アクティブ化閾値
Definition GxResRagdoll.h:61
f32 _deactivationTime
非アクティブになるまでの時間
Definition GxResRagdoll.h:57
u32 _modelJointIndex
基本追従関節番号
Definition GxResRagdoll.h:50
GxVector3 _length
軸長
Definition GxResRagdoll.h:54
f32 _mass
重さ
Definition GxResRagdoll.h:55
関節データクラス
Definition GxResRagdoll.h:73
f32 _high
最大回転角度 // 円錐ネジリの場合は円錐の開き角度 軸とねじり軸に垂直な軸の回転
Definition GxResRagdoll.h:104
f32 _twist
ヒンジでは未使用 // ネジリ最大角度
Definition GxResRagdoll.h:105
b32 _isHinge
ヒンジ型か円錐ネジリ型か
Definition GxResRagdoll.h:99
f32 _low
最小回転角度 // 円錐ネジリの場合は円錐の開き角度 軸回転
Definition GxResRagdoll.h:103
ラグドールリソースクラス
Definition GxResRagdoll.h:18
constexpr u32 getBodyDataCount(void) const
剛体データ数取得
Definition GxResRagdoll.h:142
b32 load(GxStream &in, u32 dataSize)
リソースロード
Definition GxResRagdoll.cpp:58
GX_FORCE_INLINE GxArrayClassBase & getJointDataArray(void)
関節管理配列取得
Definition GxResRagdoll.h:167
GX_FORCE_INLINE GxArrayClassBase & getBodyDataArray(void)
剛体管理配列取得
Definition GxResRagdoll.h:165
constexpr u32 getJointDataCount(void) const
関節データ数取得
Definition GxResRagdoll.h:144
GxArrayClassBase _bodyDataArray
剛体管理配列
Definition GxResRagdoll.h:175
GxArrayClassBase _jointDataArray
関節管理配列
Definition GxResRagdoll.h:176
実行時型情報クラス
Definition GxRtti.h:154
ストリーム基礎クラス
Definition GxStream.h:20
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173