13GX_UTILITY_NAMESPACE_BEGIN()
35 static const f32 _gravityForceDefault;
37 static const f32 _airDampingDefault;
39 static const f32 _windForceDefault;
43 static const f32 _massDefault;
45 static const f32 _updateDeltaDefault;
47 static const f32 _hitbackForceDamperDefault;
49 static const f32 _warpLengthSquareDefault;
113 void cleanup(
void)
override;
122 void postAsyncUpdate(
void)
override;
124 void render(
void)
override;
132 virtual void updateForce(f32 updateRatio, f32 updateRatioOld) = 0;
142 virtual void developRender(
void);
179 constexpr f32
getMass(
void)
const {
return _mass; }
214 constexpr void setMoveStrength(u32 strength, u32 index) { _moveStrength[index] = strength; }
225 GX_FORCE_INLINE
void setExtraLoop(f32 time = 1.0f) { _isExtraLoop =
true; _extraLoopTime = time; }
259 GX_FORCE_INLINE
void setVisible(
b32 visible) { _isVisible = visible; }
261 GX_FORCE_INLINE
void setVisibleWind(
b32 visible) { _isVisibleWind = visible; }
263 GX_FORCE_INLINE
void setVisibleMassPoint(
b32 visible){ _isVisibleMassPoint = visible; }
265 GX_FORCE_INLINE
void setSelectedDrawMassPoint(
b32 selected){ _isSelectedDrawMassPoint = selected; }
288 u32 _moveStrength[2];
303 b32 _isUpdateconstraint;
307 b32 _isVisibleMassPoint;
308 b32 _isSelectedDrawMassPoint;
314GX_UTILITY_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
ユニット基礎クラス
Definition GxUnitBase.h:45
ソフトボディユニット基底クラス
Definition GxUnitSoftbodyBase.h:19
constexpr void setCollision(GxUnitSoftbodyCollision *pCollision)
コリジョンユニット設定
Definition GxUnitSoftbodyBase.h:161
constexpr void setUpdateDelta(f32 delta)
更新間隔設定
Definition GxUnitSoftbodyBase.h:204
constexpr void setAdjustGravityBlendRate(f32 blandRate)
ローカル重力方向と補整重力方向のブレンド率を設定
Definition GxUnitSoftbodyBase.h:245
u32 _pointCount
点の数
Definition GxUnitSoftbodyBase.h:278
constexpr f32 getAdjustGravityBlendRate(void) const
ローカル重力方向と補整重力方向のブレンド率を取得
Definition GxUnitSoftbodyBase.h:243
f32 _mass
全体重さ
Definition GxUnitSoftbodyBase.h:282
GX_FORCE_INLINE const GxVector3 & getWarpPosition(void) const
瞬間移動検出参照位置取得 : 自動更新、変更禁止
Definition GxUnitSoftbodyBase.h:222
virtual void updateForce(f32 updateRatio, f32 updateRatioOld)=0
各質点にかかる力の算出
constexpr f32 getUpdateDelta(void) const
更新間隔取得
Definition GxUnitSoftbodyBase.h:202
constexpr f32 getWindForce(void) const
風力取得
Definition GxUnitSoftbodyBase.h:187
GX_FORCE_INLINE void setGravityDirection(const GxVector3 &direction)
ローカル重力方向設定
Definition GxUnitSoftbodyBase.h:250
virtual b32 isWarp(void)=0
ワープの条件を記述、true が返るフレームではシミュレーションしない
f32 _warpLengthSquare
ワープとみなす閾値(長さの二乗値
Definition GxUnitSoftbodyBase.h:291
GX_FORCE_INLINE const GxVector3 & getGravityDirection(void) const
ローカル重力方向取得
Definition GxUnitSoftbodyBase.h:248
b32 _isExtraLoop
このフラグがオンのフレームは安定動作のために空ループする
Definition GxUnitSoftbodyBase.h:292
GX_FORCE_INLINE void setAdjustGravityDirection(const GxVector3 &direction)
補整重力方向設定
Definition GxUnitSoftbodyBase.h:255
GxUnitSoftbodyCollision * _pCollisionOld
1フレーム前のコリジョンデータ
Definition GxUnitSoftbodyBase.h:275
constexpr f32 getExtraLoopTime(void) const
空ループする時間を取得 [ sec ]
Definition GxUnitSoftbodyBase.h:233
virtual void updateConstraint(void)=0
制約を更新
b32 _isLocalWind
風向きを親ユニットのローカルで扱うかフラグ
Definition GxUnitSoftbodyBase.h:299
constexpr f32 getMass(void) const
質量取得 : 途中変更無効
Definition GxUnitSoftbodyBase.h:179
virtual void updateInitialize(void)=0
毎フレーム初期化
constexpr f32 getWarpLengthSquare(void) const
瞬間移動検出距離(の二乗)取得
Definition GxUnitSoftbodyBase.h:217
constexpr f32 getGravityForce(void) const
重力取得
Definition GxUnitSoftbodyBase.h:238
GxVector3 _gravityDirection
ローカル重力方向
Definition GxUnitSoftbodyBase.h:295
constexpr u32 getLineCount(void) const
シミュレート線数の取得
Definition GxUnitSoftbodyBase.h:176
virtual void * getCellPointer(void) const =0
質点データ取得
constexpr void setWarpLengthSquare(f32 length)
瞬間移動検出距離(の二乗)設定
Definition GxUnitSoftbodyBase.h:219
f32 _updateDelta
1 シミュレート時間
Definition GxUnitSoftbodyBase.h:287
constexpr u32 getPointCount(void) const
シミュレート点数の取得
Definition GxUnitSoftbodyBase.h:168
GxVector3 _warpPosition
ワープを検出するときの位置
Definition GxUnitSoftbodyBase.h:290
constexpr void setWindForce(f32 windForce)
風力設定
Definition GxUnitSoftbodyBase.h:189
constexpr GxUnitSoftbodyCollision * getCollision(void) const
コリジョンユニット取得
Definition GxUnitSoftbodyBase.h:159
virtual void calculateHitBackForce(f32 updateRatio, f32 updateRatioOld)=0
ヒットバックを更新
constexpr void setGravityForce(f32 force)
重力設定
Definition GxUnitSoftbodyBase.h:240
u32 _planeCount
面の数 // 三次元拡張時
Definition GxUnitSoftbodyBase.h:280
GX_FORCE_INLINE const GxVector3 & getAdjustGravityDirection(void) const
補整重力方向取得
Definition GxUnitSoftbodyBase.h:253
constexpr void setMoveStrength(u32 strength, u32 index)
平行移動伝播率の設定 [ 0 ~ 100 ]
Definition GxUnitSoftbodyBase.h:214
virtual void updateCell(void)=0
各質点情報を更新
GX_FORCE_INLINE const GxVector3 & getWindDirection(void) const
風向取得
Definition GxUnitSoftbodyBase.h:192
GX_FORCE_INLINE void setWindDirection(const GxVector3 &windDirection)
風向設定
Definition GxUnitSoftbodyBase.h:194
f32 _windForce
風の大きさ的な
Definition GxUnitSoftbodyBase.h:284
constexpr u32 getMoveStrength(u32 index) const
平行移動伝播率の取得 [ 0 ~ 100 ]
Definition GxUnitSoftbodyBase.h:207
f32 _extraLoopTime
空ループを回す時間 [ sec ]
Definition GxUnitSoftbodyBase.h:293
constexpr void setExtraLoopTime(f32 time)
空ループする時間を設定 [ sec ]
Definition GxUnitSoftbodyBase.h:235
f32 _gravityForce
重力大きさ
Definition GxUnitSoftbodyBase.h:294
b32 _isRandom
乱数を使用するかフラグ
Definition GxUnitSoftbodyBase.h:298
f32 _adjustGravityBlendRate
ローカル重力と補整重力のブレンド率(デフォルトは0.0fで、ローカル重力のみ利用)
Definition GxUnitSoftbodyBase.h:297
f32 _moveStrengthCoefficient
Y軸平行移動量への係数
Definition GxUnitSoftbodyBase.h:289
constexpr void setAirDamping(f32 damping)
空気抵抗設定
Definition GxUnitSoftbodyBase.h:184
GxUnitSoftbodyCollision * _pCollision
コリジョンデータ
Definition GxUnitSoftbodyBase.h:274
b32 _excludeTailJointSkin
末端以外のジョイントをシミュレーションするフラグ
Definition GxUnitSoftbodyBase.h:300
GxVector3 _windDirection
風の向き的な
Definition GxUnitSoftbodyBase.h:285
GX_FORCE_INLINE void setExtraLoop(f32 time=1.0f)
空ループ(シミュレーションが落ち着くまで待つ)設定 : 時間も一緒に決める(デフォルト 1秒)
Definition GxUnitSoftbodyBase.h:225
constexpr f32 getHitBackForceDamper(void) const
当たり抵抗定数取得
Definition GxUnitSoftbodyBase.h:197
constexpr void setHitBackForceDamper(f32 damper)
当たり抵抗定数設定
Definition GxUnitSoftbodyBase.h:199
u32 _lineCount
線の数
Definition GxUnitSoftbodyBase.h:279
GxVector3 _adjustGravityDirection
補整重力方向
Definition GxUnitSoftbodyBase.h:296
constexpr f32 getAirDamping(void) const
空気抵抗取得
Definition GxUnitSoftbodyBase.h:182
b32 * _pIsUpdateCollision
シミュレーション後にコリジョンデータを更新するかどうか
Definition GxUnitSoftbodyBase.h:276
GX_FORCE_INLINE b32 isUpdateExtraLoop(void) const
空ループする(シミュレーションが落ち着くまで待つ)かどうか取得
Definition GxUnitSoftbodyBase.h:228
GX_FORCE_INLINE void setIsUpdateExtraLoop(void)
空ループする(シミュレーションが落ち着くまで待つ)よう設定
Definition GxUnitSoftbodyBase.h:230
f32 _airDamping
空気抵抗定数
Definition GxUnitSoftbodyBase.h:283
f32 _hitBackForceDamper
当たり反発位置修正ダンパ [ 0.0f - 1.0f ]
Definition GxUnitSoftbodyBase.h:286
クロスシミュレーション用コリジョンクラス
Definition GxUnitSoftbodyCollision.h:18
質点クラス
Definition GxUnitSoftbodyBase.h:57
GxVector3 _velocity
速度
Definition GxUnitSoftbodyBase.h:90
f32 _radius
質点半径 - Radius
Definition GxUnitSoftbodyBase.h:95
f32 _mass
質量
Definition GxUnitSoftbodyBase.h:94
GxVector3 _positionCurrent
現在の位置
Definition GxUnitSoftbodyBase.h:88
GxVector3 _force
力
Definition GxUnitSoftbodyBase.h:91
GxCell(void)
デフォルトコンストラクタ
Definition GxUnitSoftbodyBase.h:73
GxVector3 _gravity
重力
Definition GxUnitSoftbodyBase.h:93
GxVector3 _normal
法線
Definition GxUnitSoftbodyBase.h:92
GxVector3 _positionOld
前の位置
Definition GxUnitSoftbodyBase.h:89
GxVector3 _position
位置
Definition GxUnitSoftbodyBase.h:87
b32 _isFixed
固定点かどうか
Definition GxUnitSoftbodyBase.h:97
GxVector3 _windRatio
風を受ける割合
Definition GxUnitSoftbodyBase.h:96
3次元ベクトル
Definition GxVector.h:245
GX_FORCE_INLINE GxVector3 getNormalizeEx(void) const
正規化ベクトルを取得(長さ0に対応)
Definition GxVector.inl:1494
32bitブーリアン
Definition GxDefine.h:173