17GX_CORE_NAMESPACE_BEGIN()
22class GxResSystemConfig;
24class GxToolViewProperty;
25class GxResThumbnailTno;
37 GX_RTTI_ABSTRACT_CLASS(GxSysTool,
GxSysBase)
41 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
44 class GxLocationDataTool;
46 struct GxDataInitialize;
47 class GxDataProcessBar;
48 class GxDataPadInformation;
49 class GxDataMouseInformation;
50 class GxDataModelInformation;
51 class GxDataGUIInformation;
52 class GxPropertySortNode;
54 class GxFavoriteFolder;
55 class GxGuiMenuSelectTool;
56 class GxDataToolShortcut;
57 class GxGuiProcessBar;
60 template <
class T>
class GxIteratorDesktop;
63 static constexpr u32 TOOL_BAR_BUTTON_PLAY_INDEX = 0;
65 static constexpr u32 TOOL_BAR_BUTTON_PAUSE_INDEX = 1;
69 static const GX_CSTR FONT_TEXTURE;
71 static const GxVector2 FONT_HALF_SIZE_SINGLE;
73 static const GxVector2 FONT_FULL_SIZE_SINGLE;
75 static const u32 FONT_HALF_COLUMN;
77 static const u32 FONT_FULL_COLUMN;
81 static constexpr u32 FONT_HALF_SIZE_WIDTH = 6;
83 static constexpr u32 FONT_HALF_SIZE_HEIGHT = 12;
85 static constexpr u32 FONT_FULL_SIZE_WIDTH = 12;
87 static constexpr u32 FONT_FULL_SIZE_HEIGHT = 12;
89 static const u32 FONT_SIZE_HEIGHT = FONT_HALF_SIZE_HEIGHT > FONT_FULL_SIZE_HEIGHT ? FONT_HALF_SIZE_HEIGHT : FONT_FULL_SIZE_HEIGHT;
92 static const f32 FONT_HALF_SIZE_WIDTH_F32;
94 static const f32 FONT_FULL_SIZE_WIDTH_F32;
96 static const f32 FONT_SIZE_HEIGHT_F32;
99 static GX_CHAR SYSTEM_CONFIG_RES_PATH[64];
103 enum class DRAW_FLAG_INDEX
119 static constexpr u32 WINDOW_CREATE_OFFSET = 24;
122 static const f32 TOOL_RENDER_Z;
129 enum class BASIS_CORNER
139 GX_ENUM_TABLE_MAX(BASIS_CORNER)
143 static GX_CHAR USED_FILE_PATH_FILE_PATH[64];
145 static const u32 USED_FILE_PATH_MAX;
147 static GX_CHAR FAVORITE_FOLDER_FILE_PATH[64];
149 static const u32 FAVORITE_FOLDER_MAX;
152 static constexpr u32 CREATE_ASYNC_TOOL_MAX = 4;
163 ~GxSysTool(
void )
override {}
166 b32 initialize(
const GxClassBase* pInitialInformation )
override;
169 virtual b32 initializeThreadLocalStorage(u32 workerThreadIndex);
172 void terminate(
void )
override;
182 void beginToolRender(
void );
189 void endToolRender(
void );
192 void update(
void )
override;
195 void createAsyncTools(
void);
198 virtual void checkMouseEvent(
void );
201 virtual void checkMouseEventForMultiSelect(
void );
204 virtual void checkKeyEvent(
void );
210 void setPlay(
b32 on);
213 GX_FORCE_INLINE
void getPlayProperty(
void*
const pValue) { *
static_cast<b32*
>(
const_cast<void*
>(pValue)) = !getGxSysMain()->
isStop(); }
215 GX_FORCE_INLINE
void setPlayProperty(
const void*
const pValue) { setPlay(*
static_cast<b32*
>(
const_cast<void*
>(pValue))); }
218 GX_FORCE_INLINE
void getPauseProperty(
void*
const pValue) { *
static_cast<b32*
>(
const_cast<void*
>(pValue)) = getGxSysMain()->
isPause(); }
220 GX_FORCE_INLINE
void setPauseProperty(
const void*
const pValue) { getGxSysMain()->
setPause(*
static_cast<b32*
>(
const_cast<void*
>(pValue))); }
224 GX_FORCE_INLINE
void getTitleBarEnable(
void*
const pValue)
const { *
static_cast<b32*
>(
const_cast<void*
>(pValue)) = (GetWindowLongW(getGxSysMain()->getHwndParent(), GWL_STYLE) & WS_CAPTION) != 0; }
226 void setTitleBarEnable(
const void*
const pValue);
228 GX_FORCE_INLINE
void getToolBarEnable(
void*
const pValue)
const { *
static_cast<b32*
>(
const_cast<void*
>(pValue)) = getGxSysMain()->getHwndToolbar() !=
nullptr; }
230 void setToolBarEnable(
const void*
const pValue);
234 void minimizeAllWindow(
void );
237 void normalizeAllWindow(
void );
240 void setAllWindowCenter(
void );
245 void adjustColorWithString(
const GxString&
string,
GxColor& baseColor, f32 hueMax = 20.f, f32 saturationMax = 0.2f, f32 valueMax = 0.2f );
248 GX_FORCE_INLINE
void setRenderTarget(
GxRenderTexture* pRenderTarget){ getContext2D()->setRenderTarget(pRenderTarget, 1.f); }
250 GX_FORCE_INLINE
void copyRenderTargetToTexture(u32 index = 0,
GxRenderTexture* pTexture =
nullptr, u32 dstMipLevel = 0,
const GxRect* pSrcRect =
nullptr,
const GxPoint2* pDstPoint =
nullptr){ getContext2D()->copyRenderTargetToTexture(index, pTexture, dstMipLevel, pSrcRect, pDstPoint, 1.f); }
252 GX_FORCE_INLINE
void clear(
const GxColor& clearColor){ getContext2D()->clear(clearColor, 1.f); }
255 GX_FORCE_INLINE
void setScreenSize(
const GxSize& size) { getContext2D()->setScreenSize(size, 1.0f); }
257 GX_FORCE_INLINE
void set2DScissorRect(
const GxRect& rect, f32 priority = TOOL_RENDER_Z )
259 GxRect scissorRect( rect );
264 getContext2D()->setScissorRect(scissorRect, priority);
355 void draw2DRectTextureG(
const GxRect& rect, f32 z,
const GxVector2& rotateCenter,
const f32 rotateRadian,
const GxColor& color0,
const GxColor& color1,
const GxColor& color2,
const GxColor& color3,
const GxVector2& uv0,
const GxVector2& uv1,
const GxPrimitiveMaterial& material =
GxPrimitiveMaterial::DEFAULT_2D );
359 void draw2DRectTextureG(
const GxRect& rect, f32 z,
const GxVector2& rotateCenter,
const f32 rotateRadian,
const GxColor& color0,
const GxColor& color1,
const GxColor& color2,
const GxColor& color3,
const GxVector2& uv0,
const GxVector2& uv1,
GxRenderTexture* pTexture );
399 void draw2DString(
const GxPoint2& point, GX_CSTR
string,
const GxColor& color =
GxColor::WHITE, u32 sizeHeight = FONT_SIZE_HEIGHT,
b32 isUseLineBreak =
false );
486 void draw3DConeElliptical(
const GxVector3& top,
const GxVector3& center,
const GxVector3& axis0,
const GxVector3& axis1,
const f32 radius0,
const f32 radius1,
const GxColor& color,
PRIMITIVE_FILL_MODE fillMode =
PRIMITIVE_FILL_MODE::SOLID,
const GxPrimitiveMaterial& material = TOOL_MATERIAL, u32 divie = 12, u32 viewFlag = 0xFFFFFFFF);
505 void getDrawRectString(
GxRect& dstRect,
const GxPoint2& position, GX_CSTR
string, u32 sizeHeigt = FONT_SIZE_HEIGHT,
b32 isUseLineBreak =
false);
524 void calculateCircumference(
const GxVector3& axis,
const u32 divide,
GxVector3* pCircumference );
526 void calculateCircumferenceElliptical(
const GxVector3& axis0,
const GxVector3& axis1,
const f32 radius0,
const f32 radius1,
const u32 divide,
GxVector3* pCircumference );
551 b32 transformScreenToWorldBackgroundHit(
const GxPoint2& screenPosition,
GxVector3& worldPosition );
557 GxPoint2 transformPrimitive2DToScreen(
const GxPoint2& primitive2DPosition );
572 GxGuiMessageBox* setMessageBox(GxGuiWindow* pOwner, GX_CSTR message, GX_CSTR caption);
575 GxGuiMessageBox* setMessageBox(GxGuiWindow* pOwner, GX_CSTR message, GX_CSTR caption,
const GxProperty& okEvent);
578 GxGuiMessageBox* setMessageBox(GxGuiWindow* pOwner, GX_CSTR message, GX_CSTR caption,
const GxProperty& okEvent,
const GxProperty& cancelEvent,
b32 isOkCancel =
true);
581 GxGuiMessageBox* setMessageBox(GxGuiWindow* pOwner, GX_CSTR message, GX_CSTR caption,
const GxProperty& yesEvent,
const GxProperty& noEvent,
const GxProperty& cancelEvent);
584 GX_FORCE_INLINE
void setDrawFlag( DRAW_FLAG_INDEX index,
b32 value) { _drawFlag.setFlag(index, value); }
586 GX_FORCE_INLINE
b32 isDrawFlag( DRAW_FLAG_INDEX index)
const {
return _drawFlag.isFlag(index); }
588 GX_FORCE_INLINE
b32 isDraw(DRAW_FLAG_INDEX index)
const {
return !_drawFlag.isFlag(DRAW_FLAG_INDEX::ALL_OFF) && _drawFlag.isFlag(index); }
591 GX_FORCE_INLINE
void setPropertyIsDrawGrid(
const void*
const pValue ) { getGxSysMain()->setDevelopFlag(DEVELOP_FLAG_TOOL_DRAW_GRID, *
static_cast<b32*
>(
const_cast<void*
>(pValue))); }
593 GX_FORCE_INLINE
void getPropertyIsDrawGrid(
void*
const pValue ) { *
static_cast<b32*
>(pValue) = getGxSysMain()->isOnDevelopFlag(DEVELOP_FLAG_TOOL_DRAW_GRID); }
596 GX_FORCE_INLINE
const GxRect& getSafetyArea(
void )
const {
return getGxSysRenderBase()->
getSafetyArea(); }
599 GxRect getCreateWindowRect(
const u32 width,
const u32 height );
605 void addToDesktop(GxGuiWindow* pWindow);
608 constexpr void eventNone(
void ) {}
611 void eventExitApplication(
void );
614 void changeStage(
void* pRtti );
617 GX_FORCE_INLINE
void createUnit(
void* pRtti) {
if (pRtti) { getGxSysUnit()->
createAndAddBottom(*
static_cast<GxRtti*
>(pRtti)); } }
620 void createTool(
void* pRtti );
623 void eventSingleStep(
void);
627 void eventChangeAppWindowSize( u32 height );
630 void eventOpenOnlineHelp( void );
632 void eventShowVersionInfo(
void );
635 template<
typename T> T* createTool(
b32 isOutsideWindow =
true,
b32 isMovable =
true,
b32 isClosable =
true) {
return static_cast<T*
>(createTool(T::GX_RTTI, isOutsideWindow, isMovable, isClosable)); }
637 void createToolAsync(
const std::function<
void(
void)>& pCallback) { GX_ASSERT(_createAsyncToolCount < CREATE_ASYNC_TOOL_MAX,
"ツール生成数オーバー"); _createAsyncToolCallbacks[_createAsyncToolCount++] =
const_cast<std::function<
void(
void)
>&>(pCallback); }
639 template<
typename T> T* getTool(
GxResBase* pResource =
nullptr)
const {
return static_cast<T*
>(getTool(T::GX_RTTI, pResource)); }
641 GxToolBase* getTool(
const GxRtti& rtti,
GxResBase* pResource =
nullptr)
const;
646 GxGuiDockingWindow* createDockingWindow(GxToolBase* pTool,
b32 isOutsideWindow =
false);
648 void eventSaveToolLocation(
void );
650 void eventLoadToolLocation(
void);
655 GxToolElement* createToolElements(GxGuiBase* pGui);
657 void createTools(GxToolElement& toolElement);
659 GxGuiBase* createToolsSub(GxToolElement& toolElement);
667 virtual b32 detachElement(
const GxRtti& rtti );
670 virtual void loadToolPosition(
const GxRtti& rtti,
GxRect* pRectDefault,
GxRect* pRectBefore);
672 virtual void saveToolPosition(
const GxRtti& rtti,
const GxRect& rect);
675 void setPadInformation(
const GxDataPadInformation& data );
677 void getPadInformation( GxDataPadInformation& data );
680 void setMouseInformation(
const GxDataMouseInformation& data );
682 void getMouseInformation( GxDataMouseInformation& data );
685 void setModelInformation(
const GxDataModelInformation& data );
687 void getModelInformation( GxDataModelInformation& data );
690 void setGUIInformation(
const GxDataGUIInformation& data);
692 void getGUIInformation(GxDataGUIInformation& data);
695 GX_FORCE_INLINE
void toggleRenderOrtho(
void){ _isRenderOrtho = !_isRenderOrtho; }
697 GX_FORCE_INLINE
b32 isRenderOrtho(
void){
return _isRenderOrtho; }
699 void updateRenderOrtho(
void);
703 void saveAppWindowData(
void );
707 void loadAndStoreToolPosition(GxToolBase* pTool);
710 static void addAllChildrenProperty(
GxClassBaseRoot* pObject,
GxPropertyTable& table, GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER function,
const GxRtti* pRtti,
const GxRtti* pRttiExcept =
nullptr,
b32 alignOrder =
true );
719 static void executeBatchFile(GX_CSTR path);
722 GxToolBase* createTool(
const GxRtti& rtti,
b32 isOutsideWindow =
true,
b32 isMovable =
true,
b32 isClosable =
true);
731 GxSize getOutputScreenSize(
void)
const;
733 GX_FORCE_INLINE
GxPoint2 getMouseOutputScreenPosition(
void)
const {
return getGxSysInput()->getMouse()->getPosition() - getOutputScreenOffset(); }
735 GxPoint2 getOutputScreenOffset(
void)
const;
737 GxPoint2 getOutputClientOffset(GxToolViewProperty* pToolViewProperty)
const;
739 b32 isOutputWindowFocused(
void);
742 GX_FORCE_INLINE
const GxPropertyTable& getDefaultPropertyTable(
void )
const {
return _defaultMenuTable; }
745 b32 isOnProcessBar(
void )
const;
747 GxGuiProcessBar* getGuiProcessBar(
void)
const;
749 GxGuiFps* getGuiFps(
void)
const;
752 constexpr GxResThumbnailTno* getResThumbnail(
void)
const {
return _pResThumbnail; }
754 constexpr GxResTexture* getResCheckTexture(
void )
const {
return _pResCheckTexture; }
758 GX_FORCE_INLINE
b32 isOutsideWindow(
void)
const {
return _outsideWindowFlag; }
760 GX_FORCE_INLINE
void setIsOutsideWindow(
b32 flag) { _outsideWindowFlag = flag; }
764 GX_FORCE_INLINE
b32 isControlXSI(
void)
const {
return _controlXSI; }
766 constexpr u32 getHandleDrawMode(
void)
const {
return _isUseZTestDrawHandle ? 1 : 0; }
768 GX_FORCE_INLINE
b32 isFileDialogUseOriginalPath(
void)
const {
return _fileDialogUseOriginalPath; }
771 GX_FORCE_INLINE GxGuiDesktop* getDesktop(
void ) {
return getGxGuiSystem()->getDesktop(); }
775 virtual void fileDropped(
const GxString& filePath,
const GxPoint2& position );
779 GxToolResourceEditBase* createToolAndLoad( GX_CSTR filePath );
782 constexpr GxUnitBase* getDropUnit(
void) {
return _pDropUnit; }
784 constexpr void setDropUnit(
GxUnitBase* pUnit) { _pDropUnit = pUnit; }
787 constexpr GX_CSTR getDropFilePath(
void ) {
return _dropFilePath; }
789 constexpr void setDropFilePath(GX_CSTR filePath) { GX_ASSERT(filePath,
"nullptrには設定できません"); _dropFilePath = filePath; }
795 void setCurrentHandle( GxHandle* pHandle );
798 constexpr GxHandle* getCurrentHandle(
void ){
return _pCurrentHandle; }
801 GxHandle* allocateHandle(
const u32 handleTypeFlag = GxHandle::HANDLE_TYPE_ALL);
804 void freeHandle(GxHandle* pHandle);
807 GxHandle* getNearestHandle(
const GxPoint2& position, s32& lengthSquare );
810 GX_FORCE_INLINE GxHandleConfig* getHandleConfig(
void ){
return &_handleConfig; }
815 GX_FORCE_INLINE
b32 initializeWindows(
void) {
return true; }
821 void drawGrid(
void );
824 void updateSafetyArea(
void );
827 void updateScreenMatrix(
void );
830 void renderPreGui(
void );
833 void renderPostGui(
void );
836 void renderAxis(
const GxPoint2& offset,
const GxSize& resolution);
838 void renderPause(
const GxPoint2& offset);
840 void renderPadAll(
const GxPoint2& offset,
const GxSize& resolution);
843 void renderPad(
const GxPad* pPad,
const GxPoint2& position );
861 void addMenuTableToolChild(GxPropertyTable& table, const GxRtti* pRttiParent, const GxRtti* pRttiExcept = nullptr);
870 void eventHandleTranslate(
void);
872 void eventHandleRotate(
void);
874 void eventHandleScale(
void);
876 void eventHandleLocalTranslate(
void);
889 void eventSaveScreenshot(
void);
897 void addAndSaveFileRecord(
GxResBase* pRes );
900 void addFileRecord( GX_CSTR pPath, GX_CSTR pExtension, GX_CSTR pTime =
nullptr );
903 GX_FORCE_INLINE
GxArrayClassBase& getFileRecordList(
void ){
return _fileRecordList; }
906 void clearAllFileRecord(
void );
909 void loadFileRecord(
void );
912 void saveFileRecord(
void );
916 void addAndSaveFavoriteFolder(GX_CSTR path);
919 void addFavoriteFolder(GX_CSTR path);
922 void removeAndSaveFavoriteFolder(GX_CSTR path);
925 void removeFavoriteFolder(GX_CSTR path);
928 GX_FORCE_INLINE
GxArrayClassBase& getFavoriteFolderList(
void){
return _favoriteFolderList; }
931 void clearAllFavoriteFolder(
void);
934 void loadFavoriteFolder(
void);
937 void saveFavoriteFolder(
void);
941 void openOnlineHelp(
const GxRtti* pRtti);
943 GX_FORCE_INLINE
virtual GxString getDefaultBackgroundResource(
void) {
return ""; }
945 GX_FORCE_INLINE
virtual s32 getDefaultCharacterMotionNo(
void) {
return 0; }
947 GX_FORCE_INLINE
const GxString& getMotionToolConfigFile(
void)
const {
return _motionToolConfigFilePath; }
951 void updateSingleStep(
void );
955 constexpr GxPrimitiveManager* getPrimitiveManager2D(
void)
const {
return _pManager2D; }
957 constexpr GxPrimitiveManager* getPrimitiveManager3D(
void)
const {
return _pManager3D; }
960#if defined(GX_THREAD_LOCAL_STORAGE)
967 GX_FORCE_INLINE GxPrimitiveContext* getContext2D(void) { return _pContext2D[GxThread::getCurrentThread()->getIndex()]; }
974 b32 createGuiDevelop(
void );
977 b32 initializeLoadSystemConfig(
const GxToolInitialInformation* pToolInitialInformation);
980 void eventCreateToolAndLoad(
void* pArgument );
983 static GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index);
985 static GX_CSTR DRAW_FLAG_NAME[
static_cast<s32
>(DRAW_FLAG_INDEX::MAX)];
993 GX_FORCE_INLINE GxClipboard* getClipboard(
void){
return &_clipboard; }
996 constexpr GxArrayClassBase& getUnitTreeSelectNodes(
void ) {
return _unitTreeSelectNodes; }
998 constexpr GxArrayClassBase& getUnitTreeCutNodes(
void ) {
return _unitTreeCutNodes; }
1000 constexpr GxClassBaseRoot* getUnitTreeLastSelectNode(
void ) {
return _pUnitTreeLastSelectNode; }
1002 GX_FORCE_INLINE
void setUnitTreeLastSelectNode(
GxClassBaseRoot* pUnit ) { _pUnitTreeLastSelectNode = pUnit; }
1005 constexpr GX_ENUM* getSettableTool(
void)
const {
return _pSettableTool; }
1007 constexpr u32 getNumSettableTool(
void)
const {
return _numSettableTool; }
1010 constexpr GxGuiProgressWindow* getProgressWindow(
void)
const {
return _pProgressWindow; }
1018 u32 _windowCreateCount;
1020 GxResSystemConfig* _pResConfig;
1022 b32 _isUseZTestDrawHandle;
1028 GxArray* _pListToolNameWithHelp;
1036#if defined(GX_THREAD_LOCAL_STORAGE)
1048 GxResThumbnailTno* _pResThumbnail;
1051 b32 _outsideWindowFlag;
1054 GxString _motionToolConfigFilePath;
1056 b32 _singleStepInputOld;
1057 s32 _singleStepRepeatStart;
1058 s32 _singleStepRepeatSpan;
1059 s32 _singleStepRepeatCounter;
1061 GxGuiProcessBar* _pGuiProcessBar;
1067 GxHandle* _pCurrentHandle;
1068 GxHandleConfig _handleConfig;
1077 BASIS_CORNER _padInfoBasis;
1079 b32 _padInfoIsDirectionY;
1083 b32 _isRenderOrthoOld;
1086 u32 _maxPropertyEnumHeight;
1088 b32 _fileDialogUseOriginalPath;
1091 f32 _reportDrawTime;
1093 GxClipboard _clipboard;
1095 GX_CSTR _dropFilePath;
1097 std::function<void(
void)> _createAsyncToolCallbacks[CREATE_ASYNC_TOOL_MAX];
1098 u32 _createAsyncToolCount;
1105 u32 _numSettableTool;
1107 GxGuiProgressWindow* _pProgressWindow;
1115GX_FORCE_INLINE GxSysTool* getGxSysTool(
void){
return GxSysTool::getSingletonPointer(); }
1120class GxSysTool::GxPropertySortNode :
public GxClassBase
1128 GX_RTTI_CLASS( GxSysTool::GxPropertySortNode,
GxClassBase )
1130 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1139 GxPropertySortNode(
void ){}
1141 ~GxPropertySortNode(
void )
override {}
1161class GxSysTool::GxLocationDataTool :
public GxClassBase
1169 GX_RTTI_CLASS( GxSysTool::GxLocationDataTool,
GxClassBase )
1171 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1180 GxLocationDataTool(
void );
1183 ~GxLocationDataTool(
void )
override;
1208struct GxSysTool::GxDataInitialize :
public GxStructBase
1216 GX_RTTI_STRUCT(GxDataInitialize);
1225 GxDataInitialize(
void);
1227 GxDataInitialize(u32 ) {}
1251 GxRect _guiExpandFrameRect;
1254 f32 _buttonOffColorValue[4];
1256 f32 _buttonOnColorValue[4];
1261 b32 _isAppWindowMaximized;
1264 b32 _duplicateControlXSI;
1265 b32 _isUseZTestDrawHandle;
1268 b32 _useCustomClearColor;
1272 b32 _isRealFloatFormat;
1273 b32 _fileDialogUseOriginalPath;
1275 b32 _useRTDWheelScrollAlways;
1276 b32 _isStopRTDPlayByClick;
1278 GxGuiConfig _guiConfig;
1279 GxHandleConfig _handleConfig;
1287class GxSysTool::GxToolElement :
public GxClassBase
1294 static const u32 TAB_TOOL_MAX = 4;
1297 GX_RTTI_CLASS(GxSysTool::GxToolElement,
GxClassBase)
1299 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1308 GxToolElement(
void);
1310 ~GxToolElement(
void);
1318 const GxRtti* _pToolRtti[TAB_TOOL_MAX];
1319 b32 _movable[TAB_TOOL_MAX];
1320 b32 _closable[TAB_TOOL_MAX];
1321 GxToolElement* _pToolElement0;
1322 GxToolElement* _pToolElement1;
1323 GxGuiSplitter::OFFSET_BASIS _offsetBasis;
1332class GxSysTool::GxDataProcessBar :
public GxClassBase
1340 GX_RTTI_CLASS( GxSysTool::GxDataProcessBar,
GxClassBase )
1342 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1351 GxDataProcessBar(
void );
1353 ~GxDataProcessBar(
void )
override {}
1365 void getBasisBarProperty( s32* pBasis );
1366 void setBasisBarProperty(
const s32*
const pBasis );
1367 void getBasisFpsProperty( s32* pBasis );
1368 void setBasisFpsProperty(
const s32*
const pBasis );
1382 b32 _isBarDirectionY;
1387 BASIS_CORNER _basisBar;
1388 BASIS_CORNER _basisFps;
1396class GxSysTool::GxDataPadInformation :
public GxClassBase
1404 GX_RTTI_CLASS( GxSysTool::GxDataPadInformation,
GxClassBase )
1406 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1409 static const GxPoint2 POSITION_DEFAULT;
1418 GxDataPadInformation(
void );
1420 ~GxDataPadInformation(
void )
override {}
1435 void getBasisProperty( s32* pBasis );
1437 void setBasisProperty(
const s32*
const pBasis );
1445 BASIS_CORNER _basis;
1455class GxSysTool::GxDataMouseInformation :
public GxClassBase
1463 GX_RTTI_CLASS( GxSysTool::GxDataMouseInformation,
GxClassBase )
1465 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1474 GxDataMouseInformation(
void );
1476 ~GxDataMouseInformation(
void )
override {}
1501class GxSysTool::GxDataModelInformation :
public GxClassBase
1509 GX_RTTI_CLASS( GxSysTool::GxDataModelInformation,
GxClassBase )
1511 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1520 GxDataModelInformation(
void );
1522 ~GxDataModelInformation(
void )
override {}
1551class GxSysTool::GxDataGUIInformation :
public GxClassBase
1559 GX_RTTI_CLASS(GxSysTool::GxDataGUIInformation,
GxClassBase)
1561 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1570 GxDataGUIInformation(
void);
1572 ~GxDataGUIInformation(
void)
override {}
1589 u32 _maxPropertyEnumHeight;
1596class GxSysTool::GxGuiProcessBar :
public GxGuiBase
1603 GX_RTTI_CLASS(GxSysTool::GxGuiProcessBar, GxGuiBase)
1608 static constexpr u32 PROCESS_BAR_WIDTH_DEFAULT = 3;
1610 static constexpr u32 PROCESS_BAR_LENGTH_RATIO_DEFAULT = 100;
1613 static const b32 PROCESS_BAR_IS_BAR_DIRECTIN_Y_DEFAULT;
1615 static const GxPoint2 PROCESS_BAR_POSITION_DEFAULT;
1617 static const GxRect PROCESS_BAR_BUTTON_RECT_ALL;
1619 static const GxRect PROCESS_BAR_BUTTON_RECT;
1628 GxGuiProcessBar(
void);
1631 b32 initialize(
void )
override;
1640 void setProcessBarData(
const GxDataProcessBar& data );
1643 void getProcessBarData( GxDataProcessBar& data );
1646 GX_FORCE_INLINE
b32 isOnProcessBar(
void )
const {
return _drawAll;}
1655 void update(
void )
override;
1658 void onClick(
const GxPoint2& position, u32 button )
override;
1661 void onDraw(
void )
override;
1665 void drawProcessBar(
void );
1668 void drawProcessBarBody(
const GxProfiler::GxLog* pLog,
const u32 bufferIndex,
const u32 maxLen,
const f32 denom,
GxRect& bar );
1671 void drawScale(
const GxRect& frame,
const GxRect& barMax );
1674 void updateGuiRegion(
void );
1685 b32 _isBarDirectionY;
1689 BASIS_CORNER _basisBar;
1694 GxSize _oldOutputResolution;
1695 u32 _oldThreadProfilerCount;
1703class GxSysTool::GxGuiFps :
public GxGuiBase
1710 GX_RTTI_CLASS(GxSysTool::GxGuiFps, GxGuiBase)
1713 static const GxPoint2 PROCESS_BAR_FPS_POSITION_DEFAULT;
1715 static const u32 PROCESS_BAR_FPS_DRAW_STRING_MAX;
1733 void update(
void)
override;
1735 void onDraw(
void)
override;
1744 GX_FORCE_INLINE
void setFpsPosition(
const GxPoint2& position) { _fpsPosition = position; }
1746 constexpr void setBasis(BASIS_CORNER basis) { _basis = basis; }
1755 BASIS_CORNER _basis;
1771 GX_RTTI_CLASS( GxSysTool::GxFileRecord,
GxClassBase )
1773 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1782 GxFileRecord(
void ){}
1784 ~GxFileRecord(
void )
override {}
1793 GX_FORCE_INLINE
void setPath( GX_CSTR path ){ GX_ASSERT(path,
"pPath is nullptr"); _path = path; updateFileName(); }
1795 GX_FORCE_INLINE
void setExtension( GX_CSTR extension ){ GX_ASSERT(extension,
"pExtension is nullptr"); _extension = extension; updateFileName(); }
1797 GX_FORCE_INLINE
void setTime( GX_CSTR time ){ _time = time; }
1799 GX_FORCE_INLINE
void setFileName( GX_CSTR fileName ){ _fileName = fileName; }
1802 constexpr GX_CSTR getPath(
void )
const {
return _path.getString(); }
1804 constexpr GX_CSTR getExtension(
void )
const {
return _extension.getString(); }
1806 constexpr GX_CSTR getTime(
void )
const {
return _time.getString(); }
1808 constexpr GX_CSTR getFileName(
void )
const {
return _fileName.getString(); }
1817 GX_FORCE_INLINE
void updateFileName(
void ){ _fileName = _path +
GxString(
".") + _extension; }
1837class GxSysTool::GxFavoriteFolder :
public GxClassBase
1845 GX_RTTI_CLASS(GxSysTool::GxFavoriteFolder,
GxClassBase)
1854 GxFavoriteFolder(
void){}
1856 ~GxFavoriteFolder(
void)
override {}
1865 GX_FORCE_INLINE
void setPath(GX_CSTR path){ GX_ASSERT(path,
"pPath is nullptr"); _path = path; }
1867 constexpr GX_CSTR getPath(
void)
const {
return _path.getString(); }
1883class GxSysTool::GxGuiMenuSelectTool :
public GxGuiMenu
1891 GX_RTTI_CLASS( GxGuiMenuSelectTool, GxGuiMenu )
1900 GxGuiMenuSelectTool(
void ):_pResBase(nullptr){}
1902 GxGuiMenuSelectTool(
const GxPoint2& position, GxGuiWindow* pGuiWindow ) : Super(position, pGuiWindow), _pResBase(nullptr){};
1905 void cleanup(
void )
override;
1914 GX_FORCE_INLINE
void setResBase(
GxResBase* pResBase ){ GX_ASSERT(pResBase,
"pResBase is nullptr"); _pResBase = pResBase; _pResBase->
addReference(); }
1917 void setCreateToolArrayRtti(
const GxArray& rttiArray );
1921 void eventCreateToolAndSetResource(
void* pArgument );
1937class GxSysTool::GxDataToolShortcut :
public GxClassBase
1949 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
1958 GxDataToolShortcut(
void);
1978 constexpr u32 getToolId(
void)
const {
return _toolId; }
1980 constexpr void setToolId(u32
id) { _toolId = id; }
1982 constexpr GxKeyboard::KEY getTriggerKey(
void)
const {
return _triggerKey; }
1984 constexpr void setTriggerKey(GxKeyboard::KEY key) { _triggerKey = key; }
1986 GX_FORCE_INLINE
b32 getSearchChild(
void)
const {
return _searchChild; }
1988 GX_FORCE_INLINE
void setSearchChild(
b32 searchChild) { _searchChild = searchChild; }
1997 GxKeyboard::KEY _triggerKey;
2006class GxToolInitialInformation :
public GxClassBase
2014 GX_RTTI_CLASS(GxToolInitialInformation,
GxClassBase)
2025 GxToolInitialInformation(
void);
2048 GX_FORCE_INLINE
void setServerSize3D(u32 bufferSize, u32 vertexBufferSize, u32 indexBufferSize,
b32 use32BitIndex =
false)
2050 _bufferSize3D = bufferSize;
2051 _vertexBufferSize3D = vertexBufferSize;
2052 _indexBufferSize3D = indexBufferSize;
2053 _use32BitIndex3D = use32BitIndex;
2057 GX_FORCE_INLINE
void setServerSize2D(u32 bufferSize, u32 vertexBufferSize, u32 indexBufferSize,
b32 use32BitIndex =
false)
2059 _bufferSize2D = bufferSize;
2060 _vertexBufferSize2D = vertexBufferSize;
2061 _indexBufferSize2D = indexBufferSize;
2062 _use32BitIndex2D = use32BitIndex;
2066 constexpr void setThreadProfilingLogMax(u32 logMax) { _threadProfilingLogMax = logMax; }
2075 u32 _vertexBufferSize3D;
2076 u32 _indexBufferSize3D;
2077 b32 _use32BitIndex3D;
2079 u32 _vertexBufferSize2D;
2080 u32 _indexBufferSize2D;
2081 b32 _use32BitIndex2D;
2082 u32 _threadProfilingLogMax;
2083 GX_CSTR _configFileSuffix;
2085 GxString _motionToolConfigFilePath;
2087 GxSysTool::GxDataInitialize _dataInitialize;
2088 GxSysTool::GxDataProcessBar _dataProcessBar;
2089 GxSysTool::GxDataPadInformation _dataPadInformation;
2090 GxSysTool::GxDataMouseInformation _dataMouseInformation;
2091 GxSysTool::GxDataModelInformation _dataModelInformation;
2092 GxSysTool::GxDataGUIInformation _dataGUIInformation;
2093 GxSysTool::GxDataToolShortcut _shortcuts[
static_cast<s32
>(GxKeyboard::KEY::Z) -
static_cast<s32
>(GxKeyboard::KEY::A)];
2102template<
class T>
class GxSysTool::GxIteratorDesktop
2110 GxIteratorDesktop(
void) : _pCurrent( nullptr ) {}
2112 virtual ~GxIteratorDesktop(
void) { _pCurrent =
nullptr; }
2126 T* getNextSub(GxGuiBase* pTop);
2128 T* getNextFromParent(GxGuiBase* pTarget);
2142T* GxSysTool::GxIteratorDesktop<T>::getTop(
void )
2145 if (T::GX_RTTI.isDerived(GxGuiWindow::GX_RTTI) && getGxGuiSystem()->getDesktop())
2147 _pCurrent = getNextSub(getGxGuiSystem()->getDesktop()->getChild());
2150 _pCurrent =
nullptr;
2155T* GxSysTool::GxIteratorDesktop<T>::getNext(
void)
2157 if (!_pCurrent->getNext())
2160 _pCurrent = getNextFromParent(_pCurrent);
2163 _pCurrent = getNextSub(_pCurrent->getNext());
2168T* GxSysTool::GxIteratorDesktop<T>::getNextSub(GxGuiBase* pTop)
2170 for (
auto* pGui = pTop; pGui; pGui = pGui->getNext())
2172 if (pGui->getRtti().isDerived(T::GX_RTTI))
2174 return static_cast<T*
>(pGui);
2176 else if (pGui->getRtti().isDerived(GxGuiSplitter::GX_RTTI))
2178 auto* pGui0 = getNextSub(
static_cast<GxGuiSplitter*
>(pGui)->getGui0());
2183 auto* pGui1 = getNextSub(
static_cast<GxGuiSplitter*
>(pGui)->getGui1());
2194T* GxSysTool::GxIteratorDesktop<T>::getNextFromParent(GxGuiBase* pTarget)
2199 if (pSplitter->getGui0() == pTarget)
2202 auto* pNext = getNextSub(pSplitter->getGui1());
2208 return getNextSub(pSplitter->getNext());
2213GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
T gx_cast(GxClassBaseRoot *pObject)
Definition GxBase.h:264
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
void GxTypedObject
その他
Definition GxDefine.h:213
PRIMITIVE_FILL_MODE
塗りつぶしモード
Definition GxPrimitive.h:31
RENDER_VIEW
描画優先度(ビュー)
Definition GxRender.h:442
配列クラス
Definition GxArrayClassBase.h:18
参照カウンタ用配列クラス
Definition GxArrayClassBase.h:145
配列クラス
Definition GxArray.h:18
オブジェクト基底クラス
Definition GxBase.h:88
virtual s32 addReference(void)
参照カウンタを加算
Definition GxBase.cpp:303
基底クラス
Definition GxBase.h:51
フォントテーブルアクセス
Definition GxFontTable.h:35
JSON解析用ノード
Definition GxJson.h:108
static GX_FORCE_INLINE T getMax(const T value0, const T value1)
大きいほうを取得
Definition GxMath.h:174
パッドクラス
Definition GxInputPad.h:25
プリミティブの並列発行を管理します。
Definition GxPrimitiveContext.h:22
プリミティブの描画発行単位を管理します。
Definition GxPrimitiveManager.h:23
プロパティクラス
Definition GxProperty.h:48
プロパティテーブルクラス
Definition GxProperty.h:1641
テクスチャクラス
Definition GxRenderTexture.h:19
リソース基底クラス
Definition GxResBase.h:23
テクスチャリソース
Definition GxResTexture.h:23
実行時型情報クラス
Definition GxRtti.h:154
リソース実行時型情報クラス
Definition GxRttiResource.h:188
箱形状クラス
Definition GxShape.h:333
カプセル形状クラス
Definition GxShape.h:707
円柱形状クラス
Definition GxShape.h:634
角錐台
Definition GxShape.h:531
マルチ球形状クラス
Definition GxShape.h:776
球形状クラス
Definition GxShape.h:240
システム基底クラス
Definition GxSysBase.h:18
void forceExit(EXIT_CODE code)
強制終了(メインループの停止)
Definition GxSysMain.cpp:1176
GX_FORCE_INLINE b32 isPause(void) const
一時停止中判定
Definition GxSysMain.h:693
GX_FORCE_INLINE b32 isStop(void) const
停止中判定
Definition GxSysMain.h:691
void setPause(b32 flag)
一時停止を設定
Definition GxSysMain.cpp:4503
GX_FORCE_INLINE const GxRect & getSafetyArea(void) const
セーフティエリアの取得
Definition GxSysRenderBase.h:167
GxUnitBase * createAndAddBottom(u32 listProcessNumber, u32 listKindNumber, const GxRtti &rtti)
指定リストの終端にユニットを追加作成
Definition GxSysUnit.cpp:379
static GxThread * getCurrentThread(void)
カレントスレッドを取得
Definition GxThread.cpp:505
constexpr u32 getIndex(void) const
インデックスを取得
Definition GxThread.h:251
static constexpr u32 THREAD_MAX
スレッドの最大数
Definition GxThread.h:188
2D基礎ユニットクラス
Definition GxUnit2DBase.h:24
ユニット基礎クラス
Definition GxUnitBase.h:45
座標ユニット基礎クラス
Definition GxUnitLocate.h:23
シングルトン基礎クラス
Definition GxSingleton.h:19
GUI用
Definition GxDefine.h:194
static const GxColor SYSTEM_AXIS_X
X軸
Definition GxColor.h:55
static const GxColor SYSTEM_AXIS_Z
Z軸
Definition GxColor.h:57
static const GxColor WHITE
白
Definition GxColor.h:37
static const GxColor SYSTEM_AXIS_Y
Y軸
Definition GxColor.h:56
インデックス指定型フラグ
Definition GxStruct.h:1294
2次元浮動小数点数クラス
Definition GxStruct.h:22
4×4行列(行優先)
Definition GxMatrix.h:607
アフィン変換行列(行優先)
Definition GxMatrix.h:330
座標
Definition GxStruct.h:867
プリミティブマテリアル
Definition GxPrimitive.h:103
static const GxPrimitiveMaterial DEFAULT_2D
2Dデフォルト
Definition GxPrimitive.h:136
プリミティブ頂点
Definition GxPrimitive.h:20
矩形
Definition GxStruct.h:951
サイズ
Definition GxStruct.h:730
文字列型クラス
Definition GxString.h:18
2次元ベクトル
Definition GxVector.h:34
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173