OROCHI
 
Loading...
Searching...
No Matches
GxResCollisionObject.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13#define RES_COLLISION_VERSION 5
14
16
18
19//===========================================================================
21//===========================================================================
23{
24 //-----------------------------------------------------------
26 //-----------------------------------------------------------
28public:
29 // RTTI宣言
30 GX_RTTI_RESOURCE_NAME(GxResCollisionObject, GxResBase, "オブジェクトコリジョンリソース");
31 // GxClassBaseReference継承クラス用禁止宣言
33
34
35 enum class COLLISION_TYPE
36 {
37 ATTACK_HIT,
38 OBJECT_HIT,
39 BACKGROUND_HIT,
40 EVENT_HIT,
41 DYNAMICS,
42 MAX,
43 };
44#if GX_DEVELOP
46 GX_ENUM_TABLE_MAX(COLLISION_TYPE)
47#endif //GX_DEVELOP
48
50 enum class CALLBACK_TYPE
51 {
52 NONE,
53 DEFAULT,
54 };
55
56 class GxObjectData;
57
59 //-----------------------------------------------------------
61 //-----------------------------------------------------------
63
67 void cleanup( void ) override;
68
70 //-----------------------------------------------------------
72 //-----------------------------------------------------------
74
76 u32 getObjectCount(void);
78 GxObjectData* getObjectData(u32 index);
80 GX_FORCE_INLINE GxArrayClassBase& getArrayObjectData(void) { return _arrayObjectData; }
81
83 u32 getCurrentResVersion( void );
84
86 //-----------------------------------------------------------
88 //-----------------------------------------------------------
90protected:
92 b32 load(GxStream& in, u32 dataSize);
93#if GX_DEVELOP
95 b32 save(GxStream&);
96#endif // GX_DEVELOP
97
99 //-----------------------------------------------------------
101 //-----------------------------------------------------------
103
105
107};
108
109//===========================================================================
110// GxResCollisionObject::GxObjectData
111//===========================================================================
113{
114 //-----------------------------------------------------------
116 //-----------------------------------------------------------
118public:
119 // RTTI宣言
120 GX_RTTI_CLASS_NAME(GxObjectData, GxClassBase, "コリジョン基本データ")
121
122
123 //-----------------------------------------------------------
125 //-----------------------------------------------------------
127
129 GxObjectData(void);
133 ~GxObjectData(void) override;
134
135#if GX_DEVELOP
137 static GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index = 0);
138#endif // GX_DEVELOP
139
141 //-----------------------------------------------------------
143 //-----------------------------------------------------------
145
147 constexpr f32 getSphereRadius( void ) const { return _extent0; }
149 GX_FORCE_INLINE GxVector3 getBoxExtent( void ) const { return GxVector3(_extent0, _extent1, _extent2); }
151 constexpr f32 getCylinderRadius( void ) const { return _extent0; }
153 constexpr f32 getCylinderHeightHalf( void ) const { return _extent1; }
155 constexpr f32 getCapsuleDoubleJointRadius0( void ) const { return _extent0; }
157 constexpr f32 getCapsuleDoubleJointRadius1( void ) const { return _extent1; }
159 constexpr f32 getCapsuleRadius( void ) const { return _extent0; }
161 constexpr f32 getCapsuleHeight( void ) const { return _extent1; }
162
164 //-----------------------------------------------------------
166 //-----------------------------------------------------------
168public:
173
177
181
185
187
188 GxDynamics::GxRigidBodyParam _rigidBodyParam;
193
194 // 削除予定
197
200
202
204};
205
206#if GX_DEVELOP
207//===========================================================================
209//===========================================================================
210class GxResCollisionObjectXml : public GxResCollisionObject
211{
212 //-----------------------------------------------------------
214 //-----------------------------------------------------------
216public:
217 // RTTI宣言
218 GX_RTTI_RESOURCE(GxResCollisionObjectXml, GxResCollisionObject);
219 // GxClassBaseReference継承クラス用禁止宣言
220 GX_PROHIBIT_CLASS_BASE_REFERENCE(GxResCollisionObjectXml)
221
222 class GxObjectDataXml;
223
225 //-----------------------------------------------------------
227 //-----------------------------------------------------------
229
231 GxResCollisionObjectXml(void);
233 void cleanup(void) override;
234
236 //-----------------------------------------------------------
238 //-----------------------------------------------------------
240
241#if GX_EDITOR
243 void getToolRtti( GxArray& arrayTool ) const override;
244#endif //GX_EDITOR
246 GX_FORCE_INLINE b32 finalize(void) { return true; }
247
248protected:
250 b32 load(GxStream& in, u32 dataSize);
252 b32 save(GxStream& out);
253
255 //-----------------------------------------------------------
257 //-----------------------------------------------------------
259public:
261 constexpr GxResModel* getResModel(void) const { return _pResModel; }
263 constexpr void setResModel(GxResModel* pResModel) { GX_SET_CLASS_BASE_REFERENCE(_pResModel, pResModel); }
264
266 //-----------------------------------------------------------
268 //-----------------------------------------------------------
270protected:
271 GxResModel* _pResModel;
272 u32 _version;
273
275};
276
277#endif // GX_DEVELOP
278
279GX_PHYSICS_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
#define GX_SET_CLASS_BASE_REFERENCE(__DST__, __SRC__)
オブジェクト設定(参照カウンタを使用する場合)
Definition GxBase.h:318
@ MAX
定義数
void GxTypedObject
その他
Definition GxDefine.h:213
@ NONE
何もしない
#define GX_PHYSICS_NAMESPACE_BEGIN()
ネームスペースマクロ
Definition GxPhysics.h:28
#define GX_RTTI_RESOURCE(__THIS__, __BASE__)
リソースクラス型情報宣言
Definition GxRttiResource.h:102
@ DEFAULT
ソートせずに名前順(デフォルト)
配列クラス
Definition GxArrayClassBase.h:18
配列クラス
Definition GxArray.h:18
TYPE
Definition GxAttackHit.h:319
オブジェクト基底クラス
Definition GxBase.h:88
コリジョン拡張データ
Definition GxSysCollision.h:205
COLLISION_SHAPE
コリジョン形状
Definition GxCollision.h:38
プロパティクラス
Definition GxProperty.h:48
リソース基底クラス
Definition GxResBase.h:23
Definition GxResCollisionObject.h:113
constexpr f32 getCapsuleDoubleJointRadius0(void) const
カプセルの先端半径0を取得
Definition GxResCollisionObject.h:155
b32 _isCompoundStart
仮:剛体用複合形状:開始
Definition GxResCollisionObject.h:190
constexpr f32 getCapsuleRadius(void) const
カプセルの半径を取得
Definition GxResCollisionObject.h:159
GxAttackHit::GxObject::TYPE _subType
コリジョンの種類毎のサブタイプ
Definition GxResCollisionObject.h:182
constexpr f32 getCapsuleHeight(void) const
カプセルの高さを取得
Definition GxResCollisionObject.h:161
GxResCollisionObject::COLLISION_TYPE _collisionType
コリジョンの種類(背景/オブジェクト/攻撃)
Definition GxResCollisionObject.h:169
GxVector3 _shapeTop
箱・円柱・カプセル上端位置
Definition GxResCollisionObject.h:198
f32 _weight
押し合い時の重さ(重いほど動きにくい)
Definition GxResCollisionObject.h:184
b32 _isCompoundEnd
仮:剛体用複合形状:終了
Definition GxResCollisionObject.h:191
f32 _extent2
サイズ2
Definition GxResCollisionObject.h:180
f32 _extent1
サイズ1
Definition GxResCollisionObject.h:179
~GxObjectData(void) override
デストラクタ
Definition GxResCollisionObject.cpp:211
b32 _isVehicleBody
仮:車の本体
Definition GxResCollisionObject.h:192
GxCollisionExtraData * _pExtraData
拡張用
Definition GxResCollisionObject.h:186
b32 _isLineCheck
ラインチェック
Definition GxResCollisionObject.h:201
GxVector3 _offset1
オフセット1
Definition GxResCollisionObject.h:175
u32 _attribute
コリジョンの種類毎の属性
Definition GxResCollisionObject.h:183
GxVector3 _offset
オフセット
Definition GxResCollisionObject.h:174
GxQuaternion _radian
角度オフセット
Definition GxResCollisionObject.h:176
GxVector3 _shapeBottom
箱・円柱・カプセル下端位置
Definition GxResCollisionObject.h:199
GxObjectData(void)
デフォルトコンストラクタ
Definition GxResCollisionObject.cpp:157
f32 _suspensionTravel
仮:サス移動量最大値
Definition GxResCollisionObject.h:195
s32 _jointNumber1
関節番号1
Definition GxResCollisionObject.h:172
constexpr f32 getCylinderRadius(void) const
シリンダの半径を取得
Definition GxResCollisionObject.h:151
f32 _suspensionTarget
仮:サスのバネからの力が0になる長さ
Definition GxResCollisionObject.h:196
f32 _extent0
サイズ0
Definition GxResCollisionObject.h:178
constexpr f32 getCapsuleDoubleJointRadius1(void) const
カプセルの先端半径1を取得
Definition GxResCollisionObject.h:157
GxCollision::COLLISION_SHAPE _shapeType
オブジェクトの形状
Definition GxResCollisionObject.h:170
b32 _isCompound
仮:剛体用複合形状かどうか
Definition GxResCollisionObject.h:189
constexpr f32 getSphereRadius(void) const
球の半径を取得
Definition GxResCollisionObject.h:147
constexpr f32 getCylinderHeightHalf(void) const
シリンダの高さの半分を取得
Definition GxResCollisionObject.h:153
GX_FORCE_INLINE GxVector3 getBoxExtent(void) const
箱のサイズを取得
Definition GxResCollisionObject.h:149
s32 _jointNumber
関節番号
Definition GxResCollisionObject.h:171
コリジョンリソースクラス
Definition GxResCollisionObject.h:23
GX_FORCE_INLINE GxArrayClassBase & getArrayObjectData(void)
配列オブジェクトデータを取得
Definition GxResCollisionObject.h:80
GxArrayClassBase _arrayObjectData
コリジョンデータ格納配列
Definition GxResCollisionObject.h:104
b32 load(GxStream &in, u32 dataSize)
リソースのロード
Definition GxResCollisionObject.cpp:65
COLLISION_TYPE
コリジョンの種類:リソース保存されることに注意
Definition GxResCollisionObject.h:36
CALLBACK_TYPE
コールバックタイプ
Definition GxResCollisionObject.h:51
void cleanup(void) override
解放
Definition GxResCollisionObject.cpp:47
モデルリソースクラス
Definition GxResModel.h:20
実行時型情報クラス
Definition GxRtti.h:154
ストリーム基礎クラス
Definition GxStream.h:20
剛体パラメタ構造体
Definition GxDynamics.h:944
クォータニオン
Definition GxQuaternion.h:19
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173