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

ラグドールモジュールクラス More...

#include <GxModUnitRagdoll.h>

Inheritance diagram for GxModUnitRagdoll:
Collaboration diagram for GxModUnitRagdoll:

Classes

struct  GxRagdollBodyCondition
 剛体データ構造体 More...
 
struct  GxRagdollCondition
 全体構造体 More...
 
struct  GxRagdollJointCondition
 関節(コンストレイント)データ構造体 More...
 

Public Member Functions

定義
 GX_RTTI_CLASS_NAME (GxModUnitRagdoll, GxModUnitBase, "RAGDOLL MODULE")
 
 GX_OPERATOR_NEW_DELETE (GxAllocatorList::ALLOCATOR_TYPE::PHYSICS)
 
初期化
 GxModUnitRagdoll (void)
 デフォルトコンストラクタ
 
 ~GxModUnitRagdoll (void) override
 デストラクタ
 
- Public Member Functions inherited from GxModUnitBase
 GxModUnitBase (void)
 デフォルトコンストラクタ
 
 ~GxModUnitBase (void) override
 デストラクタ
 
- Public Member Functions inherited from GxModBase
 GxModBase (void)
 デフォルトコンストラクタ
 
virtual ~GxModBase (void)
 デストラクタ
 
- 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)
 デフォルトオブジェクト判定
 

Protected Attributes

メンバ変数
b32 _isActive
 状態変数
 
u32 _bodyCount
 剛体個数
 
u32 _jointCount
 関節個数
 
GxDynamics_pRagdoll
 物理モジュール
 
GxDynamics::GxWorld_pOwnerWorld
 所属する物理ワールド
 
GxDynamics::GxObject ** _ppBodyParts
 剛体ポインタ群
 
GxDynamics::GxConstraint ** _ppJointParts
 関節ポインタ群
 
GxMatrixAffine_pBodyMatrix
 剛体用保持行列群
 
u32 * _pJointIndex
 剛体指定関節インデックス群
 

操作

void initialize (GxDynamics::GxWorld *pWorld, GxDynamics::DYNAMICS_CALLBACK pCallback, GxRagdollCondition *pCondition)
 初期化
 
void initialize (GxDynamics::GxWorld *pWorld, GxDynamics::DYNAMICS_CALLBACK pCallback, const GxResRagdoll *pResRagdoll)
 初期化
 
void reset (void)
 リセット
 
virtual void cleanup (void)
 ラグドール終了
 
virtual void ragdollCallback (void)
 物理更新後の処理
 
void applyForce (const GxVector3 &force, const GxVector3 &pos, s32 index=0)
 ラグドール剛体に力を加える
 
void applyImpulse (const GxVector3 &impulse, const GxVector3 &position, s32 index=0)
 ラグドール剛体に衝撃を加える
 
virtual GX_FORCE_INLINE GxDynamicscreateDynamicsModule (void)
 剛体作成関数
 
static GxRagdollBodyConditioncreateBodyCondition (const GxResRagdoll *pResRagdoll)
 セットアップ用:リソースから剛体データ構造体をNEWする
 
static GxRagdollJointConditioncreateJointCondition (const GxResRagdoll *pResRagdoll)
 セットアップ用:リソースから関節データ構造体をNEWする
 

アクセサ

constexpr GxDynamicsgetRagdoll (void) const
 ラグドール本体取得
 
constexpr GxDynamics::GxWorldgetRagdollWorld (void) const
 ラグドール所属ワールド取得
 
GX_FORCE_INLINE b32 isActive (void) const
 アクティブフラグ判定
 
GX_FORCE_INLINE void setActive (b32 isActive)
 アクティブフラグ設定
 
virtual GX_FORCE_INLINE b32 isRagdollSleeping (void) const
 ラグドール剛体の状態判定
 
static GX_FORCE_INLINE const GxRttigetOwnerDerivedRtti (void)
 所持者に必要な継承RTTIを取得
 

Additional Inherited Members

- Static Public Member Functions inherited from GxClassBaseRoot
static GX_FORCE_INLINE GxRtti__getStaticRtti (void)
 Rttiの取得
 
- Protected Member Functions inherited from GxModUnitBase
virtual GX_FORCE_INLINE b32 setup (void)
 セットアップ(preAsyncUpdate前に初回のみ実行される)
 
virtual GX_FORCE_INLINE void preAsyncUpdate (void)
 並列更新(asyncUpdateの前に実行される)
 
virtual GX_FORCE_INLINE void asyncUpdate (void)
 並列更新
 
virtual GX_FORCE_INLINE void postAsyncUpdate (void)
 並列更新(asyncUpdateの後に実行される)
 
virtual GX_FORCE_INLINE void sequentialUpdate (void)
 逐次更新
 
virtual GX_FORCE_INLINE void forceAsyncUpdate (void)
 強制並列更新(pause中も実行)
 
virtual GX_FORCE_INLINE void render (void)
 描画
 
virtual GX_FORCE_INLINE b32 setRenderMaterial (GxRenderMaterial *)
 マテリアルの描画設定
 
GX_FORCE_INLINE GxUnitBasegetOwner (void) const
 所持者を取得
 
