OROCHI
 
Loading...
Searching...
No Matches
GxAdjustHit Class Reference

補正あたりクラス More...

#include <GxAdjustHit.h>

Inheritance diagram for GxAdjustHit:
Collaboration diagram for GxAdjustHit:

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
 デストラクタ
 
- Protected Member Functions inherited from GxCollision
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::GxObjectallocObject (void) override
 オブジェクトのメモリ確保
 
GxObjectgetObject (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::GxObjectaddObject (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 GxVector3calculateAdjustVector (void)
 当たり判定後の補正処理
 
GX_FORCE_INLINE const GxVector3getAdjustVector (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

- Public Types inherited from GxCollision
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)
 コールバック定義
 
- Public Member Functions inherited from GxCollision
 GxCollision (void)
 デフォルトコンストラクタ
 
 ~GxCollision (void) override
 デストラクタ
 
void clearList (void)
 全オブジェクトをリストから削除
 
virtual GxObjectcreateSphere (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeSphere &sphere)
 球の作成
 
virtual GxObjectcreateBox (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeBox &box)
 ボックスの作成
 
virtual GxObjectcreateMultisphere (b32 active, u32 id, const GxMatrixAffine *pMatrix0, const GxVector3 &offset0, const GxMatrixAffine *pMatrix1, const GxVector3 &offset1, const GxShapeMultisphere &multisphere)
 マルチ球の作成
 
virtual GxObjectcreateCylinder (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeCylinder &cylinder)
 円柱の作成
 
virtual GxObjectcreateCapsule (b32 active, u32 id, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeCapsule &capsule)
 カプセルの作成
 
virtual GxObjectcreateMesh (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 GxObjectcreateMesh (u32 index, b32 active, const GxMatrixAffine *pMatrix, const GxVector3 &offset, const GxShapeTrimesh &trimesh, btBvhTriangleMeshShape *pTrimeshShape)
 背景メッシュの作成
 
GxObjectgetObject (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 GxWorldgetWorld (void) const
 登録ワールドの取得
 
constexpr GxUnitBasegetUnit (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)
 当たりオブジェクト数を設定
 
- Public Member Functions inherited from GxClassBase
constexpr GxClassBase (void)
 コンストラクタ
 
constexpr GxClassBase (const GxClassBase &base)
 コピーコンストラクタ
 
 ~GxClassBase (void) override
 デストラクタ
 
- Public Member Functions inherited from GxClassBaseRoot
constexpr GxClassBaseRoot (void)
 コンストラクタ
 
constexpr GxClassBaseRoot (const GxClassBaseRoot &)
 コピーコンストラクタ
 
virtual ~GxClassBaseRoot (void)
 デストラクタ
 
constexpr GxClassBaseRootoperator= (const GxClassBaseRoot &)
 代入演算子
 
virtual GxRttigetRtti (void) const =0
 Rttiの取得
 
virtual GX_FORCE_INLINE const GxTypedObjectgetDefaultObject (void)
 デフォルトオブジェクトを取得
 
GX_FORCE_INLINE b32 isDefaultObject (void)
 デフォルトオブジェクト判定
 
- Static Public Member Functions inherited from GxClassBaseRoot
static GX_FORCE_INLINE GxRtti__getStaticRtti (void)
 Rttiの取得
 
- Static Public Attributes inherited from GxCollision
static const f32 BULLET_MARGIN = CONVEX_DISTANCE_MARGIN
 Bulletのマージン値
 
- Protected Attributes inherited from GxCollision
GxWorld_pRegisterWorld
 親ワールド
 
COLLISION_CALLBACK _pCallback
 補正用コールバック
 
GxArrayClassBase _listObject
 オブジェクトのリスト
 

Detailed Description

補正あたりクラス

Member Enumeration Documentation

◆ ADJUST_FLAG_INDEX

enum class GxAdjustHit::ADJUST_FLAG_INDEX
strongprotected

補正用フラグ

Enumerator
END 

もう補正をしなくても良い

THROUGH_ONCE 

OLD~POSの補正を一度スルーする

THROUGH_ONCE_OLD 

前回、一度スルーするフラグが立っていたかどうか

Member Function Documentation

◆ addObject()

GxCollision::GxObject * GxAdjustHit::addObject ( void )
overrideprotectedvirtual

オブジェクトの追加

Returns
確保したオブジェクト

Reimplemented from GxCollision.

Here is the call graph for this function:

◆ allocObject()

GxCollision::GxObject * GxAdjustHit::allocObject ( void )
overrideprotectedvirtual

オブジェクトのメモリ確保

Returns
確保したオブジェクトのアドレス

Reimplemented from GxCollision.

Reimplemented in GxBackgroundHit, and GxObjectHit.

◆ calculateAdjustVector()

const GxVector3 & GxAdjustHit::calculateAdjustVector ( void )
virtual

当たり判定後の補正処理

Returns
補正ベクトル

Reimplemented in GxBackgroundHit.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculateNormalAdjustVector()

const GxVector3 GxAdjustHit::calculateNormalAdjustVector ( void )
protected

通常補正ベクトルを返す

Returns
補正ベクトル
Here is the call graph for this function:
Here is the caller graph for this function:

◆ checkOldPosition()

void GxAdjustHit::checkOldPosition ( GxRayResult & result,
const GxVector3 & moveVector,
const GxVector3 & offset,
GxCollision::GxConditionInformation * pCondition = nullptr )
virtual

現在位置と前回位置の貫通チェック
チェックは、形状から算出される最小半径の50%(以下チェック半径)の球を
『GxObjectが付いているマトリクス位置+offset』から『マトリクス位置+offset+moveVec』まで移動させたときの スウィープチェックで行う。
(→予定)ただし、最小半径が0.05[m]未満の場合はレイチェックで行う。
チェック半径の最小値は0.05[m]でクランプされる。

Parameters
result[out] チェック結果格納先
moveVector[in] 移動距離
offset[in] チェック開始位置をpShape->getCenterPos()からどれだけずらすか
pCondition[in] チェック条件詳細( default = nullptr )

Reimplemented in GxBackgroundHit.

◆ getObject()

GxAdjustHit::GxObject * GxAdjustHit::getObject ( u32 index)
protected

指定インデックスのオブジェクトを取得

Parameters
index[in] 取得したいオブジェクトのインデックス
Returns
オブジェクト

◆ initializeActiveOff()

void GxAdjustHit::initializeActiveOff ( void )
overrideprotectedvirtual

アクティブOFF時のパラメータ初期化

Reimplemented from GxCollision.

◆ initializeActiveOn()

void GxAdjustHit::initializeActiveOn ( void )
overrideprotectedvirtual

アクティブON時のパラメータ初期化

Reimplemented from GxCollision.

◆ initializeUpdate()

void GxAdjustHit::initializeUpdate ( void )
overrideprotectedvirtual

更新前のパラメタ初期化

Reimplemented from GxCollision.

Here is the call graph for this function:

◆ offAttributeAll()

void GxAdjustHit::offAttributeAll ( u32 attribute)

すべてのオブジェクトの属性をOFFにする

Parameters
attribute[in] OFFしたい属性

◆ onAttributeAll()

void GxAdjustHit::onAttributeAll ( u32 attribute)

すべてのオブジェクトの属性をONにする

Parameters
attribute[in] ONしたい属性

◆ setObjectWeightAll()

void GxAdjustHit::setObjectWeightAll ( f32 weight)
protected

すべてのオブジェクトの重さ設定

Parameters
weight[in] 設定したい重さ

Member Data Documentation

◆ _againstRadian

const f32 GxAdjustHit::_againstRadian = DEGREE_TO_RADIAN(180.0f-10.0f)
staticprotected

反対方向に押されているのかどうか

反対方向に押されているのかどうかの角度

◆ _checkMargin

f32 GxAdjustHit::_checkMargin = 0.01f
staticprotected

判定用マージン

当たり判定用チェックマージン[m]


The documentation for this class was generated from the following files: