15GX_UTILITY_NAMESPACE_BEGIN()
19class GxToolSoftbodyCollision : public GxToolResourceEditBase
37 TOOL_HEIGHT = 720 - TOOL_POSITION_Y * 2,
39 TOOLDATAFORM_SPLIT_Y = 140,
40 LINE_2_SPLIT_Y = 20 + 16 * 2,
41 LINE_4_SPLIT_Y = 20 + 16 * 4,
49 GTC_TOOLFLAG_RENDER = ( 1 << 0 ),
50 GTC_TOOLFLAG_RENDER_ONLY_SELECTED_COLLISION_DATA = ( 1 << 1 ),
51 GTC_TOOLFLAG_SAMEUNIT = ( 1 << 2 ),
53 GTC_TOOLFLAG_DEFAULT = ( GTC_TOOLFLAG_RENDER )
57 class GxFormCollisionData;
58 class GxUnitCollision;
59 class GxUnitSimulation;
68 GxToolSoftbodyCollision(
void);
71 b32 initialize(
void)
override;
73 void cleanup(
void)
override;
82 void update(
void)
override;
84 void setResource(
GxResBase* pResrouce)
override;
87 void createUnitCollision(
void);
89 void createUnitSimulation(
void);
92 void renderCollisionData(
void);
101 void setResourceModelCollision(
GxResModel* pResourceModelCollision);
103 void setResourceModelSimulation(
GxResModel* pResourceModelSimulation);
109 void setResourceSimulation(GxResSoftbodySimulationXml* pResourceSimulation);
112 virtual const GxRtti& getCreateModelRttiCollision(
void);
114 virtual const GxRtti& getCreateModelRttiSimulation(
void);
117 constexpr void getPropertyResourceModelCollision(
void*
const pValue) { *
static_cast<GxResModel**
>(pValue) = _pResourceModelCollision; }
119 GX_FORCE_INLINE
void setPropertyResourceModelCollision(
const void*
const pValue) {
GxResModel * pResourceModelCollision = *
static_cast<GxResModel**
>(
const_cast<void*
>(pValue)); setResourceModelCollision( pResourceModelCollision ); }
122 constexpr void getPropertyResourceMotionCollision(
void*
const pValue) { *
static_cast<GxResMotionPackage**
>(pValue) = _pResourceMotionCollision; }
124 GX_FORCE_INLINE
void setPropertyResourceMotionCollision(
const void*
const pValue) {
GxResMotionPackage * pResourceMotion = *
static_cast<GxResMotionPackage**
>(
const_cast<void*
>(pValue)); setResourceMotionCollision( pResourceMotion ); }
127 constexpr void getPropertyResourceModelSimulation(
void*
const pValue) { *
static_cast<GxResModel**
>(pValue) = _pResourceModelSimulation; }
129 GX_FORCE_INLINE
void setPropertyResourceModelSimulation(
const void*
const pValue) {
GxResModel * pResourceModelSimulation = *
static_cast<GxResModel**
>(
const_cast<void*
>(pValue)); setResourceModelSimulation( pResourceModelSimulation ); }
132 constexpr void getPropertyResourceMotionSimulation(
void*
const pValue) { *
static_cast<GxResMotionPackage**
>(pValue) = _pResourceMotionSimulation; }
134 GX_FORCE_INLINE
void setPropertyResourceMotionSimulation(
const void*
const pValue) {
GxResMotionPackage * pResourceMotion = *
static_cast<GxResMotionPackage**
>(
const_cast<void*
>(pValue)); setResourceMotionSimulation( pResourceMotion ); }
137 constexpr void getPropertyResourceSimulation(
void*
const pValue) { *
static_cast<GxResSoftbodySimulationXml**
>(pValue) = _pResourceSimulation; }
139 GX_FORCE_INLINE
void setPropertyResourceSimulation(
const void*
const pValue) { GxResSoftbodySimulationXml* pResource = *
static_cast<GxResSoftbodySimulationXml**
>(
const_cast<void*
>(pValue)); setResourceSimulation( pResource ); }
148 constexpr GxResSoftbodyCollisionXml* getResourceCollisionXml(
void) {
return static_cast<GxResSoftbodyCollisionXml*
>(getResource()); }
150 GX_FORCE_INLINE
const GxResSoftbodyCollisionXml* getResourceCollisionXml(
void)
const {
return static_cast<const GxResSoftbodyCollisionXml*
>(getResource()); }
153 constexpr GxResSoftbodySimulationXml* getResourceSimulation(
void)
const {
return _pResourceSimulation; }
156 constexpr GxUnitCollision* getUnitCollision(
void)
const {
return _pUnitCollision; }
158 constexpr GxUnitSimulation* getUnitSimulation(
void)
const {
return _pUnitSimulation; }
161 constexpr GxResSoftbodyCollisionXml::GxSoftbodyCollisionData* getCollisionDataCurrent(
void)
const {
return _pCollisionDataCurrent; }
163 constexpr void setCollisionDataCurrent(GxResSoftbodyCollisionXml::GxSoftbodyCollisionData* pCollisionData) { _pCollisionDataCurrent = pCollisionData; }
166 GX_FORCE_INLINE
b32 isToolDebugRendering(
void)
const {
return isDataRendering(); }
168 GX_FORCE_INLINE
void setToolDebugRendering(
b32 on) { ( _isToolDebugRendering = on) ? ( _toolFlag |= GTC_TOOLFLAG_RENDER ) : ( _toolFlag &= ~GTC_TOOLFLAG_RENDER ); }
171 GX_FORCE_INLINE
b32 isDataRendering(
void)
const {
return ( _toolFlag & GTC_TOOLFLAG_RENDER ) ? true :
false; }
173 GX_FORCE_INLINE
b32 isSelectedCollisionDataRendering(
void)
const {
return ( _toolFlag & GTC_TOOLFLAG_RENDER_ONLY_SELECTED_COLLISION_DATA ) ? true :
false; }
175 GX_FORCE_INLINE
b32 isSameUnit(
void)
const {
return ( _toolFlag & GTC_TOOLFLAG_SAMEUNIT ) ? true :
false; }
177 GX_FORCE_INLINE
void setSameUnit(
b32 on) { on ? ( _toolFlag |= GTC_TOOLFLAG_SAMEUNIT ) : ( _toolFlag &= ~GTC_TOOLFLAG_SAMEUNIT ); }
185 GxGuiSplitter* _pSplitter;
186 GxFormToolData* _pFormToolData;
187 GxFormCollisionData* _pFormCollisionData;
189 GxUnitCollision* _pUnitCollision;
190 GxUnitSimulation* _pUnitSimulation;
195 GxResSoftbodySimulationXml* _pResourceSimulation;
197 GxResSoftbodyCollisionXml::GxSoftbodyCollisionData* _pCollisionDataCurrent;
199 b32 _isToolDebugRendering;
208class GxToolSoftbodyCollision::GxFormToolData :
public GxGuiForm
216 GX_RTTI_CLASS(GxToolSoftbodyCollision::GxFormToolData, GxGuiForm)
227 GxFormToolData(
void) : _pSplitter(nullptr), _pFormToolData(nullptr), _pFormModelDataCollision(nullptr), _pFormModelDataSimulation(nullptr), _pFormButton(nullptr), _pTool(nullptr){}
229 GxFormToolData(GxToolSoftbodyCollision * pTool);
232 b32 initialize(
void)
override;
241 void update(
void)
override;
243 void onSize(
const GxSize& size)
override;
246 void createCollision(
void);
248 void deleteCollision(
void);
250 virtual void initializeCollision(GxResSoftbodyCollisionXml::GxSoftbodyCollisionData* pCollisionDatra);
253 void testCollision(
void);
256 void toggleModuleDebugRenderingCollision(
void);
258 void toggleModuleDebugRenderingSimulation(
void);
261 void toggleToolDebugRendering(
void);
264 void toggleToolDebugSameUnit(
void);
273 void setPropertyTableFormToolData(
void);
275 void setPropertyTableFormModelDataCollision(GxToolSoftbodyCollision::GxUnitCollision* pUnitSimulation);
277 void setPropertyTableFormModelDataSimulation(GxToolSoftbodyCollision::GxUnitSimulation* pUnitSimulation);
279 void setPropertyTableFormButton(
b32 isSameUnit);
282 constexpr GxResSoftbodyCollisionXml* getResourceCollisionXml(
void) {
return static_cast<GxResSoftbodyCollisionXml*
>(_pTool->getResource()); }
284 GX_FORCE_INLINE
const GxResSoftbodyCollisionXml* getResourceCollisionXml(
void)
const {
return static_cast<GxResSoftbodyCollisionXml*
>(_pTool->getResource()); }
287 constexpr GxResSoftbodySimulation* getResourceSimulation(
void)
const {
return _pTool->getResourceSimulation(); }
290 constexpr GxUnitCollision* getUnitCollision(
void)
const {
return _pTool->getUnitCollision(); }
292 constexpr GxUnitSimulation* getUnitSimulation(
void)
const {
return _pTool->getUnitSimulation(); }
295 constexpr GxResSoftbodyCollisionXml::GxSoftbodyCollisionData* getCollisionDataCurrent(
void)
const {
return _pTool->getCollisionDataCurrent(); }
297 GX_FORCE_INLINE
void setCollisionDataCurrent(GxResSoftbodyCollisionXml::GxSoftbodyCollisionData * pCollisionData) {
return _pTool->setCollisionDataCurrent( pCollisionData ); }
300 void addShareParameter(
void);
303 constexpr void getWindForce(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _windForce;}
305 constexpr void setWindForce(
const void*
const pValue) { _windForce = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
308 constexpr void getWindDirectionX(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _windDirectionX; }
310 constexpr void setWindDirectionX(
const void*
const pValue) { _windDirectionX = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
313 constexpr void getWindDirectionY(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _windDirectionY; }
315 constexpr void setWindDirectionY(
const void*
const pValue) { _windDirectionY = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
318 constexpr void getWindDirectionZ(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _windDirectionZ; }
320 constexpr void setWindDirectionZ(
const void*
const pValue) { _windDirectionZ = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
323 constexpr void getGravityForce(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _gravityForce; }
325 constexpr void setGravityForce(
const void*
const pValue) { _gravityForce = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
328 constexpr void getGravityDirectionX(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _gravityDirectionX; }
330 constexpr void setGravityDirectionX(
const void*
const pValue) { _gravityDirectionX = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
333 constexpr void getGravityDirectionY(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _gravityDirectionY;}
335 constexpr void setGravityDirectionY(
const void*
const pValue) { _gravityDirectionY = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
338 constexpr void getGravityDirectionZ(
void*
const pValue)
const { *
static_cast<f32*
>(pValue) = _gravityDirectionZ; }
340 constexpr void setGravityDirectionZ(
const void*
const pValue) { _gravityDirectionZ = *
static_cast<f32*
>(
const_cast<void*
>(pValue)); }
348 GxGuiSplitter* _pSplitter;
349 GxGuiFormProperty* _pFormToolData;
350 GxGuiFormProperty* _pFormModelDataCollision;
351 GxGuiFormProperty* _pFormModelDataSimulation;
352 GxGuiFormProperty* _pFormButton;
353 GxToolSoftbodyCollision* _pTool;
356 static f32 _windForce;
357 static f32 _windDirectionX;
358 static f32 _windDirectionY;
359 static f32 _windDirectionZ;
360 static f32 _gravityForce;
361 static f32 _gravityDirectionX;
362 static f32 _gravityDirectionY;
363 static f32 _gravityDirectionZ;
371class GxToolSoftbodyCollision::GxFormCollisionData :
public GxGuiForm
379 GX_RTTI_CLASS(GxToolSoftbodyCollision::GxFormCollisionData, GxGuiForm)
390 GxFormCollisionData(
void) : _pSplitter(nullptr), _pFormCollisionData(nullptr), _pTool(nullptr){}
392 GxFormCollisionData(GxToolSoftbodyCollision* pTool);
395 b32 initialize(
void)
override;
404 void update(
void)
override;
406 void onSize(
const GxSize& size)
override;
415 constexpr void getCollisionCount(
void*
const pValue){ *
static_cast<u32*
>(pValue) = getResourceCollisionXml()->getCollisionDataCount(); }
417 GX_FORCE_INLINE
void setCollisionCount(
const void*
const ) {}
420 constexpr void getCollisionIndex(
void*
const pValue){ *
static_cast<u32*
>(pValue) = _collisionIndex; }
426 void setCollisionIndex(
const void*
const pValue);
429 void setPropertyTableFormCollisionData(
void);
431 void setPropertyTableFormCollisionDataDetail(
GxPropertyTable& referenceOutputPropertyTable);
434 constexpr GxResSoftbodyCollisionXml* getResourceCollisionXml(
void){
return static_cast<GxResSoftbodyCollisionXml*
>(_pTool->getResource()); }
436 GX_FORCE_INLINE
const GxResSoftbodyCollisionXml* getResourceCollisionXml(
void)
const {
return static_cast<GxResSoftbodyCollisionXml*
>(_pTool->getResource()); }
439 constexpr GxResSoftbodySimulation* getResourceSimulation(
void)
const {
return _pTool->getResourceSimulation(); }
442 constexpr GxUnitCollision* getUnitCollision(
void)
const {
return _pTool->getUnitCollision(); }
444 constexpr GxUnitSimulation* getUnitSimulation(
void)
const {
return _pTool->getUnitSimulation(); }
447 constexpr u32 getCollisionCount(
void)
const {
return getResourceCollisionXml()->getCollisionDataCount(); }
450 constexpr u32 getCollisionIndex(
void)
const {
return _collisionIndex; }
452 constexpr void setCollisionIndex(u32 index) { _collisionIndex = index; }
460 constexpr GxResSoftbodyCollisionXml::GxSoftbodyCollisionData* getCollisionDataCurrent(
void)
const {
return _pTool->getCollisionDataCurrent(); }
462 constexpr void setCollisionDataCurrent(GxResSoftbodyCollisionXml::GxSoftbodyCollisionData* pCollisionData) {
return _pTool->setCollisionDataCurrent( pCollisionData ); }
470 GxGuiSplitter* _pSplitter;
471 GxGuiFormProperty* _pFormCollisionData;
472 GxToolSoftbodyCollision* _pTool;
482class GxToolSoftbodyCollision::GxUnitCollision :
public GxUnitModel
490 GX_RTTI_CLASS(GxToolSoftbodyCollision::GxUnitCollision,
GxUnitModel)
499 GxUnitCollision(
void);
501 ~GxUnitCollision(
void)
override;
513 virtual void setupSimulation(
GxResSoftbodySimulation* pResourceSimulation, GxResSoftbodyCollisionXml* pResourceCollision);
515 void setupCollision(GxResSoftbodyCollisionXml* pResourceXml);
517 void cleanupSimulation(
void);
537 constexpr void setModuleDebugRenderingCollision(u32 mode) {
getModule<GxModUnitSoftbody>()->setIsDevelopRenderCollision( (GxUnitSoftbodyCollision::DEVELOP_RENDER_MODE)(mode) ); }
540 constexpr GxMotionPlayer* getMotion(
void)
const {
return _pMotion; }
559class GxToolSoftbodyCollision::GxUnitSimulation :
public GxUnitModel
567 GX_RTTI_CLASS(GxToolSoftbodyCollision::GxUnitSimulation,
GxUnitModel)
576 GxUnitSimulation(
void);
578 ~GxUnitSimulation(
void)
override;
592 void cleanupSimulation(
void);
611 constexpr GxMotionPlayer* getMotion(
void)
const {
return _pMotion; }
627GX_UTILITY_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
void GxTypedObject
その他
Definition GxDefine.h:213
モーション再生クラス
Definition GxMotionPlayer.h:22
プロパティクラス
Definition GxProperty.h:48
プロパティテーブルクラス
Definition GxProperty.h:1641
リソース基底クラス
Definition GxResBase.h:23
モデルリソースクラス
Definition GxResModel.h:20
モーションパッケージリソース
Definition GxResMotionPackage.h:20
OBJECT_TYPE
オブジェクトタイプ
Definition GxResSoftbodyCollision.h:31
モデル対応物理シミュレーション統合リソースクラス
Definition GxResSoftbodySimulation.h:18
実行時型情報クラス
Definition GxRtti.h:154
T * getModule(void) const
モジュールを取得
Definition GxUnitBase.h:246
void asyncUpdate(void) override
並列更新
Definition GxUnitLocate.cpp:122
モデルクラス
Definition GxUnitModel.h:19
クロスシミュレーション用コリジョンクラス
Definition GxUnitSoftbodyCollision.h:18
サイズ
Definition GxStruct.h:730
32bitブーリアン
Definition GxDefine.h:173