OROCHI
 
Loading...
Searching...
No Matches
GxDynamicsPhysX.h
Go to the documentation of this file.
1//===========================================================================
11//===========================================================================
12#pragma once
13
14#if PLATFORM_PHYSX_SUPPORT
15#include "PxRigidDynamic.h"
16#include "PxPhysicsAPI.h"
17
19
20//===========================================================================
22//===========================================================================
23struct GxShapeDescForPhysX3 : public GxStructBase
24{
25 //-----------------------------------------------------------
27 //-----------------------------------------------------------
29
30 // RTTI宣言
31 GX_RTTI_STRUCT(GxShapeDescForPhysX3);
32
34 //-------------------------------------------------------------
36 //-------------------------------------------------------------
38
40 GxShapeDescForPhysX3(void)
41 : _pUserData(nullptr)
42 , _pConvexMeshData(nullptr)
43 , _pTriangleMeshData(nullptr)
44 {}
45
47 //-------------------------------------------------------------
49 //-------------------------------------------------------------
51
52 PxVec3 _position;
53 PxQuat _quaternion;
54 //スフィア・カプセル用
55 PxF32 _radius;
56 //ボックス
57 PxVec3 _dimensions;
58 //カプセル
59 PxF32 _height;
60 //複合形状・背景メッシュ
61 void* _pUserData;
62 //複合形状
63 PxConvexMesh* _pConvexMeshData;
64 //背景メッシュ
65 PxTriangleMesh* _pTriangleMeshData;
66
68
70};
71
72//===========================================================================
74//===========================================================================
75class GxDynamicsPhysX : public GxDynamics
76{
77 //-----------------------------------------------------------
79 //-----------------------------------------------------------
81public:
82 // RTTI宣言
83 GX_RTTI_CLASS(GxDynamicsPhysX, GxDynamics)
84 // GxClassBase継承クラス用禁止宣言
85 GX_PROHIBIT_CLASS_BASE(GxDynamicsPhysX)
86
87 class GxWorld;
88 class GxObject;
89 class GxConstraint;
90 struct GxRayResult;
91
93 //note: pHitには自身に当たったオブジェクトが入ります
94 typedef void (GxClassBaseRoot::* DYNAMICS_HIT_CALLBACK)(GxObject* pHit);
95
97 //-----------------------------------------------------------
99 //-----------------------------------------------------------
101
103 GxDynamicsPhysX(void) : _pHitCallback(nullptr) {}
105 ~GxDynamicsPhysX(void) override {}
106
108 //-----------------------------------------------------------
110 //-----------------------------------------------------------
112
114 GxDynamics::GxObject* allocObject(void) override;
117
119 GxDynamics::GxObject* createConvexShape(b32 active, GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxVector3* pVertex, u32 numVertex, const GxRigidBodyParam& rigidParam, f32 margin = DYNAMICS_COLLISION_SKIN_WIDTH) override
120 {
121 return Super::createConvexShape(active, pMatrix, jointIndex, offset, rotateOffset, pVertex, numVertex, rigidParam, margin);
122 }
123
124#if USE_VEHICLE
126 GxDynamics::GxObject* createVehicle(b32 active,
127 GxMatrixAffine* pMatrix,
128 const GxVector3& offset,
129 const GxQuaternion& rotateOffset,
130 const GxVector3* pChassisVertex,
131 u32 numChassisVertex,
132 f32 chassisMass,
133 f32 chassisFriction,
134 u32 chassisGroup,
135 u32 chassisAgainstGroup,
136 const GxVector3* pWheelVertex,
137 const u32 numWheelVertex,
138 f32 wheelMass,
139 f32 wheelFriction,
140 u32 wheelGroup,
141 u32 wheelAgainstGroup,
142 GxVector3& wheelOffset0,
143 GxVector3& wheelOffset1,
144 GxVector3& wheelOffset2,
145 GxVector3& wheelOffset3);
146#endif //USE_VEHICLE
147
148public:
150 GX_FORCE_INLINE void setHitCallback(DYNAMICS_HIT_CALLBACK pCallback){ _pHitCallback = pCallback; }
152 GX_FORCE_INLINE DYNAMICS_HIT_CALLBACK getHitCallback(void){ return _pHitCallback; }
153
155 //-----------------------------------------------------------
157 //-----------------------------------------------------------
159protected:
160 DYNAMICS_HIT_CALLBACK _pHitCallback;
161
163};
164
165//===========================================================================
167//===========================================================================
168class GxDynamicsPhysX::GxWorld : public GxDynamics::GxWorld
169{
170 //-------------------------------------------------------------
172 //-------------------------------------------------------------
174public:
175 // RTTI定義
176 GX_RTTI_CLASS(GxDynamicsPhysX::GxWorld, GxDynamics::GxWorld);
177 // GxClassBase継承クラス用禁止宣言
178 GX_PROHIBIT_CLASS_BASE(GxWorld);
179
181 class GxContactModifyCallback : public PxContactModifyCallback
182 {
183 public:
185 virtual void onContactModify(PxContactModifyPair* const pPairs, PxU32 count);
186 };
187
189 //-----------------------------------------------------------
191 //-----------------------------------------------------------
193
195 GxWorld(void);
196
198 ~GxWorld(void) override {}
199
201 //-----------------------------------------------------------
203 //-----------------------------------------------------------
205
207 b32 alloc(u32 meshCount, const GxVector3& worldAabbMin, const GxVector3& worldAabbMax, u16 maxHandles,
208 u32 stackAllocatorSize = DYNAMICS_DEFAULT_STACK_ALLOCATOR_SIZE,
209 u32 maxPersistentManifoldPoolSize = DYNAMICS_DEFAULT_MAX_PERSISTENT_MANIFOLD_POOL_SIZE,
210 u32 maxCollisionAlgorithmPoolSize = DYNAMICS_DEFAULT_MAX_COLLISION_ALGORITHM_POOL_SIZE) override;
211
213 void free(void) override;
214
216 void update(void) override;
217
219 void registerObject(GxDynamics::GxObject* pObject) override;
221 void banObject(GxDynamics::GxObject* pObject) override;
222
224 void setGravity(const f32 gravityX, const f32 gravityY, const f32 gravityZ) override;
225
239 b32 checkRayClosestVsWorld(GxDynamics::GxRayResult* pRayResult, const GxVector3& startPosition, const GxVector3& endPosition, GxDynamics::GxConditionInformation* pConditionInformation = nullptr) override;
240
242 b32 checkRayClosestVsSingle(GxDynamics::GxRayResult* pRayResult, GxDynamics::GxObject* pTargetObject, const GxVector3& startPosition, const GxVector3& endPosition, GxDynamics::GxConditionInformation* pConditionInformation = nullptr) override;
243
245 static PxFilterFlags filter( PxFilterObjectAttributes attributes0,
246 PxFilterData filterData0,
247 PxFilterObjectAttributes attributes1,
248 PxFilterData filterData1,
249 PxPairFlags& pairFlags,
250 const void* pConstantBlock,
251 PxU32 constantBlockSize);
252
253public:
255 b32 createNxScene( void );
260 b32 deleteNxScene( void );
261
263 virtual void fetchPhysicsResults( void );
265 virtual void startPhysics( void );
267 virtual f32 getDeltaTime( void );
269 constexpr PxScene* getNxScene( void ) const { return _pNxScene; }
271 void updateGroupCollision( void );
272
274 void detachObjectFromWorld(GxDynamics::GxObject* pObject) override;
275
276#if (USE_VEHICLE)
277public:
279 void updateVehicle(void);
281 u32 getVehicleCount(void);
283 void getVehicleObject(GxList& list);
285 GX_FORCE_INLINE const PxVehicleDrivableSurfaceType* getDrivableSurfaceType(u32 index){ return &_vehicleDrivableSurfaceTypes[index]; }
286#endif //USE_VEHICLE
287
289 //-----------------------------------------------------------
291 //-----------------------------------------------------------
293private:
294 PxScene* _pNxScene;
295 GxContactModifyCallback _contactModifyCallback;
296
297#if (USE_VEHICLE)
298 PxBatchQuery* _pWheelRaycastBatchQuery;
299 PxVehicle4WSceneQueryData<MAX_NUM_VEHICLE_CNT> _sceneQueryDataFowWheel;
300 PxVehicleDrivableSurfaceType PX_ALIGN(16, _vehicleDrivableSurfaceTypes[MAX_NUM_SURFACE_TYPES]);
301#endif //USE_VEHICLE
302
304};
305
306//===========================================================================
308//===========================================================================
309class GxDynamicsPhysX::GxObject : public GxDynamics::GxObject
310{
311 //-------------------------------------------------------------
313 //-------------------------------------------------------------
315public:
316 // RTTI定義
317 GX_RTTI_CLASS(GxDynamicsPhysX::GxObject, GxDynamics::GxObject);
318 // GxClassBase継承クラス用禁止宣言
319 GX_PROHIBIT_CLASS_BASE(GxObject);
320
322 enum
323 {
324 ACTIVE_FLAG_STAY_HERE = (1UL << 5),
325 };
326
328 //-----------------------------------------------------------
330 //-----------------------------------------------------------
332
334 GxObject(void);
336 ~GxObject(void) override;
337
339 void initialize(b32 active, GxMatrixAffine* pMatrix, const GxVector3& offset, const GxQuaternion& rotateOffset) override;
340
342 //-----------------------------------------------------------
344 //-----------------------------------------------------------
346
348 void preUpdate(void) override;
350 void postUpdate(void) override;
351
353 b32 createSphere(b32 active, GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeSphere& sphere, const GxRigidBodyParam& rigidParam, f32 margin) override;
355 b32 createBox(b32 active, GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeBox& box, const GxRigidBodyParam& rigidParam, f32 margin) override;
357 b32 createCylinder(b32 active, GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeCylinder& cylinder, const GxRigidBodyParam& rigidParam, f32 margin) override;
359 b32 createMultisphere(b32 active, GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeMultisphere& multiSphere, const GxRigidBodyParam& rigidParam, f32 margin) override;
361 b32 createCapsule(b32 active, GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeCapsule& capsule, const GxRigidBodyParam& rigidParam, f32 margin) override;
363 b32 createConvexShape(b32 active, GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxVector3* pVertex, u32 numVertex, const GxRigidBodyParam& rigidParam, f32 margin) override;
365 b32 createCompoundObject(GxMatrixAffine* pMatrix, s32 jointIndex, const GxVector3& offset, const GxQuaternion& rotateOffset, f32 margin) override;
367 b32 createMesh(b32 active, GxMatrixAffine* pMatrix, const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeTrimesh& trimesh, f32 friction = 0.5f, b32 isCompress = true, GxVector3* pAabbMin = nullptr, GxVector3* pAabbMax = nullptr, f32 margin = DYNAMICS_COLLISION_MARGIN) override;
368
370 b32 addCompoundSphere(const GxVector3& offset, const GxShapeSphere& sphere) override;
372 b32 addCompoundBox(const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeBox& box) override;
374 b32 addCompoundCapsule(const GxVector3& offset, const GxQuaternion& rotateOffset, const GxShapeCapsule& capsule) override;
376 b32 addCompoundConvex(const GxVector3& offset, const GxQuaternion& rotateOffset, const GxVector3* pVertex, u32 numVertex) override;
378 b32 endAddCompound(b32 isActive, const GxRigidBodyParam& rigidParam) override;
379
380#if GX_DEVELOP
382 void developDraw(const GxColor& color, PRIMITIVE_FILL_MODE fillMode = PRIMITIVE_FILL_MODE::WIRE) override;
383#endif // GX_DEVELOP
384
386 void reset(void) override;
387
389 void applyForce(const GxVector3& force, const GxVector3& position) override;
391 void applyImpulse(const GxVector3& impulse, const GxVector3& position) override;
392
393#if (USE_VEHICLE)
394private:
396 b32 createChassisInfomation(const GxVector3* pVertex,
397 const u32 numVertex,
398 f32 mass,
399 f32 friction,
400 PxConvexMesh** ppChassisConvexMesh,
401 PxVec3* pChassisMOI,
402 PxVec3* pChassisDims);
403
405 b32 createWheelInfomation(const GxVector3* pVertex,
406 const u32 numVertex,
407 PxConvexMesh** ppWheelConvexMesh,
408 f32* pWheelWidth,
409 f32* pWheelRadii);
410public:
412 b32 createVehicle(b32 active,
413 GxMatrixAffine* pMatrix,
414 const GxVector3& offset,
415 const GxQuaternion& rotateOffset,
416 const GxVector3* pChassisVertex,
417 u32 numChassisVertex,
418 f32 chassisMass,
419 f32 chassisFriction,
420 u32 chassisGroup,
421 u32 chassisAgainstGroup,
422 const GxVector3* pWheelVertex,
423 const u32 numWheelVertex,
424 f32 wheelMass,
425 f32 wheelFriction,
426 u32 wheelGroup,
427 u32 wheelAgainstGroup,
428 GxVector3& wheelOffset0,
429 GxVector3& wheelOffset1,
430 GxVector3& wheelOffset2,
431 GxVector3& wheelOffset3);
433 constexpr PxVehicle4W* getVehecle4W(void) const { return _pVehecle4W; }
435 void setAccel(f32 accel);
437 void setBrake(f32 brake);
439 void setSteer(f32 steer);
441 b32 getChassisWorldMatrix(GxMatrixAffine& matrix);
443 b32 getFrontLeftWheelWorldMatrix(GxMatrixAffine& matrix);
445 b32 getFrontRightWheelWorldMatrix(GxMatrixAffine& matrix);
447 b32 getRearLeftWheelWorldMatrix(GxMatrixAffine& matrix);
449 b32 getRearRightWheelWorldMatrix(GxMatrixAffine& matrix);
450#endif //USE_VEHICLE
451
453 constexpr PxActor* getNxActor(void) const { return _pNxActor; }
455 constexpr void setNxActorNull(void) { _pNxActor = nullptr; }
457 b32 createActor(GxShapeDescForPhysX3* pShapeDesc, const GxMatrixAffine* pMatrix, const GxRigidBodyParam& rigidParam);
459 constexpr PxConvexMesh* getNxConvexMesh(void) const { return _pNxConvexMesh; }
461 b32 putToSleep(void);
463 b32 isSleeping(void) const;
464
466 //-----------------------------------------------------------
468 //-----------------------------------------------------------
470
472 void setLinearVelocity(const GxVector3& velocity) override;
474 void getLinearVelocity(GxVector3& velocity) override;
475
477 void setAngularVelocity(const GxVector3& angular) override;
478
480 void setPosition(const GxVector3& position) override;
482 void getPosition(GxVector3& position) override;
484 void setQuaternion(const GxQuaternion& quaternion) override;
486 void getQuaternion(GxQuaternion& quaternion) override;
491 void setDampingRatio(f32 linearDamping, f32 angularDamping) override;
495 void setDeactivationTime(f32 time) override;
498 void setSleepingThresholds(f32 linear, f32 angular) override;
500 void setFriction(f32 friction) override;
501
503 void setRestitution(f32 restitution) override;
504
506 void setMatrix(const GxMatrixAffine& matrix) override;
508 GxMatrixAffine getMatrix(void) override;
509
511 b32 getShapeMatrix(u32 index, GxMatrixAffine& matrix);
512
514 void setActive(b32 active) override;
516 void setStayHere(b32 active);
518 GX_FORCE_INLINE b32 isStayHere(void){ return _activeFlag.isFlag(ACTIVE_FLAG_STAY_HERE); }
519
520 //-----------------------------------------------------------
524 //-----------------------------------------------------------
526 constexpr void setGroup(u16 group) { _group = group; }
527
529 constexpr u16 getGroup(void) const { return _group; }
530
532 //-----------------------------------------------------------
534 //-----------------------------------------------------------
536private:
537 PxCooking* _pNxCooking;
538 PxActor* _pNxActor;
539 PxMaterial* _pNxMaterial;
540 PxTriangleMeshDesc* _pNxMeshDesc;
541 PxTriangleMesh* _pNxMesh;
542 PxConvexMeshDesc* _pNxConvexDesc;
543 PxConvexMesh* _pNxConvexMesh;
544 GxArray _listNxConvexDesc;
545 GxArray _listNxConvexMesh;
546#if (USE_VEHICLE)
547 PxVehicle4W* _pVehecle4W;
548#endif //USE_VEHICLE
549
551};
552
553//===========================================================================
555//===========================================================================
556class GxDynamicsPhysX::GxConstraint : public GxDynamics::GxConstraint
557{
558 //-------------------------------------------------------------
560 //-------------------------------------------------------------
562public:
563 // RTTI定義
564 GX_RTTI_CLASS(GxDynamicsPhysX::GxConstraint, GxDynamics::GxConstraint);
565 // GxClassBase継承クラス用禁止宣言
566 GX_PROHIBIT_CLASS_BASE(GxConstraint);
567
569 //-----------------------------------------------------------
571 //-----------------------------------------------------------
573
575 GxConstraint(void) : _pNxJoint(nullptr) {}
576
578 ~GxConstraint(void) override;
579
581 //-----------------------------------------------------------
583 //-----------------------------------------------------------
585
588 b32 createConstraintSpherical(b32 active, GxDynamics::GxObject* pObject0, GxDynamics::GxObject* pObject1, const GxVector3& pivot0, const GxVector3& pivot1, b32 disableCollisions) override;
589
592 b32 createConstraintRevolute(b32 active, GxDynamics::GxObject* pObject0, GxDynamics::GxObject* pObject1, const GxMatrixAffine& mat0, const GxMatrixAffine& mat1, b32 disableCollisions) override;
594 b32 createConstraintRevolute(b32 active, GxDynamics::GxObject* pObject0, GxDynamics::GxObject* pObject1, const GxVector3& pivot0, const GxVector3& pivot1, const GxVector3& axis0, const GxVector3& axis1, const GxVector3& base0, const GxVector3& base1, b32 disableCollisions) override;
595
597 b32 createConstraintConeTwist(b32 active, GxDynamics::GxObject* pObject0, GxDynamics::GxObject* pObject1, const GxMatrixAffine& matrix0, const GxMatrixAffine& matrix1, const GxParamConeTwist& param) override;
598
600 b32 createConstraintFixed(b32 active, GxDynamics::GxObject* pObject0, GxDynamics::GxObject* pObject1, const GxVector3& pivot0, const GxVector3& pivot1) override;
601
603 void setParameterRevolute(const f32 lowerLimit, const f32 upperLimit) override;
604
606 //-----------------------------------------------------------
608 //-----------------------------------------------------------
610public:
612 constexpr PxJoint* getNxJoint( void ) const { return _pNxJoint; }
613
615 //-----------------------------------------------------------
617 //-----------------------------------------------------------
619protected:
620 PxJoint* _pNxJoint;
621 GxVector3 _pivot0;
622 GxVector3 _axis0;
623 GxVector3 _base0;
624
626};
627
628//===========================================================================
630//===========================================================================
631struct GxDynamicsPhysX::GxRayResult : public GxDynamics::GxRayResult
632{
633 //-----------------------------------------------------------
635 //-----------------------------------------------------------
637public:
639 GxRayResult(void) {}
641 ~GxRayResult(void) override {}
642
644 //-----------------------------------------------------------
646 //-----------------------------------------------------------
648
650 void setResult( const PxRaycastHit& result, f32 hitFraction );
651
653};
654
655//===========================================================================
657//===========================================================================
658class GxShapeDynamicsCompoundPhysX : public GxShapeDynamicsCompound
659{
660 //-------------------------------------------------------------------
662 //-------------------------------------------------------------------
664public:
665 GX_RTTI_CLASS(GxShapeDynamicsCompoundPhysX, GxShapeDynamicsCompound);
666
668 //-----------------------------------------------------------
670 //-----------------------------------------------------------
672
674 GxShapeDynamicsCompoundPhysX(void) {}
676 ~GxShapeDynamicsCompoundPhysX( void ) override;
677
679 //-----------------------------------------------------------
681 //-----------------------------------------------------------
683
685 void addShapeDesc( GxShapeDescForPhysX3* pDesc );
687 void deleteShapeDescAll( void );
688
690};
691
692GX_PHYSICS_NAMESPACE_END()
693
694#endif //PLATFORM_PHYSX_SUPPORT
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
#define DYNAMICS_DEFAULT_MAX_PERSISTENT_MANIFOLD_POOL_SIZE
物理演算の汎用的な最大プールサイズデフォルト値
Definition GxDynamics.h:17
#define DYNAMICS_COLLISION_MARGIN
物理演算のコリジョンマージン
Definition GxDynamics.h:15
#define DYNAMICS_DEFAULT_STACK_ALLOCATOR_SIZE
物理演算のスタックアロケーターサイズデフォルト値
Definition GxDynamics.h:16
#define DYNAMICS_DEFAULT_MAX_COLLISION_ALGORITHM_POOL_SIZE
物理演算のコリジョンアルゴリズム用最大プールサイズデフォルト値
Definition GxDynamics.h:18
#define DYNAMICS_COLLISION_SKIN_WIDTH
物理演算のコリジョンマージン
Definition GxDynamics.h:14
#define GX_PHYSICS_NAMESPACE_BEGIN()
ネームスペースマクロ
Definition GxPhysics.h:28
PRIMITIVE_FILL_MODE
塗りつぶしモード
Definition GxPrimitive.h:31
@ WIRE
ワイヤーフレーム
配列クラス
Definition GxArray.h:18
基底クラス
Definition GxBase.h:51
COLLISION_SHAPE
コリジョン形状
Definition GxCollision.h:38
Definition GxDynamics.h:996
GxDynamics 拘束クラス
Definition GxDynamics.h:783
virtual GX_FORCE_INLINE b32 createConstraintSpherical(b32, GxDynamics::GxObject *, GxDynamics::GxObject *, const GxVector3 &, const GxVector3 &, b32)
Definition GxDynamics.h:843
virtual GX_FORCE_INLINE b32 createConstraintRevolute(b32, GxDynamics::GxObject *, GxDynamics::GxObject *, const GxMatrixAffine &, const GxMatrixAffine &, b32)
Definition GxDynamics.h:847
virtual GX_FORCE_INLINE b32 createConstraintConeTwist(b32, GxDynamics::GxObject *, GxDynamics::GxObject *, const GxMatrixAffine &, const GxMatrixAffine &, const GxParamConeTwist &)
ConeTwistタイプの拘束作成
Definition GxDynamics.h:852
GxConstraint(void)
デフォルトコンストラクタ
Definition GxDynamics.cpp:1564
virtual GX_FORCE_INLINE b32 createConstraintFixed(b32, GxDynamics::GxObject *, GxDynamics::GxObject *, const GxVector3 &, const GxVector3 &)
固定タイプの拘束作成
Definition GxDynamics.h:855
virtual GX_FORCE_INLINE void setParameterRevolute(const f32, const f32)
回転軸タイプのパラメタを設定
Definition GxDynamics.h:861
~GxConstraint(void) override
デストラクタ
Definition GxDynamics.h:833
GxDynamics基本オブジェクトクラス
Definition GxDynamics.h:519
virtual GX_FORCE_INLINE void getLinearVelocity(GxVector3 &)
直線速度取得[m/sec]
Definition GxDynamics.h:643
virtual GX_FORCE_INLINE b32 createMultisphere(b32, GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, const GxShapeMultisphere &, const GxRigidBodyParam &, f32)
マルチ球の作成
Definition GxDynamics.h:602
virtual GX_FORCE_INLINE void setPosition(const GxVector3 &)
座標設定(速度等のパラメタが変更されるわけではないことに注意)
Definition GxDynamics.h:651
virtual GX_FORCE_INLINE void postUpdate(void)
更新後処理
Definition GxDynamics.h:581
virtual GX_FORCE_INLINE void setMatrix(const GxMatrixAffine &)
マトリクス設定
Definition GxDynamics.h:692
virtual GX_FORCE_INLINE b32 addCompoundBox(const GxVector3 &, const GxQuaternion &, const GxShapeBox &)
複合オブジェクトに追加:箱
Definition GxDynamics.h:619
virtual GX_FORCE_INLINE b32 endAddCompound(b32, const GxRigidBodyParam &)
複合オブジェクト追加終了
Definition GxDynamics.h:625
virtual GX_FORCE_INLINE void getQuaternion(GxQuaternion &)
姿勢取得
Definition GxDynamics.h:658
virtual GX_FORCE_INLINE b32 addCompoundConvex(const GxVector3 &, const GxQuaternion &, const GxVector3 *, u32)
複合オブジェクトに追加:凸形状
Definition GxDynamics.h:623
virtual GX_FORCE_INLINE void preUpdate(void)
更新前処理
Definition GxDynamics.h:579
virtual GX_FORCE_INLINE b32 addCompoundCapsule(const GxVector3 &, const GxQuaternion &, const GxShapeCapsule &)
複合オブジェクトに追加:カプセル
Definition GxDynamics.h:621
virtual GX_FORCE_INLINE b32 createBox(b32, GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, const GxShapeBox &, const GxRigidBodyParam &, f32)
箱の作成
Definition GxDynamics.h:596
virtual GX_FORCE_INLINE void applyForce(const GxVector3 &, const GxVector3 &)
力を加える(加速度に影響)
Definition GxDynamics.h:587
virtual GX_FORCE_INLINE void setDeactivationTime(f32)
Definition GxDynamics.h:669
virtual GX_FORCE_INLINE GxMatrixAffine getMatrix(void)
マトリクス取得
Definition GxDynamics.h:694
virtual GX_FORCE_INLINE b32 createCylinder(b32, GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, const GxShapeCylinder &, const GxRigidBodyParam &, f32)
円柱の作成
Definition GxDynamics.h:599
virtual GX_FORCE_INLINE void applyImpulse(const GxVector3 &, const GxVector3 &)
衝撃力を加える(速度に影響)
Definition GxDynamics.h:590
virtual GX_FORCE_INLINE b32 createCapsule(b32, GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, const GxShapeCapsule &, const GxRigidBodyParam &, f32)
カプセルの作成
Definition GxDynamics.h:605
virtual GX_FORCE_INLINE void initialize(b32, GxMatrixAffine *, const GxVector3 &, const GxQuaternion &)
オブジェクトの初期化
Definition GxDynamics.h:567
~GxObject(void) override
デストラクタ
Definition GxDynamics.cpp:1391
virtual GX_FORCE_INLINE void setAngularVelocity(const GxVector3 &)
回転速度設定[m/sec]
Definition GxDynamics.h:646
virtual GX_FORCE_INLINE b32 createConvexShape(b32, GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, const GxVector3 *, u32, const GxRigidBodyParam &, f32)
凸形状の作成
Definition GxDynamics.h:608
virtual GX_FORCE_INLINE void setFriction(f32)
摩擦係数の設定
Definition GxDynamics.h:676
virtual void setActive(b32 active)
アクティブ設定
Definition GxDynamics.cpp:1425
virtual GX_FORCE_INLINE void getPosition(GxVector3 &)
座標取得
Definition GxDynamics.h:653
virtual GX_FORCE_INLINE void setRestitution(f32)
反発係数の設定(有効値:0.f~1.f)
Definition GxDynamics.h:679
virtual GX_FORCE_INLINE b32 createCompoundObject(GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, f32)
複合形状の作成
Definition GxDynamics.h:611
s16 _group
グループ
Definition GxDynamics.h:774
virtual GX_FORCE_INLINE void setSleepingThresholds(f32, f32)
Definition GxDynamics.h:673
virtual GX_FORCE_INLINE void reset(void)
状態リセット
Definition GxDynamics.h:584
virtual GX_FORCE_INLINE b32 addCompoundSphere(const GxVector3 &, const GxShapeSphere &)
複合オブジェクトに追加:球
Definition GxDynamics.h:617
virtual GX_FORCE_INLINE b32 createMesh(b32, GxMatrixAffine *, const GxVector3 &, const GxQuaternion &, const GxShapeTrimesh &, f32=0.5f, b32=true, GxVector3 *=nullptr, GxVector3 *=nullptr, f32=DYNAMICS_COLLISION_MARGIN)
背景メッシュの作成
Definition GxDynamics.h:614
virtual GX_FORCE_INLINE b32 createSphere(b32, GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, const GxShapeSphere &, const GxRigidBodyParam &, f32)
球の作成
Definition GxDynamics.h:593
virtual GX_FORCE_INLINE void setLinearVelocity(const GxVector3 &)
直線速度設定[m/sec]
Definition GxDynamics.h:641
virtual GX_FORCE_INLINE void setQuaternion(const GxQuaternion &)
姿勢設定(速度等のパラメタが変更されるわけではないことに注意)
Definition GxDynamics.h:656
virtual GX_FORCE_INLINE void setDampingRatio(f32, f32)
Definition GxDynamics.h:664
GxObject(void)
デフォルトコンストラクタ
Definition GxDynamics.cpp:1370
GxDynamics 基本ワールドクラス
Definition GxDynamics.h:272
virtual GX_FORCE_INLINE void banObject(GxDynamics::GxObject *)
ワールドからオブジェクトを登録解除
Definition GxDynamics.h:344
virtual void setGravity(const GxVector3 &gravity=GxDynamics::GxWorld::DYNAMICS_GRAVITY)
重力を設定(ワールドに登録されている剛体全てに設定)
Definition GxDynamics.cpp:1037
~GxWorld(void) override
デストラクタ
Definition GxDynamics.cpp:850
virtual b32 checkRayClosestVsWorld(GxDynamics::GxRayResult *, const GxVector3 &, const GxVector3 &, GxConditionInformation *=nullptr)
Definition GxDynamics.h:433
GxWorld(void)
デフォルトコンストラクタ
Definition GxDynamics.cpp:830
virtual GX_FORCE_INLINE void detachObjectFromWorld(GxObject *)
ワールドからオブジェクトをデタッチ
Definition GxDynamics.h:394
virtual void update(void)
更新処理
Definition GxDynamics.h:335
virtual b32 checkRayClosestVsSingle(GxDynamics::GxRayResult *, GxObject *, const GxVector3 &, const GxVector3 &, GxConditionInformation *=nullptr)
指定オブジェクトとのレイチェック
Definition GxDynamics.h:436
virtual GX_FORCE_INLINE void registerObject(GxDynamics::GxObject *)
ワールドにオブジェクトを登録
Definition GxDynamics.h:342
virtual b32 alloc(u32 meshCount, const GxVector3 &worldAabbMin, const GxVector3 &worldAabbMax, u16 maxHandles, u32 stackAllocatorSize=DYNAMICS_DEFAULT_STACK_ALLOCATOR_SIZE, u32 maxPersistentManifoldPoolSize=DYNAMICS_DEFAULT_MAX_PERSISTENT_MANIFOLD_POOL_SIZE, u32 maxCollisionAlgorithmPoolSize=DYNAMICS_DEFAULT_MAX_COLLISION_ALGORITHM_POOL_SIZE)
ワールドのメモリ確保
Definition GxDynamics.cpp:880
virtual void free(void)
ワールドのメモリ解放
Definition GxDynamics.cpp:888
物理演算クラス
Definition GxDynamics.h:27
virtual GxConstraint * allocConstraint(void)
拘束クラスのメモリ確保
Definition GxDynamics.cpp:230
virtual GX_FORCE_INLINE GxObject * allocObject(void)
オブジェクトのメモリ確保
Definition GxDynamics.h:120
virtual GxObject * createConvexShape(b32 active, GxMatrixAffine *pMatrix, s32 jointIndex, const GxVector3 &offset, const GxQuaternion &rotateOffset, const GxVector3 *pVertex, u32 numVertex, const GxRigidBodyParam &rigidParam, f32 margin)
凸形状の作成
Definition GxDynamics.cpp:471
連結リストクラス
Definition GxList.h:18
箱形状クラス
Definition GxShape.h:333
カプセル形状クラス
Definition GxShape.h:707
円柱形状クラス
Definition GxShape.h:634
複合形状クラス
Definition GxDynamics.h:1100
マルチ球形状クラス
Definition GxShape.h:776
球形状クラス
Definition GxShape.h:240
三角メッシュ形状クラス
Definition GxShape.h:912
Definition GxColor.h:21
レイ判定情報
Definition GxDynamics.h:1042
GxRayResult(void)
コンストラクタ
Definition GxDynamics.h:1049
virtual ~GxRayResult(void)
デストラクタ
Definition GxDynamics.h:1057
アフィン変換行列(行優先)
Definition GxMatrix.h:330
クォータニオン
Definition GxQuaternion.h:19
Definition GxBase.h:24
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173