12GX_CORE_NAMESPACE_BEGIN()
14class GxToolUnitProperty;
52 class GxScopeProfiler;
109 virtual void render(
void);
117 for (
auto* pModule : _modules)
122 GX_ERROR(
false,
"Module(%s) is already craeted", T::GX_RTTI.getName());
127 if(
getRtti().isDerived(T::getOwnerDerivedRtti()))
129 auto pModule =
static_cast<T*
>(T::GX_RTTI.GX_CREATE_INSTANCE());
130 GX_ASSERT(pModule,
"Module(%s) create error", T::GX_RTTI.getName());
131 pModule->setOwner(
this);
132 _modules.addBottom(pModule);
133 _updateEnable |= pModule->getUpdateEnable();
142 for (u32 i = 0; i < _modules.
getCount(); i++)
145 if (pModule->getRtti() == T::GX_RTTI)
148 GX_SAFE_DELETE(pModule);
159 void sleep(f32 time);
162 template<
typename T> T*
createAndAddChild(u32 listProcessNumber = U32_MAX, u32 listKindNumber = U32_MAX,
b32 isSerialize =
false,
const GxRtti* pRtti =
nullptr)
164 T* pUnit =
static_cast<T*
>(createAndAddBottom(listProcessNumber, listKindNumber, pRtti ? *pRtti : T::GX_RTTI));
167 pUnit->setParent(
this);
172 GxUnitBase* createAndAddBottom(u32 listProcessNumber, u32 listKindNumber,
const GxRtti& rtti);
175 virtual void kill(
void);
177#if GX_USE_UNIT_PROFILE
180 void preAsyncUpdateProfile(
void);
182 void asyncUpdateProfile(
void);
184 void postAsyncUpdateProfile(
void);
186 void sequentialUpdateProfile(
void);
188 void forceAsyncUpdateProfile(
void);
248 for (
auto* pModule : _modules)
252 return static_cast<T*
>(pModule);
292 GX_FORCE_INLINE
virtual void setExpandToolUnitProperty( GxToolUnitProperty* ) {}
296 GX_FORCE_INLINE
virtual void setResource(
GxResBase* ){}
300 GX_FORCE_INLINE
virtual void reloadBegin(
void){}
302 GX_FORCE_INLINE
virtual void reloadEnd(
void){}
305 GX_FORCE_INLINE
void getPropertyVirtualName(
void* pValue) { *
static_cast<GX_CSTR*
>(pValue) = getVirtualName(); }
307 constexpr GX_CSTR getVirtualName(
void)
const {
return _virtualName.
getLength() > 0 ? _virtualName.
getString() :
getRtti().getName(); }
309 GX_FORCE_INLINE
void setVirtualName(GX_CSTR name){ _virtualName = name; }
311 constexpr GxToolBase* getParentTool(
void)
const {
return _pParentTool; }
313 constexpr void setParentTool(GxToolBase* pParentTool) { _pParentTool = pParentTool; }
315 void setParentToolChildren(GxToolBase* pParentTool);
317 void addPropertyToTable(
GxPropertyTable* pPropertyTable, GX_CSTR name,
b32 pageExpand =
false);
319#if GX_USE_UNIT_PROFILE
325 void resetProfile(
void);
329 constexpr u32 getUpdateTime(
UPDATE_TYPE updateType)
const {
return _updateTime[
static_cast<s32
>(updateType)]; }
332 static GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index);
341 f32 _deltaTimeFactor;
360#if GX_USE_UNIT_PROFILE
367 GxToolBase* _pParentTool;
374#define GX_UPDATE_UNIT_POINTER(__POINTER__) if( (__POINTER__) && (!(__POINTER__)->isEnable()) ) { (__POINTER__) = nullptr; }
377#define GX_SAFE_KILL(__POINTER__) { if(__POINTER__){ __POINTER__->kill(); __POINTER__ = nullptr; } }
379GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
void GxTypedObject
その他
Definition GxDefine.h:213
RENDER_VIEW
描画優先度(ビュー)
Definition GxRender.h:442
RENDER_SUB_VIEW
描画優先度(サブビュー)
Definition GxRender.h:485
UPDATE_TYPE
更新タイプ
Definition GxUnitBase.h:22
配列クラス
Definition GxArrayClassBase.h:18
constexpr u32 getCount(void) const
配列数を取得
Definition GxArrayClassBase.h:109
void remove(GxClassBaseRoot *pObject)
削除(領域を詰める)
Definition GxArrayClassBase.cpp:130
配列クラス
Definition GxArray.h:18
constexpr u32 getCount(void) const
配列数を取得
Definition GxArray.h:132
参照オブジェクト基底クラス
Definition GxBase.h:122
基底クラス
Definition GxBase.h:51
virtual GxRtti & getRtti(void) const =0
Rttiの取得
クリティカルセクションクラス
Definition GxThread.h:20
ユニットモジュール基礎クラス
Definition GxModUnitBase.h:22
プロパティテーブルクラス
Definition GxProperty.h:1641
マテリアル構造体
Definition GxRenderMaterial.h:18
テクスチャクラス
Definition GxRenderTexture.h:19
リソース基底クラス
Definition GxResBase.h:23
ユニットインスタンスリソース
Definition GxResUnitInstance.h:18
実行時型情報クラス
Definition GxRtti.h:154
ユニットシステムクラス
Definition GxSysUnit.h:64
タイマークラス
Definition GxTimer.h:110
ユニット基礎クラス
Definition GxUnitBase.h:45
constexpr GxUnitBase * getChild(u32 index) const
子ユニットを取得
Definition GxUnitBase.h:261
GX_FORCE_INLINE b32 isRenderView(RENDER_VIEW view) const
描画するビューを判定
Definition GxUnitBase.h:228
constexpr void setDeltaTimeRatio(f32 deltaTimeRatio)
デルタタイムレート(通常のフレームレートの何倍か)を設定
Definition GxUnitBase.h:208
virtual void render(void)
描画
Definition GxUnitBase.cpp:166
void setPropertyResUnitInstance(const void *const pValue)
ユニットインスタンスリソースプロパティの設定
Definition GxUnitBase.cpp:318
GX_FORCE_INLINE b32 isRender(void) const
描画フラグ判定
Definition GxUnitBase.h:222
void cleanup(void) override
解放処理
Definition GxUnitBase.cpp:74
GX_FORCE_INLINE b32 isUpdateEnable(UPDATE_TYPE updateType) const
更新を呼ぶかを判定
Definition GxUnitBase.h:236
virtual void postAsyncUpdate(void)
並列更新(asyncUpdateの後に実行される)
Definition GxUnitBase.cpp:133
GX_FORCE_INLINE b32 isEnable(void) const
有効か判定
Definition GxUnitBase.h:214
GX_FORCE_INLINE GxFlag32Index< RENDER_VIEW > getRenderViewFlag(void) const
描画するビューフラグを取得
Definition GxUnitBase.h:226
constexpr GxUnitBase * getParent(void) const
親ユニットを取得
Definition GxUnitBase.h:263
GX_FORCE_INLINE b32 isRenderSubView(RENDER_SUB_VIEW subView) const
描画するサブビューを判定
Definition GxUnitBase.h:232
void setParent(GxUnitBase *pParent)
親ユニットを設定
Definition GxUnitBase.cpp:274
virtual void preAsyncUpdate(void)
並列更新(asyncUpdateの前に実行される)
Definition GxUnitBase.cpp:111
GX_FORCE_INLINE const GxTypedObject * getDefaultObject(void) override
デフォルトオブジェクトを取得
Definition GxUnitBase.h:276
T * getModule(void) const
モジュールを取得
Definition GxUnitBase.h:246
constexpr GxUnitBase * getDefaultUnit(void) const
デフォルトユニットを取得
Definition GxUnitBase.h:278
virtual b32 setRenderMaterial(GxRenderMaterial *pMaterial, const GxResModel::GxMeshGroup *pMeshGroup)
マテリアルの描画設定
Definition GxUnitBase.cpp:180
GxUnitBase(void)
コンストラクタ
Definition GxUnitBase.cpp:45
constexpr f32 getDeltaTime(void) const
デルタタイムを取得
Definition GxUnitBase.h:202
constexpr f32 getDeltaTimeRatio(void) const
デルタタイムレート(通常のフレームレートの何倍か)を取得
Definition GxUnitBase.h:206
T * addModule(void)
モジュールを作成
Definition GxUnitBase.h:114
ATTRIBUTE
属性
Definition GxUnitBase.h:71
@ ATTRIBUTE_NOSERIALIZE
シリアライズしない
Definition GxUnitBase.h:76
@ ATTRIBUTE_SLOW
スローが適用される
Definition GxUnitBase.h:75
@ ATTRIBUTE_UPDATE
updateを呼ぶか
Definition GxUnitBase.h:72
@ ATTRIBUTE_LOCK
killを無視する
Definition GxUnitBase.h:74
@ ATTRIBUTE_SELECTED
選択されているか
Definition GxUnitBase.h:73
void setRender(b32 enable, b32 withChildren=false)
描画フラグを設定
Definition GxUnitBase.cpp:258
constexpr u32 getAttribute(void) const
属性を取得
Definition GxUnitBase.h:216
void removeModule(void)
モジュールを削除
Definition GxUnitBase.h:140
constexpr void setDeltaTimeFactor(f32 deltaTimeFactor)
デルタタイム係数を設定
Definition GxUnitBase.h:200
constexpr u32 getChildCount(void) const
子ユニット数を取得
Definition GxUnitBase.h:259
virtual b32 setup(void)
セットアップ(初回にasyncUpdate前に一回呼ばれる)
Definition GxUnitBase.cpp:92
virtual void asyncUpdate(void)
並列更新
Definition GxUnitBase.cpp:122
GX_FORCE_INLINE void setPropertyAttributeUpdate(const void *const pValue)
プロパティ用:更新処理の属性を設定
Definition GxUnitBase.h:243
virtual void forceAsyncUpdate(void)
強制並列更新(pause中も実行)
Definition GxUnitBase.cpp:155
GX_FORCE_INLINE b32 isAttribute(ATTRIBUTE attribute) const
属性を判定
Definition GxUnitBase.h:218
constexpr void setDeltaTime(f32 deltaTime)
デルタタイムを設定
Definition GxUnitBase.h:204
constexpr f32 getDeltaTimeFactor(void) const
デルタタイム係数を取得
Definition GxUnitBase.h:198
GX_FORCE_INLINE void setRenderSubView(RENDER_SUB_VIEW subView, b32 enable)
描画するサブビューを設定
Definition GxUnitBase.h:234
virtual void sequentialUpdate(void)
逐次更新
Definition GxUnitBase.cpp:144
GX_FORCE_INLINE void setAttribute(ATTRIBUTE attribute, b32 enable)
属性を設定
Definition GxUnitBase.h:220
constexpr void getPropertyResUnitInstance(void *const pValue)
ユニットインスタンスリソースプロパティの取得
Definition GxUnitBase.h:272
GX_FORCE_INLINE void setUpdateEnable(UPDATE_TYPE updateType, b32 enable)
更新を呼ぶかを設定
Definition GxUnitBase.h:238
virtual void kill(void)
消去リクエスト
Definition GxUnitBase.cpp:234
constexpr GxResUnitInstance * getResUnitInstance(void) const
ユニットインスタンスリソースを取得
Definition GxUnitBase.h:268
void sleep(f32 time)
スリープ(スクリプト用)
Definition GxUnitBase.cpp:196
GX_FORCE_INLINE void getPropertyAttributeUpdate(void *const pValue)
プロパティ用:更新処理の属性を取得
Definition GxUnitBase.h:241
GX_FORCE_INLINE void setRenderView(RENDER_VIEW view, b32 enable)
描画するビューを設定
Definition GxUnitBase.h:230
T * createAndAddChild(u32 listProcessNumber=U32_MAX, u32 listKindNumber=U32_MAX, b32 isSerialize=false, const GxRtti *pRtti=nullptr)
子ユニットを追加作成
Definition GxUnitBase.h:162
void setResUnitInstance(GxResUnitInstance *pResUnitInstance)
ユニットインスタンスリソースを設定
Definition GxUnitBase.cpp:307
STATE
状態
Definition GxUnitBase.h:63
constexpr void setState(STATE state)
状態を設定(ユーザーは使用してはならない内部使用)
Definition GxUnitBase.h:212
void setDefaultUnit(GxUnitBase *pDefaultUnit)
デフォルトユニットを設定
Definition GxUnitBase.cpp:341
constexpr STATE getState(void) const
状態を取得
Definition GxUnitBase.h:210
インデックス指定型フラグ
Definition GxStruct.h:1294
GX_FORCE_INLINE void setFlag(T index, b32 enable)
Definition GxStruct.h:1325
GX_FORCE_INLINE b32 isFlag(T index) const
フラグ直取得
Definition GxStruct.h:1321
モデルリソースメッシュグループ構造体
Definition GxResModel.h:211
文字列型クラス
Definition GxString.h:18
constexpr u32 getLength(void) const
文字列の長さを取得
Definition GxString.h:119
GX_FORCE_INLINE GX_STR getString(void)
文字列取得
Definition GxString.h:165
32bitブーリアン
Definition GxDefine.h:173