14#if PLATFORM_BULLET_SUPPORT
35 class GxConditionInformation;
47 GX_RTTI_STRUCT(GxParamRevolute);
59 , _disableCollision(false)
62 ~GxParamRevolute(
void){}
73 b32 _disableCollision;
85 GxDynamicsBullet(
void) {}
87 ~GxDynamicsBullet(
void)
override {}
149 void free(
void)
override;
152 void update(
void)
override;
165 void reset(
void)
override;
170 void setGravity(
const f32 gravityX,
const f32 gravityY,
const f32 gravityZ)
override;
191 static void customNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher,
const btDispatcherInfo& dispatcherInfo);
197 virtual GxRayCallback* createRayCallback(
const btVector3& rayFrom,
const btVector3& rayEnd, GxConditionInformation* pConditionInformation );
204 GX_FORCE_INLINE
b32 isGroupColide( u32 group1, u32 group2 )
const
206 if (group1 >= 32 || group2 >= 32)
210 return ((_groupCollide[group1]>>group2) & 0x1) ? true :
false;
214 b32 createBulletWorld(
void);
219 b32 deleteBulletWorld(
void);
222 void detachConstraintFromBullet(GxConstraint* pObject);
226 void setBtDebugDrawer(btIDebugDraw* pDrawer);
230 btDefaultVehicleRaycaster* createBtVehicleRaycaster(
void);
238 btCollisionConfiguration* _pBulletCollisionConfiguration;
239 btCollisionDispatcher* _pDispatcher;
240 btAxisSweep3* _pBroadphase;
241 btSequentialImpulseConstraintSolver* _pSolver;
242 btDiscreteDynamicsWorld* _pBulletWorld;
247 u32 _btStackAllocatorSize;
248 u32 _btMaxPersistentManifoldPoolSize;
249 u32 _btMaxCollisionAlgorithmPoolSize;
251 btOverlapFilterCallback* _btFilterCallback;
332 GX_FORCE_INLINE btRigidBody* getBtRigidBody(
void)
const {
return _pBtRigidBody; }
344 GX_FORCE_INLINE u32 getBtActivationState(
void)
const {
return _pBtRigidBody ? _pBtRigidBody->getActivationState() : 0; }
346 GX_FORCE_INLINE
void setBtActivationState(u32 state) {
if (_pBtRigidBody) _pBtRigidBody->setActivationState(state); }
398 GX_FORCE_INLINE
b32 isSleeping(
void)
const {
return false; }
400 GX_FORCE_INLINE
void setLineCheck(
const b32 isLineCheck ){ _isLineCheck = isLineCheck; }
425 void setGroup( u16 group );
427 u16 getGroup(
void );
429 constexpr s16 getMask(
void )
const {
return _mask; }
431 void setGroupMask( s16 group, s16 mask );
444 btCollisionShape* _pBtShape;
445 btRigidBody* _pBtRigidBody;
446 btTransform _oldTransform;
449 btTriangleIndexVertexArray* _pBtTriangleIndexVertexArray;
513 void developDraw(
void)
override;
523 constexpr btTypedConstraint* getBtConstraint(
void)
const {
return _pBtConstraint; }
536 btTypedConstraint* _pBtConstraint;
582struct GxDynamics::GxRayCallback :
public btCollisionWorld::ClosestRayResultCallback
590 GxRayCallback(
const btVector3& rayFromWorld,
const btVector3& rayToWorld, GxConditionInformation* pConditionInfo )
591 : ClosestRayResultCallback(rayFromWorld, rayToWorld)
592 , _pConditionInfo( pConditionInfo )
607 bool needsCollision(btBroadphaseProxy* pProxy)
const override;
612 btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,
bool normalInWorldSpace)
override;
620 GxConditionInformation* _pConditionInfo;
632struct GxDynamics::GxConvexCallback :
public btCollisionWorld::ClosestConvexResultCallback
640 GxConvexCallback(
const btVector3& rayFromWorld,
const btVector3& rayToWorld, GxConditionInformation* pConditionInfo )
641 : ClosestConvexResultCallback(rayFromWorld, rayToWorld)
642 , _pConditionInfo( pConditionInfo )
657 bool needsCollision(btBroadphaseProxy* proxy0)
const override;
662 btScalar addSingleResult(btCollisionWorld::LocalConvexResult& convexResult,
bool normalInWorldSpace)
override;
670 GxConditionInformation* _pConditionInfo;
698 void setResult(GxDynamics::GxRayCallback& resultCallback);
700 void setResult(GxDynamics::GxConvexCallback& resultCallback);
705GX_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_ALGORITHM_NUM
物理演算のアルゴリズム関数確保数
Definition GxDynamics.h:19
#define DYNAMICS_DEFAULT_STACK_ALLOCATOR_SIZE
物理演算のスタックアロケーターサイズデフォルト値
Definition GxDynamics.h:16
#define DYNAMICS_DEFAULT_MAX_COLLISION_ALGORITHM_POOL_SIZE
物理演算のコリジョンアルゴリズム用最大プールサイズデフォルト値
Definition GxDynamics.h:18
#define GX_PHYSICS_NAMESPACE_BEGIN()
ネームスペースマクロ
Definition GxPhysics.h:28
PRIMITIVE_FILL_MODE
塗りつぶしモード
Definition GxPrimitive.h:31
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 void setBreakParam(b32, f32, f32)
壊れパラメタ設定
Definition GxDynamics.h:915
virtual GX_FORCE_INLINE GxMatrixAffine getMatrix(void)
マトリクスを取得
Definition GxDynamics.h:905
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 getPosition(GxVector3 &)
座標取得
Definition GxDynamics.h:653
virtual GX_FORCE_INLINE b32 createCompoundObject(GxMatrixAffine *, s32, const GxVector3 &, const GxQuaternion &, f32)
複合形状の作成
Definition GxDynamics.h:611
virtual GX_FORCE_INLINE void setSleepingThresholds(f32, f32)
Definition GxDynamics.h:673
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 getAngularVelocity(GxVector3 &)
回転速度取得[m/sec]
Definition GxDynamics.h:648
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 registerConstraint(GxDynamics::GxConstraint *, b32)
ワールドに拘束クラスを登録
Definition GxDynamics.h:347
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 GX_FORCE_INLINE void reset(void)
ワールドの状態をリセットする
Definition GxDynamics.h:363
static const GxVector3 DYNAMICS_GRAVITY
重力
Definition GxDynamics.h:286
virtual GX_FORCE_INLINE void banConstraint(GxDynamics::GxConstraint *)
ワールドから拘束クラスを登録解除
Definition GxDynamics.h:349
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
箱形状クラス
Definition GxShape.h:333
カプセル形状クラス
Definition GxShape.h:707
円柱形状クラス
Definition GxShape.h:634
マルチ球形状クラス
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