63 GxObject* getObject(u32 index);
66 void initializeActiveOn(
void)
override;
69 void initializeActiveOff(
void)
override;
72 void initializeUpdate(
void)
override;
76 void initializeAdjustParameter(
void );
79 virtual void initializeCheck(
void);
90 virtual const GxVector3& calculateAdjustVector(
void );
102 GX_FORCE_INLINE
b32 isAdjustEnd(
void) {
return _adjustHitFlag.isFlag(ADJUST_FLAG_INDEX::END); }
104 GX_FORCE_INLINE
void setAdjustEnd(
b32 value) { _adjustHitFlag.setFlag(ADJUST_FLAG_INDEX::END, value); }
112 void onAttributeAll(u32 attribute);
114 void offAttributeAll(u32 attribute);
126 const GxVector3 calculateNormalAdjustVector(
void);
140 void setObjectWeightAll(f32 weight);
146 constexpr void setPropertyCheckMargin(
const void*
const pValue) { _checkMargin = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
227 void check(
void)
override;
306 GX_RTTI_STRUCT(GxPenetration);
308 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
317 GxPenetration(
void) : _depth(0.f) {}
333 static constexpr u32 HIT_TRIMESH_INDEX_INCREMENT = 10;
335 static constexpr u32 PENETRATION_MAX = 10;
367 void initializeAdjustParameter(
void );
396 void drawPenetration(
const GxColor& color,
const f32 ratio);
398 void addPenetration(
const GxVector3& hitPosition,
const f32 depth,
const GxVector3& normal);
412 constexpr void onAttribute(u32 attribute) { _attribute |= attribute; }
414 constexpr void offAttribute(u32 attribute) { _attribute &= ~attribute; }
429 constexpr void setWeight(f32 weight) { _weight = weight; }
433 GX_FORCE_INLINE
b32 isHitDevelop(
void)
const {
return _isHitDevelop; }
435 GX_FORCE_INLINE
void setIsHitDevelop(
b32 isHit) { _isHitDevelop = isHit; }
437 constexpr u32 getCountHitTrimeshIndex(
void)
const {
return _countHitTrimeshIndex; }
439 constexpr void setCountHitTrimeshIndex(u32 count) { _countHitTrimeshIndex = count; }
442 void getPropertyHitTrimeshIndex(
void* pValue, u32 index);
444 void setPropertyHitTrimeshIndex(
const void* pValue, u32 index);
446 u32 getPropertyHitTrimeshIndexCount(
void)
const;
448 void setPropertyHitTrimeshIndexCount(u32 count);
451 constexpr u32 getPenetrationIndex(
void)
const {
return _penetrationIndex; }
453 GX_FORCE_INLINE
const GxPenetration& getPenetration(u32 index)
const {
return _pPenetration[index]; }
469 s32* _pHitTrimeshIndex;
470 u32 _countHitTrimeshIndex;
471 u32 _maxHitTrimeshIndex;
473 GxPenetration* _pPenetration;
474 u32 _penetrationIndex;
480GX_PHYSICS_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
void GxTypedObject
その他
Definition GxDefine.h:213
#define GX_PHYSICS_NAMESPACE_BEGIN()
ネームスペースマクロ
Definition GxPhysics.h:28
PRIMITIVE_FILL_MODE
塗りつぶしモード
Definition GxPrimitive.h:31
背景あたりオブジェクトクラス
Definition GxAdjustHit.h:266
GX_FORCE_INLINE void setPlaneNormal(const GxVector3 &normal)
乗っている面の法線の設定
Definition GxAdjustHit.h:419
constexpr u32 getAttribute(void) const
属性取得
Definition GxAdjustHit.h:408
void initializeActiveOff(void) override
アクティブOFF時のパラメータ初期化
Definition GxAdjustHit.cpp:649
b32 isAdjustEnd(void)
補正が終了したか判定
Definition GxAdjustHit.cpp:739
GX_FORCE_INLINE const GxVector3 & getPlaneNormal(void) const
乗っている面の法線の取得
Definition GxAdjustHit.h:417
constexpr void offAttribute(u32 attribute)
属性無効化
Definition GxAdjustHit.h:414
b32 isNeedCheck(GxCollision::GxObject *pCollisionObject) override
お互いの当たり判定が必要か判定
Definition GxAdjustHit.cpp:715
GX_FORCE_INLINE const GxVector3 & getAdjustVector(void) const
補正方向の取得
Definition GxAdjustHit.h:422
constexpr void setAttribute(u32 attribute)
属性設定
Definition GxAdjustHit.h:410
constexpr void setWeight(f32 weight)
重さの設定
Definition GxAdjustHit.h:429
constexpr void onAttribute(u32 attribute)
属性有効化
Definition GxAdjustHit.h:412
ATTRIBUTE
Definition GxAdjustHit.h:291
@ ATTRIBUTE_POSITION_OLD_CHECK
OLD位置とPOS位置でラインチェックを行う
Definition GxAdjustHit.h:292
@ ATTRIBUTE_DISABLE_POSITION_OLD_CHECK_ONCE
一度だけOLD->POSチェックをしない(ツールでは設定できない)
Definition GxAdjustHit.h:293
GX_FORCE_INLINE void setAdjustVector(const GxVector3 &vector)
補正方向の設定
Definition GxAdjustHit.h:424
void initialize(b32 active, u32 id, const GxMatrixAffine *pMatrix0, const GxVector3 &offset0, const GxMatrixAffine *pMatrix1, const GxVector3 &offset1) override
初期化
Definition GxAdjustHit.cpp:628
void initializeUpdate(void) override
更新時のパラメータ初期化(1フレームに複数回呼ばれる可能性もある)
Definition GxAdjustHit.cpp:668
constexpr f32 getWeight(void) const
重さの取得
Definition GxAdjustHit.h:427
SHIFT
属性定義用シフト量定義
Definition GxAdjustHit.h:280
@ ADJUST_HIT_DUMMY_0
補正当たりダミー
@ DISABLE_POSITION_OLD_CHECK_ONCE
前回の座標チェック無効
@ POSITION_OLD_CHECK
前回の座標チェック
@ ADJUST_HIT_DUMMY_1
補正当たりダミー
~GxObject(void) override
デストラクタ
Definition GxAdjustHit.cpp:611
void checkOldPosition(GxRayResult &result, const GxVector3 &moveVector, const GxVector3 &offset, GxCollision::GxConditionInformation *pCondition)
現在位置と前回位置の貫通判定
Definition GxAdjustHit.cpp:757
GxObject(void)
デフォルトコンストラクタ
Definition GxAdjustHit.cpp:590
void initializeCheck(void)
チェック時のパラメータ初期化(1フレームに1回)
Definition GxAdjustHit.cpp:680
void initializeActiveOn(void) override
アクティブON時のパラメータ初期化
Definition GxAdjustHit.cpp:640
背景あたりワールドクラス
Definition GxAdjustHit.h:170
GxWorld(void)
デフォルトコンストラクタ
Definition GxAdjustHit.cpp:300
void calculateAdjustInformation(btPersistentManifold *pPersistentManifold)
ヒットしたオブジェクト同士の補正情報計算
Definition GxAdjustHit.cpp:415
virtual f32 calculateAdjustRate(GxObject *pObjectA, GxObject *pObjectB)
補正割合の計算
Definition GxAdjustHit.cpp:547
void check(void) override
Definition GxAdjustHit.cpp:318
void postBulletUpdate(void) override
Definition GxAdjustHit.cpp:360
void addAdjustInformation(GxObject *pObject, const f32 length, const GxVector3 &normal)
補正情報の追加
Definition GxAdjustHit.cpp:519
u32 _checkLoopMax
最大チェック回数(増やすとカドでのガタガタ等が減る。ただし重くなる。)
Definition GxAdjustHit.h:257
~GxWorld(void) override
デストラクタ
Definition GxAdjustHit.cpp:311
void executePostCheckCallback(void) override
チェック後コールバックを実行
Definition GxAdjustHit.cpp:386
補正あたりクラス
Definition GxAdjustHit.h:18
GX_FORCE_INLINE void setAdjustVector(const GxVector3 &vector)
補正ベクトルの設定
Definition GxAdjustHit.h:94
static const f32 _distanceMin
これ以上埋まっていないと補正しない
Definition GxAdjustHit.h:154
GX_FORCE_INLINE void getPropertyCheckMargin(void *const pValue)
当たり判定マージン取得
Definition GxAdjustHit.h:144
static const f32 _againstRadian
反対方向に押されているのかどうか
Definition GxAdjustHit.h:155
static constexpr void setCheckMargin(f32 margin)
当たり判定用マージン設定
Definition GxAdjustHit.h:135
GX_FORCE_INLINE b32 isAdjustEnd(void)
補正が終了したか判定
Definition GxAdjustHit.h:102
GX_FORCE_INLINE b32 isAdjustOldPositionThroughOnce(void) const
Pos~Old間のチェックを一度スルーする判定
Definition GxAdjustHit.h:109
GX_FORCE_INLINE const GxVector3 & getAdjustVector(void) const
補正ベクトルの取得
Definition GxAdjustHit.h:97
GX_FORCE_INLINE b32 isNeedAdjust(const GxVector3 &vector)
補正が必要か判定
Definition GxAdjustHit.h:99
GX_FORCE_INLINE void setIsAdjustOldPositionThroughOnce(b32 value)
Pos~Old間のチェックを一度スルーする設定
Definition GxAdjustHit.h:107
constexpr void setPropertyCheckMargin(const void *const pValue)
当たり判定マージン設定
Definition GxAdjustHit.h:146
GX_FORCE_INLINE void setAdjustEnd(b32 value)
補正が終了したか設定
Definition GxAdjustHit.h:104
static f32 _checkMargin
判定用マージン
Definition GxAdjustHit.h:156
ADJUST_FLAG_INDEX
補正用フラグ
Definition GxAdjustHit.h:35
static GX_FORCE_INLINE f32 getCheckMargin(void)
当たり判定用マージン取得
Definition GxAdjustHit.h:137
virtual const GxVector3 & calculateAdjustVector(void)
当たり判定後の補正処理
Definition GxAdjustHit.cpp:168
Collision基本オブジェクトクラス
Definition GxCollision.h:489
Collision基本ワールドクラス
Definition GxCollision.h:236
コリジョン基本クラス
Definition GxCollision.h:20
プロパティクラス
Definition GxProperty.h:48
実行時型情報クラス
Definition GxRtti.h:154
三角メッシュ形状クラス
Definition GxShape.h:912
補正情報構造体
Definition GxAdjustHit.h:183
btScalar _adjustLength
補正距離
Definition GxAdjustHit.h:199
GxAdjustInfo(void)
デフォルトコンストラクタ
Definition GxAdjustHit.h:190
btVector3 _normal
補正方向
Definition GxAdjustHit.h:198
static const GxColor WHITE
白
Definition GxColor.h:37
インデックス指定型フラグ
Definition GxStruct.h:1294
アフィン変換行列(行優先)
Definition GxMatrix.h:330
3次元ベクトル
Definition GxVector.h:245
GX_FORCE_INLINE f32 getLengthSquare(void) const
長さの2乗を取得
Definition GxVector.inl:1392
32bitブーリアン
Definition GxDefine.h:173