13GX_UTILITY_NAMESPACE_BEGIN()
34 INTERPOLATION_TO_MOTION,
106 void cleanup(
void)
override;
115 void kill(
void)
override;
118 b32 setup(
void)
override;
120 void postAsyncUpdate(
void)
override;
144 constexpr void reset(
void) { _updateState = UCM_UPDATESTATE::RESET_TO_SIMULATION; }
172 virtual void resetup(
void);
174 b32 interpolateToMotion(
void);
177 virtual void updateModel(
void);
179 virtual void updateInterpolateModel(
void);
184 b32 isWarp(
void)
override;
186 void updateInitialize(
void)
override;
188 void interpolatePosition(f32 updateRatio, f32 updateRatioOld)
override;
190 void calculateExternalForce(
GxVector3& windDirect)
override;
192 void calculateHitBackForce(f32 updateRatio, f32 updateRatioOld)
override;
194 void updateConstraint(
void)
override;
198 virtual void updateCollisionAfterSimulation(
void);
203 void developRender(
void)
override;
216 constexpr s32
getJointIndex(u32 index)
const {
if(index < _pointCount)
return _pAdditionalData[index]._jointIndex;
else return -1; }
218 constexpr void setJointIndex(u32 index, s32 jointIndex) { _pAdditionalData[index]._jointIndex = jointIndex; }
226 constexpr f32
getRadius(u32 index)
const {
if( index < _pointCount )
return _pAdditionalData[index]._radius;
else return 0.0f; }
228 constexpr void setRadius(u32 index, f32 radius) { _pAdditionalData[index]._radius = radius; }
233 GX_FORCE_INLINE
void setTwist(u32 index,
const GxQuaternion& twist) { _pAdditionalData[index]._twist = twist; }
236 constexpr f32
getTwistLimit(u32 index)
const {
return _pAdditionalData[index]._twistLimit; }
238 constexpr void setTwistLimit(u32 index, f32 limit) { _pAdditionalData[index]._twistLimit = limit; }
241 GX_FORCE_INLINE
const GxVector3&
getNormal(u32 index)
const {
return _pAdditionalData[index]._normal; }
243 GX_FORCE_INLINE
void setNormal(u32 index,
const GxVector3& normal) { _pAdditionalData[index]._normal = normal; }
251 GX_FORCE_INLINE
b32 isHitBack(u32 index)
const {
return _pAdditionalData[index]._isHitBack; }
253 GX_FORCE_INLINE
void setIsHitBack(u32 index,
b32 isHitBack) { _pAdditionalData[index]._isHitBack = isHitBack; }
256 constexpr f32
getAngleLimit(u32 index)
const {
return _pAdditionalData[index]._angleLimit; }
258 constexpr void setAngleLimit(u32 index, f32 limit) { _pAdditionalData[index]._angleLimit = limit; }
266 constexpr f32
getBaseRatio(u32 index)
const {
return _pAdditionalData[index]._baseRatio; }
268 constexpr void setBaseRatio(u32 index, f32 baseRatio) { _pAdditionalData[index]._baseRatio = baseRatio; }
273 GX_FORCE_INLINE
void setWindRatio(u32 index,
GxVector3& windRatio) { _pAdditionalData[index]._windRatio = windRatio; }
276 constexpr u32
getID(
void)
const {
return _id; }
282 GX_FORCE_INLINE
void setSelectMassPointIndex(u32 index){ _selectJointIndex =
GxMath::getMin<u32>(_pointCount - 1, index); }
284 constexpr void getSelectJointIndex(
void*
const pValue) { *
static_cast<u32*
>(pValue) = _selectJointIndex; }
286 GX_FORCE_INLINE
void setSelectJointIndex(
const void*
const pValue){ _selectJointIndex =
GxMath::getMin<u32>(_pointCount - 1, *
static_cast<u32*
>(
const_cast<void*
>(pValue))); }
288 GX_FORCE_INLINE
b32 isForceDevelopRneder(
void)
const {
return _isForceDevelopRneder; }
290 GX_FORCE_INLINE
void setForceDevelopRneder(
b32 enable) { _isForceDevelopRneder = enable; }
317 u32 _selectJointIndex;
318 b32 _isForceDevelopRneder;
324GX_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:322
鎖データクラス
Definition GxResSoftbodySimulation.h:137
鎖基底ユニット
Definition GxUnitChainBase.h:18
モデルベース鎖クラス
Definition GxUnitChainModel.h:18
GX_FORCE_INLINE b32 isMotionGravity(void) const
重力を修正してモーションへ収束させる判定
Definition GxUnitChainModel.h:127
constexpr s32 getJointIndex(u32 index) const
モデル関節番号取得
Definition GxUnitChainModel.h:216
GX_FORCE_INLINE const GxVector3 & getAngleAxis(u32 index) const
回転角度基準軸取得
Definition GxUnitChainModel.h:261
constexpr void setAngleLimit(u32 index, f32 limit)
回転限界角度設定
Definition GxUnitChainModel.h:258
constexpr void setInterpolateTime(f32 time)
補間時間の設定(シミュレーション→モーションの補間にかける時間)
Definition GxUnitChainModel.h:168
const GxQuaternion & getOldQuaternion(u32 index) const
モーションへの補間のためのクォータニオンを取得
Definition GxUnitChainModel.h:221
constexpr u32 getID(void) const
ID取得
Definition GxUnitChainModel.h:276
b32 _isUpdateAllMatrix
UpdateWorldMatrix をするかフラグ
Definition GxUnitChainModel.h:309
GX_FORCE_INLINE b32 isInterpolateToMotion(void) const
シミュレーションからモーションへ補間している状態かどうか判定
Definition GxUnitChainModel.h:160
GX_FORCE_INLINE const GxAdditionalData * getAdditionalData(void) const
モデル基準鎖追加情報取得
Definition GxUnitChainModel.h:213
constexpr f32 getInterpolateTime(void) const
補間時間の取得(シミュレーション→モーションの補間にかける時間)
Definition GxUnitChainModel.h:166
constexpr f32 getTwistLimit(u32 index) const
ねじれ回転限界角度取得
Definition GxUnitChainModel.h:236
constexpr u32 getPointCount(void) const
質点数を取得
Definition GxUnitChainModel.h:278
constexpr f32 getAngleLimit(u32 index) const
回転限界角度取得
Definition GxUnitChainModel.h:256
f32 _interpolateInnerTime
補間時間 ( 0.0f < t < 1.0f )
Definition GxUnitChainModel.h:308
GX_FORCE_INLINE const GxVector3 & getHitBackDir(u32 index) const
ねじれ計算用当たり方向取得
Definition GxUnitChainModel.h:246
GX_FORCE_INLINE void setNormal(u32 index, const GxVector3 &normal)
追加情報による入力法線設定
Definition GxUnitChainModel.h:243
GX_FORCE_INLINE GxVector3 getWindRatio(u32 index) const
風を受ける割合を取得
Definition GxUnitChainModel.h:271
GX_FORCE_INLINE void setIsMotionGravity(b32 enable)
重力を修正してモーションへ収束させる設定
Definition GxUnitChainModel.h:129
GX_FORCE_INLINE void forceDisableChainSimulation(void)
シミュレーションを強制終了してモーションへ(補間しない)
Definition GxUnitChainModel.h:163
b32 _isUseMotionGravity
モーションへ収束するために重力方向を修正するかフラグ
Definition GxUnitChainModel.h:300
b32 _isChainSimulation
クロスシミュレーションするかフラグ
Definition GxUnitChainModel.h:305
b32 _isUseAdditionalData
追加データの有無フラグ
Definition GxUnitChainModel.h:299
GX_FORCE_INLINE void setAngleAxis(u32 index, const GxVector3 &axis)
回転角度基準軸設定
Definition GxUnitChainModel.h:263
UCM_UPDATESTATE _updateState
モデルの更新とモーションの切り替え状態
Definition GxUnitChainModel.h:306
const GxQuaternion & getTwist(u32 index) const
ねじれ回転取得
Definition GxUnitChainModel.h:231
GX_FORCE_INLINE b32 isHitBack(u32 index) const
参照しているコリジョンに当たったか判定
Definition GxUnitChainModel.h:251
GxVector3 _tailOffsetLocal
末端関節のオフセット ( Local Coodinate )
Definition GxUnitChainModel.h:313
GX_FORCE_INLINE void setIsHitBack(u32 index, b32 isHitBack)
参照しているコリジョンに当たったか設定
Definition GxUnitChainModel.h:253
GX_FORCE_INLINE void setTwist(u32 index, const GxQuaternion &twist)
ねじれ回転設定
Definition GxUnitChainModel.h:233
constexpr void setRadius(u32 index, f32 radius)
各質点の当たり半径を設定
Definition GxUnitChainModel.h:228
GX_FORCE_INLINE void setHitBackDir(u32 index, const GxVector3 &dir)
ねじれ計算用当たり方向設定
Definition GxUnitChainModel.h:248
GX_FORCE_INLINE const GxVector3 & getNormal(u32 index) const
追加情報による入力法線取得
Definition GxUnitChainModel.h:241
constexpr f32 getRadius(u32 index) const
各質点の当たり半径を取得
Definition GxUnitChainModel.h:226
constexpr f32 getBaseRatio(u32 index) const
基姿勢の割合を取得
Definition GxUnitChainModel.h:266
constexpr void reset(void)
外から呼べるリセット
Definition GxUnitChainModel.h:144
f32 _twistInterpolateSpeed
ねじれ補間速度 ( 0.0f < t < 1.0f )
Definition GxUnitChainModel.h:311
GxAdditionalData * _pAdditionalData
追加データ
Definition GxUnitChainModel.h:302
GX_FORCE_INLINE void setIsChainSimulation(b32 enable)
有効設定(シミュレーションとモーションを補間して遷移)
Definition GxUnitChainModel.h:153
constexpr void setBaseRatio(u32 index, f32 baseRatio)
基姿勢の割合を設定
Definition GxUnitChainModel.h:268
GX_FORCE_INLINE b32 isChainSimulation(void) const
有効判定
Definition GxUnitChainModel.h:147
GX_FORCE_INLINE void setWindRatio(u32 index, GxVector3 &windRatio)
風を受ける割合を設定
Definition GxUnitChainModel.h:273
UCM_UPDATESTATE
状態遷移管理
Definition GxUnitChainModel.h:31
GX_FORCE_INLINE void setOldQuaternion(u32 index, const GxQuaternion &quaternion)
モーションへの補間のためのクォータニオンを設定
Definition GxUnitChainModel.h:223
GxUnitModelBase * _pParentModel
変更するモデル
Definition GxUnitChainModel.h:303
constexpr void setTwistLimit(u32 index, f32 limit)
ねじれ回転限界角度設定
Definition GxUnitChainModel.h:238
f32 _interpolateTime
補間にかける時間
Definition GxUnitChainModel.h:307
constexpr void setJointIndex(u32 index, s32 jointIndex)
モデル関節番号設定
Definition GxUnitChainModel.h:218
GxVector3 _tailOffsetWorld
末端関節のオフセット ( World Coodinate )
Definition GxUnitChainModel.h:314
モデル基礎クラス
Definition GxUnitModelBase.h:19
クロスシミュレーション用コリジョンクラス : 基礎形状クラス
Definition GxUnitSoftbodyCollision.h:124
クォータニオン
Definition GxQuaternion.h:19
モデル基準鎖用追加情報クラス
Definition GxUnitChainModel.h:43
GxVector3 _windRatio
風を受ける割合
Definition GxUnitChainModel.h:88
f32 _angleLimit
回転限界角度
Definition GxUnitChainModel.h:86
GxVector3 _hitBackDirect
ねじれ計算用当たり方向
Definition GxUnitChainModel.h:83
f32 _radius
質点の当たり半径 // 一応ココでも保持
Definition GxUnitChainModel.h:79
s32 _jointIndex
準じるモデル関節の番号
Definition GxUnitChainModel.h:78
f32 _baseRatio
基姿勢の割合
Definition GxUnitChainModel.h:87
GxQuaternion _twist
ねじれ回転、前フレームの値を保持
Definition GxUnitChainModel.h:84
b32 _isHitBack
参照しているコリジョンにあたったかどうか
Definition GxUnitChainModel.h:81
GxVector3 _angleAxis
回転角度基準軸
Definition GxUnitChainModel.h:85
GxVector3 _normal
ねじれ計算用法線
Definition GxUnitChainModel.h:82
GxAdditionalData(void)
デフォルトコンストラクタ
Definition GxUnitChainModel.h:59
f32 _twistLimit
ねじれ最大角度
Definition GxUnitChainModel.h:80
GxQuaternion _quaternionOld
補間用
Definition GxUnitChainModel.h:77
3次元ベクトル
Definition GxVector.h:245
static const GxVector3 AXIS_Y
(0, 1, 0)
Definition GxVector.h:262
32bitブーリアン
Definition GxDefine.h:173