GX_FORCE_INLINE GxFlag32Index< UPDATE_TYPEgetUpdateEnable (void) const
 更新を呼ぶかを取得
 
GX_FORCE_INLINE void setUpdateEnable (UPDATE_TYPE updateType, b32 enable)
 更新を呼ぶかを設定
 
- Protected Member Functions inherited from GxModBase
constexpr GxClassBaseRootgetOwner (void) const
 所持者を取得
 
virtual GX_FORCE_INLINE void setOwner (GxClassBaseRoot *pOwner)
 所持者を設定
 
- Static Protected Member Functions inherited from GxModUnitBase
static const GxRttigetOwnerDerivedRtti (void)
 所持者に必要な継承RTTIを取得
 

Detailed Description

ラグドールモジュールクラス

Member Function Documentation

◆ applyForce()

void GxModUnitRagdoll::applyForce ( const GxVector3 & force,
const GxVector3 & position,
s32 index = 0 )

ラグドール剛体に力を加える

力は加速度に影響する
F = ma -> acceleration += force / mass

Parameters
force[in] 与える力
position[in] 力を与える位置(オブジェクト原点からの相対)
index[in] 力を与えるオブジェクト番号(デフォルト 0 )
Here is the call graph for this function:

◆ applyImpulse()

void GxModUnitRagdoll::applyImpulse ( const GxVector3 & impulse,
const GxVector3 & position,
s32 index = 0 )

ラグドール剛体に衝撃を加える

衝撃は速度に影響する
I = mv -> velocity += impulse / mass

Parameters
impulse[in] 与える衝撃
position[in] 衝撃を与える位置(オブジェクト原点からの相対)
index[in] 衝撃を与えるオブジェクト番号(デフォルト 0 )
Here is the call graph for this function:

◆ cleanup()

void GxModUnitRagdoll::cleanup ( void )
virtual

ラグドール終了

物理モジュールのクリアを呼び、確保したメモリを破棄する

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

◆ createBodyCondition()

GxModUnitRagdoll::GxRagdollBodyCondition * GxModUnitRagdoll::createBodyCondition ( const GxResRagdoll * pResRagdoll)
static

セットアップ用:リソースから剛体データ構造体をNEWする

構造体に変換するとき、角度データは DEGREE から RADIAN へ変更する(リソースのみ DEGREE 保持)

Parameters
pResRagdoll[in] ラグドール設定リソース
Returns
剛体データ構造体
Here is the call graph for this function:
Here is the caller graph for this function:

◆ createDynamicsModule()

virtual GX_FORCE_INLINE GxDynamics * GxModUnitRagdoll::createDynamicsModule ( void )
inlinevirtual

剛体作成関数

GxDynamics を継承して使用するプロジェクトは、ラグドールも継承してこの関数をオーバーライドする

Here is the caller graph for this function:

◆ createJointCondition()

GxModUnitRagdoll::GxRagdollJointCondition * GxModUnitRagdoll::createJointCondition ( const GxResRagdoll * pResRagdoll)
static

セットアップ用:リソースから関節データ構造体をNEWする

構造体に変換するとき、角度データは DEGREE から RADIAN へ変更する(リソースのみ DEGREE 保持)

Parameters
pResRagdoll[in] ラグドール設定リソース
Returns
剛体データ構造体
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialize() [1/2]

void GxModUnitRagdoll::initialize ( GxDynamics::GxWorld * pWorld,
GxDynamics::DYNAMICS_CALLBACK pCallbackFunction,
const GxResRagdoll * pResRagdoll )

初期化

引数にリソースを指定するバージョン
内部でリソースから構造体を作成し、構造体指定バージョンセットアップ関数を呼ぶ
構造体に変換するとき、角度データは DEGREE から RADIAN へ変更する(リソースのみ DEGREE 保持)

Parameters
pWorld[in] 所属する物理ワールド
pCallbackFunction[in] 物理モジュールに与えるコールバック関数
pResRagdoll[in] ラグドール設定リソース
Here is the call graph for this function:

◆ initialize() [2/2]

void GxModUnitRagdoll::initialize ( GxDynamics::GxWorld * pWorld,
GxDynamics::DYNAMICS_CALLBACK pCallbackFunction,
GxRagdollCondition * pCondition )

初期化

Parameters
pWorld[in] 所属する物理ワールド
pCallbackFunction[in] 物理モジュールに与えるコールバック関数
pCondition[in] ラグドール設定構造体
Here is the call graph for this function:
Here is the caller graph for this function:

◆ isRagdollSleeping()

virtual GX_FORCE_INLINE b32 GxModUnitRagdoll::isRagdollSleeping ( void ) const
inlinevirtual

ラグドール剛体の状態判定

ラグドールを構成するすべての剛体がスリープ状態のとき true を返す

◆ ragdollCallback()

void GxModUnitRagdoll::ragdollCallback ( void )
virtual

物理更新後の処理

物理挙動させた剛体をモデルへ還元するための関数
Ragdoll を保持する Unit の PostAsyncMove で呼ぶことを推奨

Here is the call graph for this function:

◆ reset()

void GxModUnitRagdoll::reset ( void )

リセット

現在のモデルの姿勢にあわせて剛体と関節をリセット
速度は直線速度、角速度ともに 0 に

Here is the call graph for this function:

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