14GX_CORE_NAMESPACE_BEGIN()
18class GxGuiFormProperty;
35class GxToolUnitManager : public GxToolBase
48 static constexpr u32 LIST_GUI_WIDTH = 80;
50 static constexpr u32 LIST_GUI_BUTTON_HEIGHT = 22;
52 static constexpr u32 UNIT_GUI_HEIGHT = GxSysTool::FONT_HALF_SIZE_HEIGHT + 5;
57 class GxGuiFormListBase;
58 class GxGuiFormListProcess;
59 class GxGuiFormListKind;
63 static constexpr u32 FORM_WIDTH = 800;
65 static constexpr u32 FORM_HEIGHT = 350;
67 static constexpr u32 FORM_UNIT_TREE_WIDTH = 300;
69 static constexpr u32 FORM_UNIT_LIST_WIDTH = 500;
78 GxToolUnitManager(
void );
81 b32 initialize(
void )
override;
90 GX_FORCE_INLINE
void killAllUnit(
void ) { getGxSysUnit()->
killAll(); }
93 void createMenuTableFormBody(
GxPropertyTable& table, GxGuiFormBody* pCaller )
const;
97 void onKeyDown( GxKeyboard::KEY key )
override;
103 virtual GxGuiFormListProcess* allocateGuiFormListProcess(
void );
105 virtual GxGuiFormListKind* allocateGuiFormListKind(
void );
109 virtual void createMenuTableFormBodyAddUnit(
GxPropertyTable& table, GxGuiFormBody* pCaller )
const;
111 virtual void createMenuTableFormBodyManipulation(
GxPropertyTable& table, GxGuiFormBody* pCaller )
const;
113 virtual void createMenuTableFormBodyChangeState(
GxPropertyTable& table, GxGuiFormBody* pCaller )
const;
115 virtual void createMenuTableFormBodyOutput(
GxPropertyTable& table, GxGuiFormBody* pCaller )
const;
117 GX_FORCE_INLINE
virtual void createMenuTableFormBodyExtra(
GxPropertyTable& , GxGuiFormBody* )
const {}
120 void onViewMaxExpand(
void)
override;
122 virtual void onViewMiddleExpand(
void);
124 void onViewMinExpand(
void)
override;
128 virtual void killSelectedUnit(
void);
134 virtual void toggleSelectedUnitRender(
void);
143 constexpr GxGuiTab* getGuiTab(
void )
const {
return _pTab; }
145 constexpr GxGuiFormUnitTree* getGuiTreeFormViewer(
void )
const {
return _pTree; }
147 GX_FORCE_INLINE
b32 isEnableFilter(
void)
const {
return _enableFilter; }
155 GX_FORCE_INLINE
void getFilterString(GX_CSTR* pString){ *pString = _filterString.getString(); }
158 void setFilterString(GX_CSTR* pString);
169 GxGuiFormListProcess* _pFormProcess;
170 GxGuiFormListKind* _pFormKind;
173 GxGuiFormUnitTree* _pTree;
174 GxGuiSplitter* _pSplitterMain;
197class GxToolUnitManager::GxGuiFormListBase :
public GxGuiForm
205 GX_RTTI_ABSTRACT_CLASS( GxToolUnitManager::GxGuiFormListBase, GxGuiForm )
224 GxGuiFormListBase(
void )
225 : _pSplitter(nullptr)
230 , _pUnitLastClicked(0)
233 GxGuiFormListBase( u32 listCount, GxToolUnitManager* pTool );
236 b32 initialize(
void )
override;
239 void cleanup(
void )
override;
248 virtual void createUnit( u32 listNumber,
const GxRtti& rtti ) = 0;
254 GX_FORCE_INLINE
virtual void changeList(
GxUnitBase* , u32 ) {}
257 void createBodyPopupMenu(
const GxPoint2& position,
const u32 listNumber );
260 virtual GxGuiUnitBox* allocateGuiUnitBox( GxGuiFormBody* pFormBody );
262 virtual GxGuiName* allocateGuiName( u32 index, GxToolUnitManager* pTool );
265 virtual void addList( u32 index );
267 virtual void deleteList( u32 index );
270 void refreshListNumber(
void );
274 void postUpdate(
void)
override;
276 void onSize(
const GxSize& size)
override;
279 void postDraw(
void)
override;
282 void onMouseLeave(
void)
override;
291 u32 getListCount(
void );
293 GxGuiFormBody* getFormBody(u32 index);
295 GX_FORCE_INLINE
void setIsChangingList(
b32 isChanging ){ _isChangingList = isChanging; }
297 GX_FORCE_INLINE
b32 isChangingList(
void )
const {
return _isChangingList; }
299 GX_FORCE_INLINE
void setIsAbleToChangeList(
b32 isAble ){ _isAbleToChangeList = isAble; }
301 GX_FORCE_INLINE
b32 isAbleToChangeList(
void )
const {
return _isAbleToChangeList; }
303 GX_FORCE_INLINE
void setButtonDragOffset(
const GxPoint2& offset ){ _buttonDragOffset = offset; }
305 constexpr void setUnitLastClicked(
GxUnitBase* pUnit ){ _pUnitLastClicked = pUnit; }
307 constexpr GxUnitBase* getUnitLastClicked(
void )
const {
return _pUnitLastClicked; }
315 GxGuiSplitterCross* _pSplitter;
319 GxGuiFormBody** _ppBody;
321 GxToolUnitManager* _pTool;
323 b32 _isAbleToChangeList;
333class GxToolUnitManager::GxGuiFormListProcess :
public GxGuiFormListBase
341 GX_RTTI_CLASS( GxToolUnitManager::GxGuiFormListProcess, GxGuiFormListBase )
350 GxGuiFormListProcess(
void ){}
352 GxGuiFormListProcess( GxToolUnitManager* pTool );
361 GX_FORCE_INLINE
void addList( u32 )
override {}
363 GX_FORCE_INLINE
void deleteList( u32 )
override {}
366 void createUnit( u32 listNumber,
const GxRtti& rtti )
override;
372 void changeList(
GxUnitBase* pUnit, u32 newListNumber )
override;
380class GxToolUnitManager::GxGuiFormListKind :
public GxGuiFormListBase
388 GX_RTTI_CLASS( GxToolUnitManager::GxGuiFormListKind, GxGuiFormListBase )
397 GxGuiFormListKind(
void ){}
399 GxGuiFormListKind( GxToolUnitManager* pTool );
408 GX_FORCE_INLINE
void addList( u32 )
override {}
410 GX_FORCE_INLINE
void deleteList( u32 )
override {}
413 void createUnit( u32 listNumber,
const GxRtti& rtti )
override;
419 void changeList(
GxUnitBase* pUnit, u32 newListNumber )
override;
427class GxToolUnitManager::GxGuiName :
public GxGuiBase
435 GX_RTTI_CLASS( GxToolUnitManager::GxGuiName, GxGuiBase )
446 GxGuiName(
const u32 listNumber, GxGuiFormListBase* pForm, GxToolUnitManager* pTool );
449 GxGuiName(
void ) : _pFormList(nullptr), _pTool(nullptr){}
458 constexpr void setListNumber( u32 listNumber ) { _listNumber = listNumber; }
462 constexpr GxGuiFormListBase* getFormList(
void)
const {
return _pFormList; }
464 constexpr GxToolUnitManager* getTool(
void)
const {
return _pTool; }
466 constexpr u32 getListNumber(
void)
const {
return _listNumber; }
475 void onClick(
const GxPoint2& position, u32 button )
override;
477 GX_FORCE_INLINE
void onDoubleClick(
const GxPoint2& , u32 )
override {}
479 void onDraw(
void )
override;
488 GxGuiFormListBase* _pFormList;
489 GxToolUnitManager* _pTool;
497class GxToolUnitManager::GxGuiFormBody :
public GxGuiForm
505 GX_RTTI_CLASS( GxToolUnitManager::GxGuiFormBody, GxGuiForm )
516 GxGuiFormBody(
const u32 listNumber, GxGuiFormListBase* pForm, GxToolUnitManager* pTool );
519 b32 initialize(
void )
override;
522 void cleanup(
void)
override;
526 GxGuiFormBody(
void ) : _pListGuiUnit(nullptr), _ppSelectedUnit(nullptr), _pFormList(nullptr), _pTool(nullptr){}
535 void update(
void )
override;
541 void eventCreateUnit(
void* pRtti );
544 GX_FORCE_INLINE
void eventSelectAll(
void ) { setIsSelectedAll(
true ); }
552 GX_FORCE_INLINE
void eventOnRender(
void ) { setSelectedUnitRender(
true); }
554 GX_FORCE_INLINE
void eventOffRender(
void ) { setSelectedUnitRender(
false); }
571#if GX_USE_UNIT_PROFILE
573 GX_FORCE_INLINE
void eventOutputProfile(
UPDATE_TYPE updateType) { outputProfileSelectedUnit(updateType); }
575 GX_FORCE_INLINE
void eventResetProfile(
void) { resetProfileSelectedUnit(); }
582 constexpr u32 getUnitCount(
void ) {
return _pListGuiUnit->getCount(); }
585 void setIsSelectedAll(
b32 isSelected );
591 void killSelectedUnit(
void );
599 void setSelectedUnitRender(
const b32 enable);
601 void toggleSelectedUnitRender(
void);
603#if GX_USE_UNIT_PROFILE
605 void outputProfileSelectedUnit(
UPDATE_TYPE updateType);
608 void resetProfileSelectedUnit(
void);
612 void moveSelectedUnitList(
const u32 newListNumber );
615 void drawChangingUnitGui(
GxPoint2& position );
618 void drawAllUnitGui(
void);
622 void onClick(
const GxPoint2& position, u32 button)
override;
625 void onMouseDown(
const GxPoint2& position, u32 button)
override;
628 void onMouseUp(
const GxPoint2& position, u32 button)
override;
631 void onKeyDown(GxKeyboard::KEY key)
override;
634 void onDraw(
void)
override;
637 void postDraw(
void)
override;
646 constexpr GxToolUnitManager* getTool(
void )
const {
return _pTool; }
648 constexpr GxGuiFormListBase* getFormList(
void )
const {
return _pFormList; }
650 constexpr void setListNumber( u32 listNumber ) { _listNumber = listNumber; }
652 constexpr u32 getListNumber(
void )
const {
return _listNumber; }
664 GxGuiFormListBase* _pFormList;
665 GxToolUnitManager* _pTool;
674class GxToolUnitManager::GxGuiUnitBox :
public GxGuiBase
682 GX_RTTI_CLASS( GxToolUnitManager::GxGuiUnitBox, GxGuiBase )
693 GxGuiUnitBox(
void );
695 GxGuiUnitBox( GxGuiFormBody* pFormBody );
704 void drawNamePlate(
const GxPoint2& position,
const GxColor& frameColor,
const GxToolColor& plateColor,
const GxColor& nameColor )
const;
707 void drawPlateName(
const GxPoint2& position,
const GxColor& nameColor)
const;
710 void drawPlateFrame(
const GxPoint2& position,
const GxColor& frameColor)
const;
713 void drawPlateBack(
const GxPoint2& position,
const GxToolColor& plateColor)
const;
716 void killUnit(
void) {
if (_pUnit) _pUnit->kill(); _pUnit =
nullptr; }
719 GX_FORCE_INLINE
void setUnitAttribute(
const GxUnitBase::ATTRIBUTE attribute,
const b32 enable) {
if (_pUnit) _pUnit->setAttribute(attribute, enable); }
721 GX_FORCE_INLINE
void toggleUnitAttribute(
const GxUnitBase::ATTRIBUTE attribute) {
if (_pUnit) _pUnit->setAttribute(attribute, !_pUnit->isAttribute(attribute)); }
724 GX_FORCE_INLINE
void setUnitRender(
const b32 enable) {
if (_pUnit) _pUnit->setRender(enable); }
726 GX_FORCE_INLINE
void toggleUnitRender(
void) {
if (_pUnit) _pUnit->setRender(!_pUnit->isRender()); }
728#if GX_USE_UNIT_PROFILE
730 GX_FORCE_INLINE
void outputProfile(
UPDATE_TYPE updateType) {
if (_pUnit) _pUnit->outputProfile(updateType); }
732 GX_FORCE_INLINE
void resetProfile(
void) {
if (_pUnit) _pUnit->resetProfile(); }
737 GX_FORCE_INLINE
void update(
void)
override
741 if (_pUnit && !_pUnit->isEnable())
748 void onMouseMove(
const GxPoint2& position)
override;
750 void onMouseDown(
const GxPoint2& position, u32 button)
override;
752 void onClick(
const GxPoint2& position, u32 button)
override;
754 void onDoubleClick(
const GxPoint2& position, u32 button)
override;
756 void onKeyDown(GxKeyboard::KEY key)
override;
758 void onDraw(
void)
override;
762 void toggleIsSelected(
void);
765 void createToolUnitProperty(
void);
779 constexpr GxUnitBase* getUnit(
void )
const {
return _pUnit; }
784 GX_FORCE_INLINE
const GxToolColor& getColors(
void )
const {
return _colors; }
786 GX_FORCE_INLINE
const GxColor& getPlateFrameColor(
void)
const {
return _plateFrameColor; }
788 GX_FORCE_INLINE
const GxColor& getPlateNameColor(
void)
const {
return _plateNameColor; }
792 GX_FORCE_INLINE GxToolUnitManager* getTool(
void) {
return static_cast<GxGuiFormBody*
>(getParent())->getTool(); }
794 GX_FORCE_INLINE GxGuiFormListBase* getFormList(
void) {
return static_cast<GxGuiFormBody*
>(getParent())->getFormList(); }
804 GxGuiFormBody* _pFormBody;
811GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
UPDATE_TYPE
更新タイプ
Definition GxUnitBase.h:22
配列クラス
Definition GxArrayClassBase.h:18
プロパティテーブルクラス
Definition GxProperty.h:1641
実行時型情報クラス
Definition GxRtti.h:154
ユニット連結リストクラス
Definition GxSysUnit.h:348
void setAttributeAll(GxUnitBase::ATTRIBUTE attribute, b32 enable)
アトリビュートを全て設定
Definition GxSysUnit.cpp:1739
void setRenderAll(b32 enable)
描画フラグを全て設定
Definition GxSysUnit.cpp:1757
GxListUnit * getListKind(u32 listKindNumber) const
分類用リストを取得
Definition GxSysUnit.cpp:866
void killAll(void)
全リストのユニットを全て削除
Definition GxSysUnit.cpp:440
GxListUnit * getListProcess(u32 listProcessNumber) const
処理用リストを取得
Definition GxSysUnit.cpp:817
void setAttributeAll(GxUnitBase::ATTRIBUTE attribute, b32 enable)
アトリビュートを全て設定
Definition GxSysUnit.cpp:520
ユニット基礎クラス
Definition GxUnitBase.h:45
ATTRIBUTE
属性
Definition GxUnitBase.h:71
@ ATTRIBUTE_UPDATE
updateを呼ぶか
Definition GxUnitBase.h:72
@ ATTRIBUTE_LOCK
killを無視する
Definition GxUnitBase.h:74
@ ATTRIBUTE_SELECTED
選択されているか
Definition GxUnitBase.h:73
座標
Definition GxStruct.h:867
サイズ
Definition GxStruct.h:730
文字列型クラス
Definition GxString.h:18
32bitブーリアン
Definition GxDefine.h:173