13GX_UTILITY_NAMESPACE_BEGIN()
47 virtual u32 initialize(
50 u32 unitProcessNumberSimulation = USBS_DEFAULT_UNIT_PROCESS_NUMBER_SIMULATION,
51 u32 unitListNumberSimulation = USBS_DEFAULT_UNIT_LIST_NUMBER_SIMULATION,
54 u32 unitProcessNumberCollision = USBS_DEFAULT_UNIT_PROCESS_NUMBER_SIMULATION-1,
55 u32 unitListNumberCollision = USBS_DEFAULT_UNIT_LIST_NUMBER_SIMULATION-1,
56 GxRtti& chainUnitRtti = GxUnitChainModel::GX_RTTI,
57 GxRtti& clothUnitRtti = GxUnitClothModel::GX_RTTI
64 u32 unitProcessNumberCollision = USBS_DEFAULT_UNIT_PROCESS_NUMBER_SIMULATION - 1,
65 u32 unitListNumberCollision = USBS_DEFAULT_UNIT_LIST_NUMBER_SIMULATION - 1
69 virtual void cleanup(
void);
78 void updateLocalMatrixFromWorldMatrix(
void);
80#if SOFTBODY_USE_REPLAY
84 GX_FORCE_INLINE
void startReplayingData(u32 replayNumber = 0,
b32 isRepeat =
false) {
if (_pUnitSimulation) _pUnitSimulation->startReplayingData(replayNumber, isRepeat); }
86 GX_FORCE_INLINE
void endReplayingData(
void) {
if (_pUnitSimulation) _pUnitSimulation->endReplayingData(); }
91 GX_FORCE_INLINE
void startWritingReplayData(u32 replayNumber = 0, u32 saveFrame = 0xFFFFFFFF) {
if (_pUnitSimulation) _pUnitSimulation->startWritingReplayData(replayNumber, saveFrame); }
93 GX_FORCE_INLINE
void endWritingReplayData(
void) {
if (_pUnitSimulation) _pUnitSimulation->endWritingReplayData(); }
106 constexpr u32
getChainCount(
void)
const {
return ( _pUnitSimulation ) ? ( _pUnitSimulation->getChainCount() ) : ( 0 ); }
114 constexpr u32
getClothCount(
void)
const {
return ( _pUnitSimulation ) ? ( _pUnitSimulation->getClothCount() ) : ( 0 ); }
122 GX_FORCE_INLINE
b32 isSimulation(
void)
const {
return _pUnitSimulation ? _pUnitSimulation->isSimulation() :
static_cast<b32>(
false); }
128 GX_FORCE_INLINE
void setIsSimulation(
b32 enable) {
if( _pUnitSimulation ) _pUnitSimulation->setIsSimulation( enable ); }
131 GX_FORCE_INLINE
b32 isInterpolateToMotion(
void)
const {
return _pUnitSimulation ? _pUnitSimulation->isInterpolateToMotion() :
static_cast<b32>(
false); }
137 constexpr f32
getInterpolateTime(
void)
const {
return ( _pUnitSimulation ) ? ( _pUnitSimulation->getInterpolateTime() ) : 0.0f; }
139 constexpr void setInterpolateTime(f32 time) {
if( _pUnitSimulation ) _pUnitSimulation->setInterpolateTime( time ); }
142 GX_FORCE_INLINE
b32 isMotionGravity(
void)
const {
return ( _pUnitSimulation ) ? ( _pUnitSimulation->isMotionGravity() ) :
static_cast<b32>(
false); }
144 GX_FORCE_INLINE
void setIsMotionGravity(
b32 enable) {
if( _pUnitSimulation ) _pUnitSimulation->setIsMotionGravity(enable); }
156 GX_FORCE_INLINE
b32 isUpdateAllMatrix(
void)
const {
return _pUnitSimulation ? _pUnitSimulation->isUpdateAllMatrix() :
static_cast<b32>(
false); }
168 GX_FORCE_INLINE
void setGravity(
const GxVector3& gravity) {
if( _pUnitSimulation ) _pUnitSimulation->setGravity(gravity); }
170 constexpr f32
getGravityForce(
void)
const {
return ( _pUnitSimulation ) ? ( _pUnitSimulation->getGravityForce() ) : ( 0.0f ); }
172 constexpr void setGravityForce(f32 force) {
if( _pUnitSimulation ) _pUnitSimulation->setGravityForce(force); }
181 GX_FORCE_INLINE
void setWind(
const GxVector3& wind) {
if( _pUnitSimulation ) _pUnitSimulation->setWind(wind); }
183 constexpr f32
getWindForce(
void)
const {
return ( _pUnitSimulation ) ? ( _pUnitSimulation->getWindForce() ) : ( 0.0f ); }
185 constexpr void setWindForce(f32 force) {
if( _pUnitSimulation ) _pUnitSimulation->setWindForce(force); }
189 GX_FORCE_INLINE
void setWindDirection(
const GxVector3& direction) {
if( _pUnitSimulation ) _pUnitSimulation->setWindDirection(direction); }
216 GX_FORCE_INLINE
b32 isDevelopRenderSimulation(
void)
const {
return _pUnitSimulation ? _pUnitSimulation->isDevelopRender() :
static_cast<b32>(
false); }
218 GX_FORCE_INLINE
void setIsDevelopRenderSimulation(
b32 is) {
if( _pUnitSimulation ) _pUnitSimulation->setDevelopRender( is ); }
220 GX_FORCE_INLINE
void setIsDevelopRenderMassPoint(
b32 is) {
if(_pUnitSimulation) _pUnitSimulation->setDevelopRenderMassPoint(is); }
222 GX_FORCE_INLINE
void setIsForceDevelopRender(
b32 is) {
if(_pUnitSimulation) _pUnitSimulation->setForceDevelopRender(is); }
225 constexpr u32 isDevelopRenderCollision(
void)
const {
return static_cast<s32
>(_pUnitCollision ? _pUnitCollision->getDevelopRenderMode() : GxUnitSoftbodyCollision::DEVELOP_RENDER_MODE::NONE); }
227 constexpr void setIsDevelopRenderCollision(GxUnitSoftbodyCollision::DEVELOP_RENDER_MODE mode) {
if( _pUnitCollision ) _pUnitCollision->setDevelopRenderMode(mode); }
230 constexpr void getPropertyEnable(
void*
const pValue) {
if( _pUnitSimulation ) *
static_cast<b32*
>(pValue) = _pUnitSimulation->isSimulation(); }
232 constexpr void setPropertyEnable(
const void*
const pValue) {
if( _pUnitSimulation ) _pUnitSimulation->setIsSimulation( *
static_cast<b32*
>(
const_cast<void*
>(pValue))); }
235 constexpr void getPropertyVisibleSimulation(
void*
const pValue) {
if( _pUnitSimulation ) *
static_cast<b32*
>(pValue) = _pUnitSimulation->isDevelopRender(); }
237 constexpr void setPropertyVisibleSimulation(
const void*
const pValue) {
if( _pUnitSimulation ) _pUnitSimulation->setDevelopRender( *
static_cast<b32*
>(
const_cast<void*
>(pValue))); }
240 constexpr void getPropertyVisibleCollision(
void*
const pValue) {
if( _pUnitCollision ) *
static_cast<b32*
>(pValue) = (GxUnitSoftbodyCollision::DEVELOP_RENDER_MODE::NONE==_pUnitCollision->getDevelopRenderMode()) ? false :
true; }
242 constexpr void setPropertyVisibleCollision(
const void*
const pValue) {
if( _pUnitCollision ) _pUnitCollision->setDevelopRenderMode( (0==*
static_cast<b32*
>(
const_cast<void*
>(pValue)))?GxUnitSoftbodyCollision::DEVELOP_RENDER_MODE::NONE:GxUnitSoftbodyCollision::DEVELOP_RENDER_MODE::WIRE ); }
261GX_UTILITY_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
virtual s32 addReference(void)
参照カウンタを加算
Definition GxBase.cpp:303
ユニットモジュール基礎クラス
Definition GxModUnitBase.h:22
モデル対応シミュレーション、コリジョン統合モジュールクラス
Definition GxModUnitSoftbody.h:18
constexpr void setWindForce(f32 force)
風力設定
Definition GxModUnitSoftbody.h:185
GX_FORCE_INLINE GxVector3 getWind(void) const
風取得
Definition GxModUnitSoftbody.h:179
constexpr f32 getInterpolateTime(void) const
補間時間の取得(シミュレーション→モーションの補間にかける時間)
Definition GxModUnitSoftbody.h:137
GxUnitSoftbodyCollision * _pUnitCollision
コリジョンユニット
Definition GxModUnitSoftbody.h:256
GX_FORCE_INLINE void setCollisionToSimulation(GxUnitSoftbodyCollision *pCollision)
コリジョンの設定
Definition GxModUnitSoftbody.h:201
GX_FORCE_INLINE void setIsSimulation(b32 enable)
有効/無効の設定
Definition GxModUnitSoftbody.h:128
constexpr GxUnitChainModel * getChainUnitFromID(u32 id) const
指定番号の鎖ユニット取得
Definition GxModUnitSoftbody.h:111
GX_FORCE_INLINE const GxVector3 & getGravityDirection(void) const
重力取得(方向のみ)
Definition GxModUnitSoftbody.h:174
GX_FORCE_INLINE b32 isSimulation(void) const
有効判定
Definition GxModUnitSoftbody.h:122
constexpr GxUnitSoftbodyCollision * getCollisionFromSimulation(void) const
コリジョンの取得
Definition GxModUnitSoftbody.h:195
GX_FORCE_INLINE void setGravityDirection(const GxVector3 &direction)
重力設定(方向のみ)
Definition GxModUnitSoftbody.h:176
GX_FORCE_INLINE void setCollision(GxUnitSoftbodyCollision *pCollision)
コリジョンの設定
Definition GxModUnitSoftbody.h:212
GX_FORCE_INLINE b32 isSetup(void) const
セットアップ済みか
Definition GxModUnitSoftbody.h:103
GX_FORCE_INLINE const GxVector3 & getWindDirection(void) const
風向取得
Definition GxModUnitSoftbody.h:187
constexpr void setGravityForce(f32 force)
重力設定(大きさのみ)
Definition GxModUnitSoftbody.h:172
GX_FORCE_INLINE void setIsMotionGravity(b32 enable)
重力を修正してモーションへ収束させるか設定
Definition GxModUnitSoftbody.h:144
GxUnitModelBase * _pParentModelCollision
コリジョン付与するモデル
Definition GxModUnitSoftbody.h:254
constexpr void forceDisableSimulation(void)
シミュレーションを強制終了してモーションへ(補間しない)
Definition GxModUnitSoftbody.h:134
GX_FORCE_INLINE GxVector3 getGravity(void) const
重力取得
Definition GxModUnitSoftbody.h:166
GX_FORCE_INLINE void setGravity(const GxVector3 &gravity)
重力設定
Definition GxModUnitSoftbody.h:168
constexpr GxUnitChainModel * getChainUnit(u32 index) const
指定番号の鎖ユニット取得
Definition GxModUnitSoftbody.h:109
GxUnitSoftbodySimulation * _pUnitSimulation
シミュレーションユニット
Definition GxModUnitSoftbody.h:255
constexpr GxUnitSoftbodyCollision * getCollision(void) const
コリジョンの取得
Definition GxModUnitSoftbody.h:207
GX_FORCE_INLINE void setWind(const GxVector3 &wind)
風設定
Definition GxModUnitSoftbody.h:181
GX_FORCE_INLINE b32 isInterpolateToMotion(void) const
シミュレーションからモーションへ補間している状態か判定
Definition GxModUnitSoftbody.h:131
constexpr void setInterpolateTime(f32 time)
補間時間の設定(シミュレーション→モーションの補間にかける時間)
Definition GxModUnitSoftbody.h:139
GxUnitModelBase * _pParentModelSimulation
シミュレートするモデル
Definition GxModUnitSoftbody.h:253
constexpr u32 getChainCount(void) const
鎖ユニットの個数取得
Definition GxModUnitSoftbody.h:106
constexpr f32 getWindForce(void) const
風力取得
Definition GxModUnitSoftbody.h:183
constexpr GxUnitClothModel * getClothUnitFromID(u32 id) const
指定番号の布ユニット取得
Definition GxModUnitSoftbody.h:119
constexpr GxUnitClothModel * getClothUnit(u32 index) const
指定番号の布ユニット取得
Definition GxModUnitSoftbody.h:117
GX_FORCE_INLINE void setIsUpdateAllMatrix(b32 is)
すべての行列を更新するフラグ設定
Definition GxModUnitSoftbody.h:163
GX_FORCE_INLINE void setWindDirection(const GxVector3 &direction)
風向設定
Definition GxModUnitSoftbody.h:189
GX_FORCE_INLINE b32 isUpdateAllMatrix(void) const
すべての行列を更新するフラグ判定
Definition GxModUnitSoftbody.h:156
constexpr f32 getGravityForce(void) const
重力取得(大きさのみ)
Definition GxModUnitSoftbody.h:170
constexpr u32 getClothCount(void) const
布ユニットの個数取得
Definition GxModUnitSoftbody.h:114
GX_FORCE_INLINE void setMotionGravity(b32 enable, f32 gravityForce, const GxVector3 &gravityDirection=-GxVector3::AXIS_Y)
重力を修正してモーションへ収束させるか設定 - パラメータ変更込み
Definition GxModUnitSoftbody.h:153
GX_FORCE_INLINE b32 isMotionGravity(void) const
重力を修正してモーションへ収束させているか判定
Definition GxModUnitSoftbody.h:142
b32 _isSetup
セットアップ済みフラグ
Definition GxModUnitSoftbody.h:251
モデル対応コリジョンリソースクラス
Definition GxResSoftbodyCollision.h:18
モデル対応物理シミュレーション統合リソースクラス
Definition GxResSoftbodySimulation.h:18
実行時型情報クラス
Definition GxRtti.h:154
モデルベース鎖クラス
Definition GxUnitChainModel.h:18
モデルベース布クラス
Definition GxUnitClothModel.h:18
モデル基礎クラス
Definition GxUnitModelBase.h:19
クロスシミュレーション用コリジョンクラス
Definition GxUnitSoftbodyCollision.h:18
モデル対応シミュレーション統合ユニットクラス
Definition GxUnitSoftbodySimulation.h:24
3次元ベクトル
Definition GxVector.h:245
static const GxVector3 ZERO
(0, 0, 0)
Definition GxVector.h:256
static const GxVector3 AXIS_Y
(0, 1, 0)
Definition GxVector.h:262
32bitブーリアン
Definition GxDefine.h:173