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::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

- 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 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)
 当たりオブジェクト数を設定
 
- 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 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 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: