14#if PLATFORM_PHYSX_SUPPORT
15#include "PxRigidDynamic.h"
16#include "PxPhysicsAPI.h"
31 GX_RTTI_STRUCT(GxShapeDescForPhysX3);
40 GxShapeDescForPhysX3(
void)
42 , _pConvexMeshData(nullptr)
43 , _pTriangleMeshData(nullptr)
63 PxConvexMesh* _pConvexMeshData;
65 PxTriangleMesh* _pTriangleMeshData;
94 typedef void (
GxClassBaseRoot::* DYNAMICS_HIT_CALLBACK)(GxObject* pHit);
103 GxDynamicsPhysX(
void) : _pHitCallback(nullptr) {}
105 ~GxDynamicsPhysX(
void)
override {}
121 return Super::createConvexShape(active, pMatrix, jointIndex, offset, rotateOffset, pVertex, numVertex, rigidParam, margin);
131 u32 numChassisVertex,
135 u32 chassisAgainstGroup,
137 const u32 numWheelVertex,
141 u32 wheelAgainstGroup,
150 GX_FORCE_INLINE
void setHitCallback(DYNAMICS_HIT_CALLBACK pCallback){ _pHitCallback = pCallback; }
152 GX_FORCE_INLINE DYNAMICS_HIT_CALLBACK getHitCallback(
void){
return _pHitCallback; }
160 DYNAMICS_HIT_CALLBACK _pHitCallback;
181 class GxContactModifyCallback :
public PxContactModifyCallback
185 virtual void onContactModify(PxContactModifyPair*
const pPairs, PxU32 count);
213 void free(
void)
override;
216 void update(
void)
override;
224 void setGravity(
const f32 gravityX,
const f32 gravityY,
const f32 gravityZ)
override;
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);
255 b32 createNxScene(
void );
260 b32 deleteNxScene(
void );
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 );
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]; }
295 GxContactModifyCallback _contactModifyCallback;
298 PxBatchQuery* _pWheelRaycastBatchQuery;
299 PxVehicle4WSceneQueryData<MAX_NUM_VEHICLE_CNT> _sceneQueryDataFowWheel;
300 PxVehicleDrivableSurfaceType PX_ALIGN(16, _vehicleDrivableSurfaceTypes[MAX_NUM_SURFACE_TYPES]);
324 ACTIVE_FLAG_STAY_HERE = (1UL << 5),
386 void reset(
void)
override;
400 PxConvexMesh** ppChassisConvexMesh,
402 PxVec3* pChassisDims);
407 PxConvexMesh** ppWheelConvexMesh,
412 b32 createVehicle(
b32 active,
417 u32 numChassisVertex,
421 u32 chassisAgainstGroup,
423 const u32 numWheelVertex,
427 u32 wheelAgainstGroup,
433 constexpr PxVehicle4W* getVehecle4W(
void)
const {
return _pVehecle4W; }
435 void setAccel(f32 accel);
437 void setBrake(f32 brake);
439 void setSteer(f32 steer);
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;
516 void setStayHere(
b32 active);
518 GX_FORCE_INLINE
b32 isStayHere(
void){
return _activeFlag.isFlag(ACTIVE_FLAG_STAY_HERE); }
526 constexpr void setGroup(u16 group) { _group = group; }
529 constexpr u16 getGroup(
void)
const {
return _group; }
537 PxCooking* _pNxCooking;
539 PxMaterial* _pNxMaterial;
540 PxTriangleMeshDesc* _pNxMeshDesc;
541 PxTriangleMesh* _pNxMesh;
542 PxConvexMeshDesc* _pNxConvexDesc;
543 PxConvexMesh* _pNxConvexMesh;
547 PxVehicle4W* _pVehecle4W;
612 constexpr PxJoint* getNxJoint(
void )
const {
return _pNxJoint; }
650 void setResult(
const PxRaycastHit& result, f32 hitFraction );
674 GxShapeDynamicsCompoundPhysX(
void) {}
676 ~GxShapeDynamicsCompoundPhysX(
void )
override;
685 void addShapeDesc( GxShapeDescForPhysX3* pDesc );
687 void deleteShapeDescAll(
void );
692GX_PHYSICS_NAMESPACE_END()
#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
配列クラス
Definition GxArray.h:18
基底クラス
Definition GxBase.h:51
COLLISION_SHAPE
コリジョン形状
Definition GxCollision.h:38
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 GxDynamics.h:1042
GxRayResult(void)
コンストラクタ
Definition GxDynamics.h:1049
virtual ~GxRayResult(void)
デストラクタ
Definition GxDynamics.h:1057
アフィン変換行列(行優先)
Definition GxMatrix.h:330
クォータニオン
Definition GxQuaternion.h:19
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173