13GX_UTILITY_NAMESPACE_BEGIN()
34 INTERPOLATION_TO_MOTION,
106 void cleanup(
void)
override;
115 void kill(
void)
override;
122 b32 setup(
void)
override;
124 void postAsyncUpdate(
void)
override;
130 b32 interpolateToMotion(
void);
133 virtual void updateModel(
void);
135 virtual void updateInterpolateModel(
void);
140 b32 isWarp(
void)
override;
142 void updateInitialize(
void)
override;
144 void interpolatePosition(f32 updateRatio, f32 updateRatioOld)
override;
146 void calculateExternalForce(
GxVector3& windDirect)
override;
148 void calculateHitBackForce(f32 updateRatio, f32 updateRatioOld)
override;
150 void updateConstraint(
void)
override;
154 virtual void updateCollisionAfterSimulation(
void);
158 void developRender(
void)
override;
189 constexpr void reset(
void) { _updateState = UCM_UPDATESTATE::RESET_TO_SIMULATION; }
220 constexpr s32
getJointIndex(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._jointIndex; }
222 constexpr void setJointIndex(u32 pointIndex, u32 lineIndex, s32 no) { _ppAdditionalData[lineIndex][pointIndex]._jointIndex = no; }
225 GX_FORCE_INLINE
const GxQuaternion&
getOldQuaternion(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._quaternionOld; }
227 GX_FORCE_INLINE
void setOldQuaternion(u32 pointIndex, u32 lineIndex,
GxQuaternion & quaternion) { _ppAdditionalData[lineIndex][pointIndex]._quaternionOld = quaternion; }
230 constexpr f32
getRadius(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._radius; }
232 constexpr void setRadius(u32 pointIndex, u32 lineIndex, f32 radius) { _ppAdditionalData[lineIndex][pointIndex]._radius = radius; }
235 GX_FORCE_INLINE
const GxQuaternion&
getTwist(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._twist; }
237 GX_FORCE_INLINE
void setTwist(u32 pointIndex, u32 lineIndex,
const GxQuaternion & twist) { _ppAdditionalData[lineIndex][pointIndex]._twist = twist; }
240 constexpr f32
getTwistLimit(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._twistLimit; }
242 constexpr void setTwistLimit(u32 pointIndex, u32 lineIndex, f32 limit) { _ppAdditionalData[lineIndex][pointIndex]._twistLimit = limit; }
245 GX_FORCE_INLINE
const GxVector3&
getHitBackDir(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._hitBackDirect; }
247 GX_FORCE_INLINE
void setHitBackDir(u32 pointIndex, u32 lineIndex,
const GxVector3 & direct) { _ppAdditionalData[lineIndex][pointIndex]._hitBackDirect = direct; }
250 GX_FORCE_INLINE
b32 isHitBack(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._isHitBack; }
252 GX_FORCE_INLINE
void setIsHitBack(u32 pointIndex, u32 lineIndex,
b32 isHitBack) { _ppAdditionalData[lineIndex][pointIndex]._isHitBack = isHitBack; }
258 GX_FORCE_INLINE
void setAdditionalNormal(u32 pointIndex, u32 lineIndex,
const GxVector3& normal) { _ppAdditionalData[lineIndex][pointIndex]._normal = normal; }
261 constexpr f32
getAngleLimit(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._angleLimit; }
263 constexpr void setAngleLimit(u32 pointIndex, u32 lineIndex, f32 limit) { _ppAdditionalData[lineIndex][pointIndex]._angleLimit = limit; }
266 GX_FORCE_INLINE
const GxVector3&
getAngleAxis(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._angleAxis; }
268 GX_FORCE_INLINE
void setAngleAxis(u32 pointIndex, u32 lineIndex,
const GxVector3& axis) { _ppAdditionalData[lineIndex][pointIndex]._angleAxis = axis; }
271 constexpr f32
getBaseRatio(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._baseRatio; }
273 constexpr void setBaseRatio(u32 pointIndex, u32 lineIndex, f32 baseRatio) { _ppAdditionalData[lineIndex][pointIndex]._baseRatio = baseRatio; }
276 GX_FORCE_INLINE
GxVector3 getWindRatio(u32 pointIndex, u32 lineIndex)
const {
return _ppAdditionalData[lineIndex][pointIndex]._windRatio; }
278 GX_FORCE_INLINE
void setWindRatio(u32 pointIndex, u32 lineIndex,
GxVector3& windRatio) { _ppAdditionalData[lineIndex][pointIndex]._windRatio = windRatio; }
281 constexpr u32
getID(
void)
const {
return _id; }
290 GX_FORCE_INLINE
void setSelectMassPointIndex(u32 pointIndex, u32 lineIndex){ _selectPointIndex =
GxMath::getMin<u32>(_pointCount - 1, pointIndex); _selectLineIndex =
GxMath::getMin<u32>(_lineCount - 1, lineIndex); }
292 constexpr void getSelectPointIndex(
void*
const pValue) { *
static_cast<u32*
>(pValue) = _selectPointIndex; }
294 GX_FORCE_INLINE
void setSelectPointIndex(
const void*
const pValue){ _selectPointIndex =
GxMath::getMin<u32>(_pointCount - 1, *
static_cast<u32*
>(
const_cast<void*
>(pValue))); }
296 constexpr void getSelectLineIndex(
void*
const pValue) { *
static_cast<u32*
>(pValue) = _selectLineIndex; }
298 GX_FORCE_INLINE
void setSelectLineIndex(
const void*
const pValue){ _selectLineIndex =
GxMath::getMin<u32>(_lineCount - 1, *
static_cast<u32*
>(
const_cast<void*
>(pValue))); }
300 GX_FORCE_INLINE
b32 isForceDevelopRneder(
void)
const {
return _isForceDevelopRneder; }
302 GX_FORCE_INLINE
void setForceDevelopRneder(
b32 enable) { _isForceDevelopRneder = enable; }
329 u32 _selectPointIndex;
330 u32 _selectLineIndex;
331 b32 _isForceDevelopRneder;
337GX_UTILITY_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
static GX_FORCE_INLINE T getMin(const T value0, const T value1)
小さいほうを取得
Definition GxMath.h:172
布用追加データ(質点個別データ)
Definition GxResSoftbodySimulation.h:424
布データクラス
Definition GxResSoftbodySimulation.h:196
基準布クラス
Definition GxUnitClothBase.h:18
モデルベース布クラス
Definition GxUnitClothModel.h:18
constexpr f32 getRadius(u32 pointIndex, u32 lineIndex) const
各質点の当たり半径を取得
Definition GxUnitClothModel.h:230
GX_FORCE_INLINE const GxAdditionalData ** getAdditionalData(void) const
モデル基準鎖追加情報取得
Definition GxUnitClothModel.h:217
constexpr void setRadius(u32 pointIndex, u32 lineIndex, f32 radius)
各質点の当たり半径を設定
Definition GxUnitClothModel.h:232
constexpr void setTwistLimit(u32 pointIndex, u32 lineIndex, f32 limit)
ねじれ回転限界角度設定
Definition GxUnitClothModel.h:242
GX_FORCE_INLINE GxVector3 getWindRatio(u32 pointIndex, u32 lineIndex) const
風を受ける割合を取得
Definition GxUnitClothModel.h:276
constexpr u32 getLineCount(void) const
列数を取得
Definition GxUnitClothModel.h:286
GX_FORCE_INLINE b32 isHitBack(u32 pointIndex, u32 lineIndex) const
ねじれ計算用当たり方向取得
Definition GxUnitClothModel.h:250
constexpr void setAngleLimit(u32 pointIndex, u32 lineIndex, f32 limit)
回転限界角度設定
Definition GxUnitClothModel.h:263
GxAdditionalData ** _ppAdditionalData
追加データ
Definition GxUnitClothModel.h:314
constexpr void reset(void)
外から呼べるリセット
Definition GxUnitClothModel.h:189
b32 _isUseMotionGravity
モーションに収束させるために重力方向を修正するかフラグ
Definition GxUnitClothModel.h:312
GX_FORCE_INLINE void setAngleAxis(u32 pointIndex, u32 lineIndex, const GxVector3 &axis)
回転角度基準軸設定
Definition GxUnitClothModel.h:268
GX_FORCE_INLINE void setAdditionalNormal(u32 pointIndex, u32 lineIndex, const GxVector3 &normal)
追加情報法線設定
Definition GxUnitClothModel.h:258
constexpr void setJointIndex(u32 pointIndex, u32 lineIndex, s32 no)
モデル関節番号設定
Definition GxUnitClothModel.h:222
UCM_UPDATESTATE
状態遷移
Definition GxUnitClothModel.h:31
GxUnitModelBase * _pParentModel
変更するモデル
Definition GxUnitClothModel.h:315
GX_FORCE_INLINE void setIsMotionGravity(b32 enable)
重力を修正してモーションへ収束させるか設定
Definition GxUnitClothModel.h:173
constexpr void setInterpolateTime(f32 time)
補間時間の設定(シミュレーション→モーションの補間にかける時間)
Definition GxUnitClothModel.h:213
GX_FORCE_INLINE b32 isClothSimulation(void) const
有効/無効の取得
Definition GxUnitClothModel.h:192
constexpr f32 getInterpolateTime(void) const
補間時間の取得(シミュレーション→モーションの補間にかける時間)
Definition GxUnitClothModel.h:211
UCM_UPDATESTATE _updateState
モデルの更新とモーションの切り替え状態
Definition GxUnitClothModel.h:318
GX_FORCE_INLINE b32 isMotionGravity(void) const
重力を修正してモーションへ収束させるか取得
Definition GxUnitClothModel.h:171
constexpr f32 getTwistLimit(u32 pointIndex, u32 lineIndex) const
ねじれ回転限界角度取得
Definition GxUnitClothModel.h:240
GX_FORCE_INLINE const GxVector3 & getAdditionalNormal(u32 pointIndex, u32 lineIndex) const
追加情報法線取得
Definition GxUnitClothModel.h:256
GX_FORCE_INLINE void setIsClothSimulation(b32 enable)
有効/無効の設定(シミュレーションとモーションを補間して遷移)
Definition GxUnitClothModel.h:198
b32 _isUseAdditionalData
追加データの有無フラグ
Definition GxUnitClothModel.h:311
constexpr void setBaseRatio(u32 pointIndex, u32 lineIndex, f32 baseRatio)
基姿勢の割合を設定
Definition GxUnitClothModel.h:273
b32 _isClothSimulation
クロスシミュレーションするかフラグ
Definition GxUnitClothModel.h:317
GX_FORCE_INLINE void setHitBackDir(u32 pointIndex, u32 lineIndex, const GxVector3 &direct)
追加情報による入力法線設定
Definition GxUnitClothModel.h:247
constexpr u32 getID(void) const
ID取得
Definition GxUnitClothModel.h:281
GX_FORCE_INLINE void setWindRatio(u32 pointIndex, u32 lineIndex, GxVector3 &windRatio)
風を受ける割合を設定
Definition GxUnitClothModel.h:278
GX_FORCE_INLINE const GxVector3 & getAngleAxis(u32 pointIndex, u32 lineIndex) const
回転角度基準軸取得
Definition GxUnitClothModel.h:266
GX_FORCE_INLINE void forceDisableClothSimulation(void)
シミュレーションを強制終了してモーションへ(補間しない)
Definition GxUnitClothModel.h:208
constexpr s32 getJointIndex(u32 pointIndex, u32 lineIndex) const
モデル関節番号取得
Definition GxUnitClothModel.h:220
constexpr u32 getPointCount(void) const
質点数を取得
Definition GxUnitClothModel.h:284
GX_FORCE_INLINE void setIsHitBack(u32 pointIndex, u32 lineIndex, b32 isHitBack)
ねじれ計算用当たり方向設定
Definition GxUnitClothModel.h:252
f32 _interpolateTime
補間にかける時間
Definition GxUnitClothModel.h:319
GX_FORCE_INLINE void setOldQuaternion(u32 pointIndex, u32 lineIndex, GxQuaternion &quaternion)
モーションへの補間のためのクォータニオンを設定
Definition GxUnitClothModel.h:227
GxVector3 * _pTailOffsetLocal
末端ボーンのオフセット ( Local Coodinate )
Definition GxUnitClothModel.h:325
GX_FORCE_INLINE const GxVector3 & getHitBackDir(u32 pointIndex, u32 lineIndex) const
追加情報による入力法線取得
Definition GxUnitClothModel.h:245
f32 _interpolateInnerTime
補間時間 ( 0.0f < t < 1.0f )
Definition GxUnitClothModel.h:320
constexpr f32 getAngleLimit(u32 pointIndex, u32 lineIndex) const
回転限界角度取得
Definition GxUnitClothModel.h:261
GX_FORCE_INLINE const GxQuaternion & getTwist(u32 pointIndex, u32 lineIndex) const
ねじれ回転取得
Definition GxUnitClothModel.h:235
b32 _isUpdateAllMatrix
UpdateWorldMatrix をするかフラグ
Definition GxUnitClothModel.h:321
GxVector3 * _pTailOffsetWorld
末端ボーンのオフセット ( World Coodinate )
Definition GxUnitClothModel.h:326
constexpr f32 getBaseRatio(u32 pointIndex, u32 lineIndex) const
基姿勢の割合を取得
Definition GxUnitClothModel.h:271
GX_FORCE_INLINE b32 isInterpolateToMotion(void) const
シミュレーションからモーションへ補間している状態かどうか取得
Definition GxUnitClothModel.h:205
GX_FORCE_INLINE void setTwist(u32 pointIndex, u32 lineIndex, const GxQuaternion &twist)
ねじれ回転設定
Definition GxUnitClothModel.h:237
f32 _twistInterpolateSpeed
ねじれ補間速度 ( 0.0f < t < 1.0f )
Definition GxUnitClothModel.h:323
GX_FORCE_INLINE const GxQuaternion & getOldQuaternion(u32 pointIndex, u32 lineIndex) const
モーションへの補間のためのクォータニオンを取得
Definition GxUnitClothModel.h:225
モデル基礎クラス
Definition GxUnitModelBase.h:19
クロスシミュレーション用コリジョンクラス : 基礎形状クラス
Definition GxUnitSoftbodyCollision.h:124
クォータニオン
Definition GxQuaternion.h:19
モデル基準布セルクラス
Definition GxUnitClothModel.h:43
GxQuaternion _twist
ねじれ回転、前フレームの値を保持
Definition GxUnitClothModel.h:86
GxVector3 _windRatio
風を受ける割合
Definition GxUnitClothModel.h:90
GxAdditionalData(void)
デフォルトコンストラクタ
Definition GxUnitClothModel.h:59
GxVector3 _angleAxis
回転角度基準軸
Definition GxUnitClothModel.h:87
GX_RTTI_STRUCT(GxUnitClothModel::GxAdditionalData)
RTTI宣言
f32 _radius
質点の当たり半径 // 一応ココでも保持
Definition GxUnitClothModel.h:81
f32 _twistLimit
ねじれ最大角度
Definition GxUnitClothModel.h:82
GxVector3 _hitBackDirect
ねじれ補間用当たり方向
Definition GxUnitClothModel.h:85
GxVector3 _normal
ねじれ用法線
Definition GxUnitClothModel.h:84
GxQuaternion _quaternionOld
布に必要なパラメータを追加
Definition GxUnitClothModel.h:79
f32 _angleLimit
回転角度限界
Definition GxUnitClothModel.h:88
s32 _jointIndex
準じるモデル関節の番号
Definition GxUnitClothModel.h:80
f32 _baseRatio
基姿勢の割合
Definition GxUnitClothModel.h:89
b32 _isEnableLink
列間の質点で繋がり(拘束)があるかどうか
Definition GxUnitClothModel.h:91
b32 _isHitBack
参照しているコリジョンに当たったかどうか
Definition GxUnitClothModel.h:83
3次元ベクトル
Definition GxVector.h:245
static const GxVector3 AXIS_Y
(0, 1, 0)
Definition GxVector.h:262
32bitブーリアン
Definition GxDefine.h:173