補正あたりクラス More...
#include <GxAdjustHit.h>
Classes | |
class | GxObject |
背景あたりオブジェクトクラス More... | |
class | GxWorld |
背景あたりワールドクラス More... | |
Protected Types | |
定義 | |
enum class | ADJUST_FLAG_INDEX { END , THROUGH_ONCE , THROUGH_ONCE_OLD } |
補正用フラグ More... | |
Protected Member Functions | |
初期化 | |
GxAdjustHit (void) | |
デフォルトコンストラクタ | |
~GxAdjustHit (void) override | |
デストラクタ | |
![]() | |
constexpr void | setWorldNull (void) |
登録ワールドの削除 | |
GX_FORCE_INLINE void | setOffsetAdjustVector (const GxVector3 &offset) |
押返しベクトルのオフセットを設定 | |
GX_FORCE_INLINE GxVector3 | getOffsetAdjustVector (void) |
押返しベクトルのオフセットを取得 | |
メンバ変数 | |
static const f32 | _distanceMin = 0.001f |
これ以上埋まっていないと補正しない | |
static const f32 | _againstRadian = DEGREE_TO_RADIAN(180.0f-10.0f) |
反対方向に押されているのかどうか | |
static f32 | _checkMargin = 0.01f |
判定用マージン | |
操作 | |
GxCollision::GxObject * | allocObject (void) override |
オブジェクトのメモリ確保 | |
GxObject * | getObject (u32 index) |
指定インデックスのオブジェクトを取得 | |
void | initializeActiveOn (void) override |
アクティブON時のパラメータ初期化 | |
void | initializeActiveOff (void) override |
アクティブOFF時のパラメータ初期化 | |
void | initializeUpdate (void) override |
更新前のパラメタ初期化 | |
GX_FORCE_INLINE void | setAdjustVector (const GxVector3 &vector) |
補正ベクトルの設定 | |
GxCollision::GxObject * | addObject (void) override |
オブジェクトの追加 | |
const GxVector3 | calculateNormalAdjustVector (void) |
通常補正ベクトルを返す | |
virtual void | initializeCheck (void) |
チェック時のパラメータ初期化(1フレーム1回) | |
virtual void | checkOldPosition (GxRayResult &result, const GxVector3 &moveVector, const GxVector3 &offset, GxCollision::GxConditionInformation *pCondition=nullptr) |
virtual const GxVector3 & | calculateAdjustVector (void) |
当たり判定後の補正処理 | |
GX_FORCE_INLINE const GxVector3 & | getAdjustVector (void) const |
補正ベクトルの取得 | |
GX_FORCE_INLINE b32 | isNeedAdjust (const GxVector3 &vector) |
補正が必要か判定 | |
GX_FORCE_INLINE b32 | isAdjustEnd (void) |
補正が終了したか判定 | |
GX_FORCE_INLINE void | setAdjustEnd (b32 value) |
補正が終了したか設定 | |
GX_FORCE_INLINE void | setIsAdjustOldPositionThroughOnce (b32 value) |
Pos~Old間のチェックを一度スルーする設定 | |
GX_FORCE_INLINE b32 | isAdjustOldPositionThroughOnce (void) const |
Pos~Old間のチェックを一度スルーする判定 | |
void | onAttributeAll (u32 attribute) |
すべてのオブジェクトの属性をONにする | |
void | offAttributeAll (u32 attribute) |
すべてのオブジェクトの属性をOFFにする | |
アクセサ | |
void | setObjectWeightAll (f32 weight) |
すべてのオブジェクトの重さ設定 | |
GX_FORCE_INLINE void | getPropertyCheckMargin (void *const pValue) |
当たり判定マージン取得 | |
constexpr void | setPropertyCheckMargin (const void *const pValue) |
当たり判定マージン設定 | |
static constexpr void | setCheckMargin (f32 margin) |
当たり判定用マージン設定 | |
static GX_FORCE_INLINE f32 | getCheckMargin (void) |
当たり判定用マージン取得 | |
Additional Inherited Members | |
![]() | |
enum class | COLLISION_SHAPE { ERROR_ = -1 , SPHERE = 0 , BOX , CYLINDER , MULTISPHERE , TRIMESH , PLANE , RAY , BEAM , CAPSULE , CONVEX , COMPOUND , WHEEL , MAX } |
コリジョン形状 More... | |
typedef void(GxClassBaseRoot::*) | COLLISION_CALLBACK(void) |
コールバック定義 | |
![]() | |
GxCollision (void) | |
デフォルトコンストラクタ | |
~GxCollision (void) override | |
デストラクタ | |
void | clearList (void) |
全オブジェクトをリストから削除 | |
virtual GxObject * | createSphere (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeSphere &sphere) |
球の作成 | |
virtual GxObject * | createBox (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeBox &box) |
ボックスの作成 | |
virtual GxObject * | createMultisphere (b32 active, u32 id, const GxMatrixAffine *pMatrix0, const GxVector3 &offset0, const GxMatrixAffine *pMatrix1, const GxVector3 &offset1, const GxShapeMultisphere &multisphere) |
マルチ球の作成 | |
virtual GxObject * | createCylinder (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeCylinder &cylinder) |
円柱の作成 | |
virtual GxObject * | createCapsule (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeCapsule &capsule) |
カプセルの作成 | |
virtual GxObject * | createMesh (u32 index, b32 active, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeTrimesh &trimesh, btTriangleIndexVertexArray *pVertex, b32 isCompress=true, GxVector3 *pAabbMin=nullptr, GxVector3 *pAabbMax=nullptr) |
背景メッシュの作成 | |
virtual GxObject * | createMesh (u32 index, b32 active, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeTrimesh &trimesh, btBvhTriangleMeshShape *pTrimeshShape) |
背景メッシュの作成 | |
GxObject * | getObject (u32 index) |
指定インデックスのオブジェクトを取得 | |
virtual void | deleteObject (GxObject *pObject) |
オブジェクトを削除する | |
virtual void | detachObject (GxObject *pObject) |
オブジェクトをリストから切り離す | |
virtual void | initialize (GxWorld *pRegistWorld, GxUnitBase *pUnit, GxCollision::COLLISION_CALLBACK pCallback, u32 threadIndex) |
初期設定(スレッドセーフ) | |
virtual void | prepareCheck (void) |
当たり判定チェック前準備 | |
virtual void | update (void) |
位置の更新 | |
constexpr GxWorld * | getWorld (void) const |
登録ワールドの取得 | |
constexpr GxUnitBase * | getUnit (void) const |
登録ユニットの取得 | |
virtual void | executePostCheckCallback (void) |
チェック後コールバック関数の呼び出し | |
GX_FORCE_INLINE void | setHitCallback (GxCollision::COLLISION_CALLBACK pCallback) |
コールバックを設定 | |
GX_FORCE_INLINE b32 | isActive (void) const |
アクティブ判定 | |
void | setActive (b32 active) |
アクティブ状態の設定 | |
constexpr u32 | getObjectCount (void) const |
登録オブジェクトの個数を取得 | |
GX_FORCE_INLINE void | getPropertyActive (void *const pValue) |
アクティブを取得 | |
GX_FORCE_INLINE void | setPropertyActive (const void *const pValue) |
アクティブを設定 | |
GX_FORCE_INLINE void | getPropertyObject (void *const pValue, u32 index) |
当たりオブジェクトを取得 | |
constexpr void | setPropertyObject (const void *const, u32) |
当たりオブジェクトを設定 | |
constexpr u32 | getPropertyObjectCount (void) const |
当たりオブジェクト数を取得 | |
constexpr void | setPropertyObjectCount (u32) |
当たりオブジェクト数を設定 | |
![]() | |
constexpr | GxClassBase (void) |
コンストラクタ | |
constexpr | GxClassBase (const GxClassBase &base) |
コピーコンストラクタ | |
~GxClassBase (void) override | |
デストラクタ | |
![]() | |
constexpr | GxClassBaseRoot (void) |
コンストラクタ | |
constexpr | GxClassBaseRoot (const GxClassBaseRoot &) |
コピーコンストラクタ | |
virtual | ~GxClassBaseRoot (void) |
デストラクタ | |
constexpr GxClassBaseRoot & | operator= (const GxClassBaseRoot &) |
代入演算子 | |
virtual GxRtti & | getRtti (void) const =0 |
Rttiの取得 | |
virtual GX_FORCE_INLINE const GxTypedObject * | getDefaultObject (void) |
デフォルトオブジェクトを取得 | |
GX_FORCE_INLINE b32 | isDefaultObject (void) |
デフォルトオブジェクト判定 | |
![]() | |
static GX_FORCE_INLINE GxRtti & | __getStaticRtti (void) |
Rttiの取得 | |
![]() | |
static const f32 | BULLET_MARGIN = CONVEX_DISTANCE_MARGIN |
Bulletのマージン値 | |
![]() | |
GxWorld * | _pRegisterWorld |
親ワールド | |
COLLISION_CALLBACK | _pCallback |
補正用コールバック | |
GxArrayClassBase | _listObject |
オブジェクトのリスト | |
補正あたりクラス
|
strongprotected |
|
overrideprotectedvirtual |
オブジェクトの追加
Reimplemented from GxCollision.
|
overrideprotectedvirtual |
オブジェクトのメモリ確保
Reimplemented from GxCollision.
Reimplemented in GxBackgroundHit, and GxObjectHit.
|
virtual |
当たり判定後の補正処理
Reimplemented in GxBackgroundHit.
|
protected |
通常補正ベクトルを返す
|
virtual |
現在位置と前回位置の貫通チェック
チェックは、形状から算出される最小半径の50%(以下チェック半径)の球を
『GxObjectが付いているマトリクス位置+offset』から『マトリクス位置+offset+moveVec』まで移動させたときの スウィープチェックで行う。
(→予定)ただし、最小半径が0.05[m]未満の場合はレイチェックで行う。
チェック半径の最小値は0.05[m]でクランプされる。
result | [out] チェック結果格納先 |
moveVector | [in] 移動距離 |
offset | [in] チェック開始位置をpShape->getCenterPos()からどれだけずらすか |
pCondition | [in] チェック条件詳細( default = nullptr ) |
Reimplemented in GxBackgroundHit.
|
protected |
指定インデックスのオブジェクトを取得
index | [in] 取得したいオブジェクトのインデックス |
|
overrideprotectedvirtual |
アクティブOFF時のパラメータ初期化
Reimplemented from GxCollision.
|
overrideprotectedvirtual |
アクティブON時のパラメータ初期化
Reimplemented from GxCollision.
|
overrideprotectedvirtual |
void GxAdjustHit::offAttributeAll | ( | u32 | attribute | ) |
すべてのオブジェクトの属性をOFFにする
attribute | [in] OFFしたい属性 |
void GxAdjustHit::onAttributeAll | ( | u32 | attribute | ) |
すべてのオブジェクトの属性をONにする
attribute | [in] ONしたい属性 |
|
protected |
すべてのオブジェクトの重さ設定
weight | [in] 設定したい重さ |
|
staticprotected |
反対方向に押されているのかどうか
反対方向に押されているのかどうかの角度
|
staticprotected |
判定用マージン
当たり判定用チェックマージン[m]