OROCHI
 
Loading...
Searching...
No Matches
GxEventHit.h
Go to the documentation of this file.
1//===========================================================================
12//===========================================================================
13#pragma once
14
16//===========================================================================
18//===========================================================================
19class GxEventHit : public GxCollision
20{
21 //-------------------------------------------------------------
23 //-------------------------------------------------------------
25public:
26 // RTTI定義
27 GX_RTTI_CLASS( GxEventHit, GxCollision )
28 // GxClassBase継承クラス用禁止宣言
30
31
32 static const GxColor COLOR_OBJECT;
33
34 class GxWorld;
35 class GxObject;
36
38 //-------------------------------------------------------------
40 //-------------------------------------------------------------
42
44 GxEventHit(void);
45
47 ~GxEventHit(void) override;
48
50 //-----------------------------------------------------------
52 //-----------------------------------------------------------
54
56 GxCollision::GxObject* allocObject(void) override;
57
59 void initialize(GxCollision::GxWorld* pRegisterWorld, GxUnitBase* pUnit, GxCollision::COLLISION_CALLBACK pCallback, u32 threadIndex) override;
60
61#if GX_DEVELOP
63 // developDraw用に継承。必要に応じてGX_DEVELOPをはずすこと。
64 void initializeCheck(void);
65#endif // GX_DEVELOP
66
67#if GX_DEVELOP
69 void developDrawObject(const GxColor& color = GxColor::WHITE, PRIMITIVE_FILL_MODE fillMode = PRIMITIVE_FILL_MODE::WIRE) override;
71 GX_FORCE_INLINE static void setDevelopDrawEventHit(b32 display) { getGxSysMain()->setDevelopFlag(DEVELOP_FLAG_COLLISION_DRAW_EVENT_HIT, display); }
73 GX_FORCE_INLINE static b32 getDevelopDrawEventHit(void) { return getGxSysMain()->isOnDevelopFlag(DEVELOP_FLAG_COLLISION_DRAW_EVENT_HIT); }
74#endif // GX_DEVELOP
75
76protected:
78 GxCollision::GxObject* addObject(void) override;
79
81 //-----------------------------------------------------------
83 //-----------------------------------------------------------
85
87 constexpr GxClassBaseRoot* getEventExecutant( void ) const { return _pEventExecutant; }
89 constexpr void setEventExecutant( GxClassBaseRoot* pEventExecutant ) { _pEventExecutant = pEventExecutant; }
90
92 //-----------------------------------------------------------
94 //-----------------------------------------------------------
96private:
97 GxClassBaseRoot* _pEventExecutant;
98
100};
101
102//===========================================================================
104//===========================================================================
106{
107 //-------------------------------------------------------------
109 //-------------------------------------------------------------
111public:
113 // GxClassBase継承クラス用禁止宣言
115
116
117 //-----------------------------------------------------------
119 //-----------------------------------------------------------
121
123 GxWorld(void);
125 ~GxWorld( void ) override;
126
128 //-----------------------------------------------------------
130 //-----------------------------------------------------------
132
133#if GX_DEVELOP
137 void check(void) override;
138#endif // GX_DEVELOP
139
142 // note:旧hit()
143 void postBulletUpdate(void) override;
144
146 void calculateHitObject(btPersistentManifold* pPersistentManifold);
147
149};
150
151//===========================================================================
153//===========================================================================
155{
156 //-------------------------------------------------------------
158 //-------------------------------------------------------------
160public:
161 // RTTI定義
163 // GxClassBase継承クラス用禁止宣言
165
166
170 enum class TYPE
171 {
172 PUSHER = 0,
173 SWITCH,
174 ERROR_,
175 MAX,
176 };
177#if GX_DEVELOP
179 GX_ENUM_TABLE_MAX(TYPE)
180#endif //GX_DEVELOP
181
186 enum GROUP
187 {
188 GROUP_PUSHER = (0x01 << 0),
189 GROUP_SWITCH = (0x01 << 1),
190 };
191
193 typedef void (GxClassBaseRoot::* HIT_CALLBACK)(GxEventHit::GxObject* pHitObject );
194
196 //-----------------------------------------------------------
198 //-----------------------------------------------------------
200
202 GxObject(void);
204 ~GxObject( void ) override;
205
207 //-----------------------------------------------------------
209 //-----------------------------------------------------------
211
212#if GX_DEVELOP
214 // 必要に応じてGX_DEVELOPをはずすこと。
215 void initializeCheck(void);
216#endif // GX_DEVELOP
217
219 b32 isNeedCheck(GxCollision::GxObject* pCollisionObject) override;
220
221#if GX_DEVELOP
223 void developDraw(const GxColor& color, PRIMITIVE_FILL_MODE fillMode = PRIMITIVE_FILL_MODE::WIRE) override;
224#endif // GX_DEVELOP
225
227 //-----------------------------------------------------------
229 //-----------------------------------------------------------
231
233 constexpr TYPE getType(void) const { return _type; }
239 void setType(TYPE type);
240
241 // 管理クラスの取得
242 GX_FORCE_INLINE GxEventHit* getManagementClass(void) const { return gx_cast<GxEventHit*>(getCollision()); }
244 GX_FORCE_INLINE HIT_CALLBACK getHitCallback(void) const { return _pHitCallback; }
246 GX_FORCE_INLINE void setHitCallback(HIT_CALLBACK pCallBack) { _pHitCallback = pCallBack; }
248 constexpr void setTarget(GxObject* pTarget) { _pTarget = pTarget; }
250 constexpr GxObject* getTarget(void) const { return _pTarget; }
251
253 constexpr GxClassBaseRoot* getEventExecutant( void ) const { return _pEventExecutant; }
255 constexpr void setEventExecutant( GxClassBaseRoot* pEventExecutant ) { _pEventExecutant = pEventExecutant; }
256
258 GX_FORCE_INLINE void setHitPosition(const GxVector3& hitPosition){ _hitPosition = hitPosition; }
260 GX_FORCE_INLINE void setHitNormal(const GxVector3& hitNormal){ _hitNormal = hitNormal; }
262 GX_FORCE_INLINE GxVector3 getHitPosition(void) const { return _hitPosition; }
264 GX_FORCE_INLINE GxVector3 getHitNormal(void) const { return _hitNormal; }
265
266#if GX_DEVELOP
268 GX_FORCE_INLINE b32 isHitDevelop(void) { return _isHitDevelop; }
270 GX_FORCE_INLINE void setIsHitDevelop(b32 isHit) { _isHitDevelop = isHit; }
271#endif // GX_DEVELOP
272
274 //-----------------------------------------------------------
276 //-----------------------------------------------------------
278private:
279 HIT_CALLBACK _pHitCallback;
280 GxEventHit::GxObject* _pTarget;
281 GxClassBaseRoot* _pEventExecutant;
282 GxVector3 _hitPosition;
283 GxVector3 _hitNormal;
284
286 TYPE _type;
287
288#if GX_DEVELOP
289 b32 _isHitDevelop;
290#endif // GX_DEVELOP
291
293};
294
295GX_PHYSICS_NAMESPACE_END()
T gx_cast(GxClassBaseRoot *pObject)
Definition GxBase.h:264
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
#define GX_PHYSICS_NAMESPACE_BEGIN()
ネームスペースマクロ
Definition GxPhysics.h:28
PRIMITIVE_FILL_MODE
塗りつぶしモード
Definition GxPrimitive.h:31
@ WIRE
ワイヤーフレーム
基底クラス
Definition GxBase.h:51
Collision基本オブジェクトクラス
Definition GxCollision.h:489
constexpr GxCollision * getCollision(void) const
親コリジョンの取得
Definition GxCollision.h:761
Collision基本ワールドクラス
Definition GxCollision.h:236
virtual void check(void)
Definition GxCollision.cpp:664
コリジョン基本クラス
Definition GxCollision.h:20
イベントあたりオブジェクトクラス
Definition GxEventHit.h:155
constexpr TYPE getType(void) const
タイプの取得
Definition GxEventHit.h:233
GROUP
Definition GxEventHit.h:187
@ GROUP_SWITCH
踏まれるイベント側のあたり
Definition GxEventHit.h:189
@ GROUP_PUSHER
イベントを踏む側のあたり
Definition GxEventHit.h:188
constexpr GxObject * getTarget(void) const
攻撃相手の取得
Definition GxEventHit.h:250
void(GxClassBaseRoot::*) HIT_CALLBACK(GxEventHit::GxObject *pHitObject)
ヒット時コールバック定義
Definition GxEventHit.h:193
~GxObject(void) override
デストラクタ
Definition GxEventHit.cpp:331
TYPE
Definition GxEventHit.h:171
@ PUSHER
イベントを踏む側の当たり
@ SWITCH
踏まれるイベント側の当たり
constexpr GxClassBaseRoot * getEventExecutant(void) const
イベント実行者取得
Definition GxEventHit.h:253
constexpr void setTarget(GxObject *pTarget)
攻撃相手のセット
Definition GxEventHit.h:248
GX_FORCE_INLINE void setHitPosition(const GxVector3 &hitPosition)
接触点を設定
Definition GxEventHit.h:258
GxObject(void)
デフォルトコンストラクタ
Definition GxEventHit.cpp:320
GX_FORCE_INLINE void setHitNormal(const GxVector3 &hitNormal)
接触時の法線を設定
Definition GxEventHit.h:260
GX_FORCE_INLINE void setHitCallback(HIT_CALLBACK pCallBack)
コールバック関数のセット
Definition GxEventHit.h:246
GX_FORCE_INLINE GxVector3 getHitPosition(void) const
接触点を取得
Definition GxEventHit.h:262
void setType(TYPE type)
Definition GxEventHit.cpp:341
b32 isNeedCheck(GxCollision::GxObject *pCollisionObject) override
お互いの当たり判定が必要か判定
Definition GxEventHit.cpp:391
constexpr void setEventExecutant(GxClassBaseRoot *pEventExecutant)
イベント実行者設定
Definition GxEventHit.h:255
GX_FORCE_INLINE GxVector3 getHitNormal(void) const
接触時の法線を取得
Definition GxEventHit.h:264
GX_FORCE_INLINE HIT_CALLBACK getHitCallback(void) const
コールバック関数の取得
Definition GxEventHit.h:244
イベントあたりワールドクラス
Definition GxEventHit.h:106
void calculateHitObject(btPersistentManifold *pPersistentManifold)
ヒットしたオブジェクトのコールバック呼び出し
Definition GxEventHit.cpp:210
~GxWorld(void) override
デストラクタ
Definition GxEventHit.cpp:157
GxWorld(void)
デフォルトコンストラクタ
Definition GxEventHit.cpp:147
void postBulletUpdate(void) override
Definition GxEventHit.cpp:185
イベントあたりクラス
Definition GxEventHit.h:20
constexpr void setEventExecutant(GxClassBaseRoot *pEventExecutant)
イベント実行者を設定
Definition GxEventHit.h:89
constexpr GxClassBaseRoot * getEventExecutant(void) const
イベント実行者を取得
Definition GxEventHit.h:87
ユニット基礎クラス
Definition GxUnitBase.h:45
Definition GxColor.h:21
static const GxColor WHITE
Definition GxColor.h:37
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173