OROCHI
 
Loading...
Searching...
No Matches
GxSysUnit.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12GX_CORE_NAMESPACE_BEGIN()
13
14//===========================================================================
16//===========================================================================
18{
19 //-----------------------------------------------------------
21 //-----------------------------------------------------------
23public:
24 // RTTI定義
26 // GxClassBase継承クラス用禁止宣言
28
29
30 //-----------------------------------------------------------
32 //-----------------------------------------------------------
34
37 : _listProcessMax(8)
38 {}
39
41 //-----------------------------------------------------------
43 //-----------------------------------------------------------
45
47 void loadJson(const GxJson::GxJsonNode& jsonNode);
48
50 //-----------------------------------------------------------
52 //-----------------------------------------------------------
54
56
58};
59
60//===========================================================================
62//===========================================================================
63class GxSysUnit : public GxSysBase, public SingletonBase<GxSysUnit>
64{
65 //-------------------------------------------------------------
67 //-------------------------------------------------------------
69public:
70 // RTTI宣言
71 GX_RTTI_ABSTRACT_CLASS(GxSysUnit, GxSysBase)
72 // ClassBase継承クラス用禁止宣言
74
75 friend class GxUnitBase;
76 class GxListUnit;
77 class GxAddList;
78 class GxAddNode;
79
81 static constexpr u32 LIST_KIND_MAX = GxMath::VALUE_32;
82
84 //-------------------------------------------------------------
86 //-------------------------------------------------------------
88public:
90 GxSysUnit(void);
92 ~GxSysUnit(void) override {}
94 b32 initialize(const GxClassBase* pInitializeInformation) override;
95
96#if (GX_OCTREE_TYPE == GX_OCTREE_POOL)
99 void initializeSpaceGraph(u32 level, GxVector3& min, GxVector3& max, u32 levelNonShared = 0, u32 numCsecShared = 10);
100#else //GX_OCTREE_TYPE == GX_OCTREE_POOL
102 void initializeSpaceGraph(u32 level, GxVector3& min, GxVector3& max);
103#endif // GX_OCTREE_TYPE != GX_OCTREE_POOL
104
106 void terminate(void) override;
108 void terminateSpaceGraph( void );
109
111 //-----------------------------------------------------------
113 //-----------------------------------------------------------
115public:
117 virtual void preAsyncUpdate(void);
119 virtual void asyncUpdate(void);
121 virtual void postAsyncUpdate(void);
123 virtual void sequentialUpdate(void);
125 virtual void forceAsyncUpdate(void);
126
128 virtual void render(void);
130 void drawSpaceGraph(void);
131
133 GxUnitBase* createAndAddTop(u32 listProcessNumber, u32 listKindNumber, const GxRtti& rtti);
135 GxUnitBase* createAndAddBottom(u32 listProcessNumber, u32 listKindNumber, const GxRtti& rtti);
137 GX_FORCE_INLINE GxUnitBase* createAndAddBottom(const GxRtti& rtti) { return createAndAddBottom(getProcessListNumber(rtti), getKindListNumber(rtti), rtti); }
139 void addBottom(GxUnitBase* pUnit, u32 listProcessNumber, u32 listKindNumber);
140
142 virtual void onAddUnit(GxUnitBase* pUnit, u32 listProcessNumber, u32 listKindNumber, const GxRtti& rtti);
144 void killAll(void);
146 void setAttributeAll(GxUnitBase::ATTRIBUTE attribute, b32 enable);
148 void setViewportAll(RENDER_VIEW view, b32 enable);
150 void killByIncludeRtti( const GxRtti& rtti );
151
153 GX_FORCE_INLINE void pushCmdBuildSpaceGraph( void ){ _stopBuildSpaceGraph = false; }
154
156 void storeUnit(GxArrayClassBase& storeList, GxArrayClassBase& parentList, const GxArrayClassBase& unitArray, u32 attributeCondition = GxUnitBase::ATTRIBUTE_NOSERIALIZE, b32 enableCondition = true);
158 void restoreUnit(GxArrayClassBase& storeList, GxArrayClassBase& parentList);
159
160#if GX_DEVELOP
162 void copyUnit(GxUnitBase* pUnit);
164 GxUnitBase* pasteUnit(void);
165#endif //GX_DEVELOP
166
167private:
169 void beginBuildSpaceGraph( void );
171 void finishBuildSpaceGraph( void );
172
176 void buildSpaceGraph( void );
177
179 void resetCullingFlags(void);
181 void hierarchCalCullingOctree(void);
183 void cullingObjects(void);
185 void cullingMeshes(void);
187 void cullingInstances(void);
188
190 void preAsyncUpdate(u32 listProcessNumber);
192 void asyncUpdate(u32 listProcessNumber);
194 void postAsyncUpdate(u32 listProcessNumber);
196 void sequentialUpdate(u32 listProcessNumber);
198 void forceAsyncUpdate(u32 listProcessNumber);
199
201 void render(u32 listProcessNumber);
202
204 void updateAddList(void);
206 void updateRootUnitList(void);
208 virtual void removeUnit(GxUnitBase* pUnit);
209
211 void storeUnitSub(GxArrayClassBase& storeList, GxArrayClassBase& parentList, GxUnitBase* pUnit, u32 attributeCondition, b32 enableCondition);
212
214 //-----------------------------------------------------------
216 //-----------------------------------------------------------
218public:
220 template<typename T> T* getUnit(void) { return static_cast<T*>(getUnit(T::GX_RTTI)); }
222 template<typename T> void getUnitList(GxArrayClassBase& unitList) { getUnitList(T::GX_RTTI, unitList); }
224 template<typename T> void getDerivedUnitList(GxArrayClassBase& unitList) { getDerivedUnitList(T::GX_RTTI, unitList); }
225private:
227 GxUnitBase* getUnit(const GxRtti& rtti);
229 void getUnitList(const GxRtti& rtti, GxArrayClassBase& unitList);
231 void getDerivedUnitList(const GxRtti& rtti, GxArrayClassBase& unitList);
232public:
234 GX_FORCE_INLINE virtual u32 getProcessListNumber(const GxRtti& /*rtti*/) { return 0; }
236 GX_FORCE_INLINE virtual u32 getKindListNumber(const GxRtti& /*rtti*/) { return 0; }
238 void addToListOctreeBuildReserve(GxUnitLocate* pUnitLocate);
241
243 constexpr u32 getListProcessMax(void) const { return _listProcessMax; }
245 GxListUnit* getListProcess(u32 listProcessNumber) const;
247 GxListUnit* getListProcess(GxUnitBase* pUnit) const;
248#if GX_DEVELOP
250 void changeListProcess(GxUnitBase* pUnit, u32 listNumber);
251#endif //GX_DEVELOP
253 GxListUnit* getListKind(u32 listKindNumber) const;
255 GxListUnit* getListKind(GxUnitBase* pUnit) const;
257 void changeListKind(GxUnitBase* pUnit, u32 listNumber);
259 GX_FORCE_INLINE const GxArrayClassBase& getRootUnitList(void) const { return _rootUnitList; }
261 u32 getUnitCount(void) const;
262#if GX_DEVELOP
264 GxUnitBase* getSelectedUnit(void);
266 GxUnitBase* getSelectedUnitFromTail(void);
267
269 GX_FORCE_INLINE void setGlobalFrustum( GxShapeFrustum& frustum ){ _testFrustum = frustum; _setFrustum = false; }
270#endif //GX_DEVELOP
272 GX_FORCE_INLINE b32 isSlow(void){ return _slowTimeRatio < 1.0f ? true : false; }
274 GX_FORCE_INLINE void setSlow(f32 timeRatio = 1.0f){ _slowTimeRatio = GxMath::getClamp(timeRatio, 0.0f, 1.0f); }
275
277 constexpr s32 getSpaceGraphLebel(void) const { return _sceneGraphLevel; }
279 constexpr s32 getSpaceGraphLebel(void) { return _sceneGraphLevel; }
281 constexpr void setSpaceGraphLebel( s32 value ) { _sceneGraphLevel = value; }
282
284 constexpr GxOctree* getSpaceGraphPointer(void) const { return _pSpaceGraph; }
286 constexpr GxOctree* getSpaceGraphPointer(void) { return _pSpaceGraph; }
287
288
290 GX_FORCE_INLINE const b32 isCullingSkip(void) const { return _cullingSkip; }
292 GX_FORCE_INLINE b32 isCullingSkip(void) { return _cullingSkip; }
294 GX_FORCE_INLINE void startSkipCulling(void) { _cullingSkip = true; }
296 GX_FORCE_INLINE void stopSkipCulling(void) { _cullingSkip = false; }
297
298#if GX_DEVELOP
300 GX_FORCE_INLINE const b32 isDebugDrawCulling(void) const { return _CullingDebugDraw; }
302 GX_FORCE_INLINE b32 isDebugDrawCulling(void) { return _CullingDebugDraw; }
304 GX_FORCE_INLINE void setDebugDrawCulling( b32 value ) { _CullingDebugDraw = value; }
305#endif //GX_DEVELOP
306
308 virtual GxUnitCameraBase* getMainCamera(void) { return nullptr; }
309
311 //-------------------------------------------------------------
313 //-------------------------------------------------------------
315private:
316 GxListUnit* _pListOctreeBuildReserve;
317 GxListUnit** _ppListProcess;
318 GxListUnit* _pListKind[LIST_KIND_MAX];
319 GxAddList* _pListAddTop[GxThread::HARDWARE_THREAD_MAX];
320 GxAddList* _pListAddBottom[GxThread::HARDWARE_THREAD_MAX];
321 GxArrayClassBase _rootUnitList;
322 f32 _slowTimeRatio;
323 s32 _sceneGraphLevel;
324 u32 _listProcessMax;
325
326 GxOtFrustumCulling* _pSpaceGraph;
327 b32* _pOctreeCullingState;
331 b32 _stopBuildSpaceGraph;
332 b32 _cullingSkip;
333 GxShapeFrustum _cullfrustum;
334 GxArray _hitArray;
335#if GX_DEVELOP
336 b32 _setFrustum;
337 GxShapeFrustum _testFrustum;
338 b32 _CullingDebugDraw;
339#endif //GX_DEVELOP
340
342};
343
344//===========================================================================
346//===========================================================================
348{
349 //-------------------------------------------------------------
351 //-------------------------------------------------------------
353public:
354 // RTTI宣言
356 // ClassBase継承クラス用禁止宣言
358 using __type = GxUnitBase*;
359
361 static constexpr u32 LIST_DISCONNECT = GxMath::VALUE_64 - 1;
363 static constexpr u32 NAME_LENGTH = GxMath::VALUE_32;
364
366 //-------------------------------------------------------------
368 //-------------------------------------------------------------
370
372 GxListUnit(void);
374 ~GxListUnit(void) override {}
376 b32 initialize(u32 number);
377
379 //-----------------------------------------------------------
381 //-----------------------------------------------------------
383
385 GX_INLINE const __type& operator[](u32 i) const { GX_ASSERT(i < _count, "count error."); return reinterpret_cast<__type*>(_ppObject)[i]; }
387 GX_INLINE __type& operator[](u32 i) { GX_ASSERT(i < _count, "count error."); return reinterpret_cast<__type*>(_ppObject)[i]; }
389 GX_FORCE_INLINE GxArray::Iterator<__type> begin(void) const { return { &reinterpret_cast<__type*>(_ppObject)[0] }; }
391 GX_FORCE_INLINE GxArray::Iterator<__type> end(void) const { return { &reinterpret_cast<__type*>(_ppObject)[_count] }; }
392
394 constexpr u32 getNumber(void) const { return _number; }
396 GX_FORCE_INLINE void setUpdate(b32 enable) { _updateFlag = enable; }
398 GX_FORCE_INLINE b32 isUpdate(void) const { return _updateFlag; }
400 GX_FORCE_INLINE b32 isRender(void) const { return _renderFlag; }
402 constexpr void setDeltaTimeFactor(f32 deltaTimeFactor){ _deltaTimeFactor = deltaTimeFactor; }
404 constexpr f32 getDeltaTimeFactor(void) const { return _deltaTimeFactor; }
406 constexpr void setDeltaTime(f32 deltaTime){ _deltaTime = deltaTime; }
408 constexpr f32 getDeltaTime(void) const { return _deltaTime; }
410 constexpr void setDeltaTimeRatio(f32 deltaTimeRatio){ _deltaTimeRatio = deltaTimeRatio; }
412 constexpr f32 getDeltaTimeRatio(void) const { return _deltaTimeRatio; }
414 GX_FORCE_INLINE b32 isCheckToUpdateForceAsync(void) const { return _isCheckToUpdateForceAsync; }
416 GX_FORCE_INLINE void setCheckToUpdateForceAsync(b32 flag) { _isCheckToUpdateForceAsync = flag; }
417#if GX_DEVELOP
419 constexpr GX_CSTR getListName(void) const { return _name; }
420#endif //GX_DEVELOP
422 //GX_FORCE_INLINE GxIterator begin(void){ return GxIterator(this); }
424 //GX_FORCE_INLINE GxIterator end(void){ GxIterator iterator(this); iterator.getBottom(); iterator.getNext(); return iterator; }
425
427 //-----------------------------------------------------------
429 //-----------------------------------------------------------
431
433 void killAll(void);
435 void setAttributeAll(GxUnitBase::ATTRIBUTE attribute, b32 enable);
437 void setRenderAll(b32 enable);
439 void setViewportAll(RENDER_VIEW view, b32 enable);
440
442 //-----------------------------------------------------------
444 //-----------------------------------------------------------
446private:
447 u32 _number;
448 b32 _updateFlag;
449 b32 _renderFlag;
450 f32 _deltaTimeFactor;
451 f32 _deltaTime;
452 f32 _deltaTimeRatio;
453 b32 _isCheckToUpdateForceAsync;
454#if GX_DEVELOP
455 GX_CHAR _name[NAME_LENGTH];
456#endif //GX_DEVELOP
457
459};
460
461//===========================================================================
463//===========================================================================
465{
466 //-------------------------------------------------------------
468 //-------------------------------------------------------------
470public:
472 // ClassBase継承クラス用禁止宣言
474
475
476 //-------------------------------------------------------------
478 //-------------------------------------------------------------
480
482 GxAddList(void) : GxListClassBase(GxAllocatorList::ALLOCATOR_TYPE::UNIT){}
484 ~GxAddList(void) override {}
485protected:
487 GxNodeClassBase* allocNode(void) override;
488
490};
491
492//===========================================================================
494//===========================================================================
496{
497 //-------------------------------------------------------------
499 //-------------------------------------------------------------
501public:
503 // ClassBase継承クラス用禁止宣言
505 // new, delete定義
506 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::UNIT)
507
508
509 //-------------------------------------------------------------
511 //-------------------------------------------------------------
513
515 GxAddNode(void) : _listProcessNumber(0), _listKindNumber(0){}
517 ~GxAddNode(void) override {}
518
520 //-------------------------------------------------------------
522 //-------------------------------------------------------------
524
526 constexpr u32 getListProcessNumber(void) const { return _listProcessNumber; }
528 constexpr void setListProcessNumber(u32 number){ _listProcessNumber = number; }
530 constexpr u32 getListKindNumber(void) const { return _listKindNumber; }
532 constexpr void setListKindNumber(u32 number){ _listKindNumber = number; }
533
535 //-------------------------------------------------------------
537 //-------------------------------------------------------------
539private:
540 u32 _listProcessNumber;
541 u32 _listKindNumber;
542
544};
545
546// アクセスインターフェース
547GX_FORCE_INLINE GxSysUnit* getGxSysUnit(void){ return GxSysUnit::getSingletonPointer(); }
548
549GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
RENDER_VIEW
描画優先度(ビュー)
Definition GxRender.h:442
メモリアロケータリスト
Definition GxAllocator.h:347
配列クラス
Definition GxArrayClassBase.h:18
u32 _count
配列数
Definition GxArrayClassBase.h:135
GxClassBaseRoot ** _ppObject
配列データ
Definition GxArrayClassBase.h:133
配列クラス
Definition GxArray.h:18
オブジェクト基底クラス
Definition GxBase.h:88
JSON解析用ノード
Definition GxJson.h:108
GxClassBase用連結リストノードクラス
Definition GxListClassBase.h:132
GxClassBase用連結リストクラス
Definition GxListClassBase.h:18
static constexpr u32 VALUE_32
32
Definition GxMath.h:124
static GX_FORCE_INLINE T getClamp(const T value, const T min, const T max)
最小値・最大値で切り落とす
Definition GxMath.h:170
static constexpr u32 VALUE_64
64
Definition GxMath.h:125
8分木クラス
Definition GxOctree.h:39
カリング用オクツリー、階層的カリングを行う
Definition GxOtFrustumCulling.h:159
実行時型情報クラス
Definition GxRtti.h:154
角錐台
Definition GxShape.h:531
システム基底クラス
Definition GxSysBase.h:18
ユニット追加連結リストクラス
Definition GxSysUnit.h:465
~GxAddList(void) override
デストラクタ
Definition GxSysUnit.h:484
GxNodeClassBase * allocNode(void) override
Nodeのメモリ確保
Definition GxSysUnit.cpp:1790
ユニット連結リストノードクラス
Definition GxSysUnit.h:496
constexpr void setListKindNumber(u32 number)
分類リスト番号を設定
Definition GxSysUnit.h:532
constexpr u32 getListProcessNumber(void) const
処理リスト番号を取得
Definition GxSysUnit.h:526
constexpr void setListProcessNumber(u32 number)
処理リスト番号を設定
Definition GxSysUnit.h:528
constexpr u32 getListKindNumber(void) const
分類リスト番号を取得
Definition GxSysUnit.h:530
~GxAddNode(void) override
デストラクタ
Definition GxSysUnit.h:517
ユニット連結リストクラス
Definition GxSysUnit.h:348
static constexpr u32 NAME_LENGTH
リスト名の最大長
Definition GxSysUnit.h:363
constexpr void setDeltaTime(f32 deltaTime)
デルタタイムを設定
Definition GxSysUnit.h:406
b32 initialize(u32 number)
初期化
Definition GxSysUnit.cpp:1695
GX_FORCE_INLINE b32 isRender(void) const
描画のON/OFFの判定
Definition GxSysUnit.h:400
GX_FORCE_INLINE void setUpdate(b32 enable)
updateの設定
Definition GxSysUnit.h:396
constexpr f32 getDeltaTimeFactor(void) const
デルタタイム係数を取得
Definition GxSysUnit.h:404
~GxListUnit(void) override
デストラクタ
Definition GxSysUnit.h:374
constexpr void setDeltaTimeRatio(f32 deltaTimeRatio)
デルタタイム比率を設定
Definition GxSysUnit.h:410
constexpr f32 getDeltaTimeRatio(void) const
デルタタイム比率を取得
Definition GxSysUnit.h:412
static constexpr u32 LIST_DISCONNECT
未接続リスト
Definition GxSysUnit.h:361
GX_INLINE const __type & operator[](u32 i) const
const配列
Definition GxSysUnit.h:385
void killAll(void)
ユニットを全て削除
Definition GxSysUnit.cpp:1709
GX_FORCE_INLINE GxArray::Iterator< __type > begin(void) const
先頭を取得
Definition GxSysUnit.h:389
void setViewportAll(RENDER_VIEW view, b32 enable)
ビューポートに全て設定
Definition GxSysUnit.cpp:1772
GX_FORCE_INLINE b32 isUpdate(void) const
updateのON/OFFの判定
Definition GxSysUnit.h:398
GX_FORCE_INLINE GxArray::Iterator< __type > end(void) const
終端を取得
Definition GxSysUnit.h:391
void setAttributeAll(GxUnitBase::ATTRIBUTE attribute, b32 enable)
アトリビュートを全て設定
Definition GxSysUnit.cpp:1739
constexpr f32 getDeltaTime(void) const
デルタタイムを取得
Definition GxSysUnit.h:408
GxListUnit(void)
コンストラクタ
Definition GxSysUnit.cpp:1676
void setRenderAll(b32 enable)
描画フラグを全て設定
Definition GxSysUnit.cpp:1757
constexpr u32 getNumber(void) const
リスト番号取得
Definition GxSysUnit.h:394
GX_FORCE_INLINE void setCheckToUpdateForceAsync(b32 flag)
forceAsyncUpdateの処理リスト単位の更新チェックをするか設定
Definition GxSysUnit.h:416
GX_INLINE __type & operator[](u32 i)
配列
Definition GxSysUnit.h:387
constexpr void setDeltaTimeFactor(f32 deltaTimeFactor)
デルタタイム係数を設定
Definition GxSysUnit.h:402
GX_FORCE_INLINE b32 isCheckToUpdateForceAsync(void) const
forceAsyncUpdateの処理リスト単位の更新チェックをするか判定
Definition GxSysUnit.h:414
ユニットシステムクラス
Definition GxSysUnit.h:64
GxUnitBase * createAndAddBottom(u32 listProcessNumber, u32 listKindNumber, const GxRtti &rtti)
指定リストの終端にユニットを追加作成
Definition GxSysUnit.cpp:379
virtual void asyncUpdate(void)
全リストの並列更新
Definition GxSysUnit.cpp:250
GX_FORCE_INLINE GxUnitBase * createAndAddBottom(const GxRtti &rtti)
リストの終端にユニットを追加作成
Definition GxSysUnit.h:137
GX_FORCE_INLINE const b32 isCullingSkip(void) const
現在カリングされた回数を取得
Definition GxSysUnit.h:290
void drawSpaceGraph(void)
空間木の描画
Definition GxSysUnit.cpp:1267
void terminate(void) override
終了
Definition GxSysUnit.cpp:153
T * getUnit(void)
指定RTTIのユニットを1つ取得
Definition GxSysUnit.h:220
virtual void postAsyncUpdate(void)
全リストの並列更新(asyncUpdateの後に実行)
Definition GxSysUnit.cpp:269
void initializeSpaceGraph(u32 level, GxVector3 &min, GxVector3 &max, u32 levelNonShared=0, u32 numCsecShared=10)
Definition GxSysUnit.cpp:114
void deleteFromListOctreeBuildReserve(GxUnitLocate *pUnitLocate)
8分木への追加登録用リストからユニットを削除
Definition GxSysUnit.cpp:1195
virtual GX_FORCE_INLINE u32 getKindListNumber(const GxRtti &)
ユニット生成時の種別リスト番号を取得
Definition GxSysUnit.h:236
virtual void sequentialUpdate(void)
全リストの逐次更新
Definition GxSysUnit.cpp:300
constexpr void setSpaceGraphLebel(s32 value)
8分木の階層レベルを設定
Definition GxSysUnit.h:281
virtual void onAddUnit(GxUnitBase *pUnit, u32 listProcessNumber, u32 listKindNumber, const GxRtti &rtti)
ユニット追加時のコールバック
Definition GxSysUnit.cpp:431
constexpr s32 getSpaceGraphLebel(void)
8分木の階層レベルを取得
Definition GxSysUnit.h:279
virtual GxUnitCameraBase * getMainCamera(void)
メインのカメラユニットを取得
Definition GxSysUnit.h:308
constexpr u32 getListProcessMax(void) const
処理用リストの最大数を取得
Definition GxSysUnit.h:243
void getUnitList(GxArrayClassBase &unitList)
指定RTTIのユニットリストを取得
Definition GxSysUnit.h:222
GX_FORCE_INLINE void stopSkipCulling(void)
現在カリングされた回数を取得
Definition GxSysUnit.h:296
void restoreUnit(GxArrayClassBase &storeList, GxArrayClassBase &parentList)
ユニットを復元
Definition GxSysUnit.cpp:1049
void addBottom(GxUnitBase *pUnit, u32 listProcessNumber, u32 listKindNumber)
指定リストの終端にユニットを追加(デシリアライズ時のみ使用可)
Definition GxSysUnit.cpp:403
void killByIncludeRtti(const GxRtti &rtti)
指定Rttiを継承したユニットをkill
Definition GxSysUnit.cpp:473
GxListUnit * getListKind(u32 listKindNumber) const
分類用リストを取得
Definition GxSysUnit.cpp:866
void terminateSpaceGraph(void)
空間木を開放(ステージ変更時などに使用)
Definition GxSysUnit.cpp:134
void getDerivedUnitList(GxArrayClassBase &unitList)
指定RTTI継承のユニットリストを取得
Definition GxSysUnit.h:224
void storeUnit(GxArrayClassBase &storeList, GxArrayClassBase &parentList, const GxArrayClassBase &unitArray, u32 attributeCondition=GxUnitBase::ATTRIBUTE_NOSERIALIZE, b32 enableCondition=true)
ユニットを退避
Definition GxSysUnit.cpp:1000
constexpr GxOctree * getSpaceGraphPointer(void) const
8分木を取得
Definition GxSysUnit.h:284
virtual void preAsyncUpdate(void)
全リストの並列更新(asyncUpdateの前に実行)
Definition GxSysUnit.cpp:222
GX_FORCE_INLINE void startSkipCulling(void)
現在カリングされた回数を取得
Definition GxSysUnit.h:294
void killAll(void)
全リストのユニットを全て削除
Definition GxSysUnit.cpp:440
void addToListOctreeBuildReserve(GxUnitLocate *pUnitLocate)
8分木への追加登録用リストにユニットを追加
Definition GxSysUnit.cpp:1169
static constexpr u32 LIST_KIND_MAX
分類用リストの最大数
Definition GxSysUnit.h:81
virtual void render(void)
全リストの描画
Definition GxSysUnit.cpp:333
GxSysUnit(void)
コンストラクタ
Definition GxSysUnit.cpp:47
~GxSysUnit(void) override
デストラクタ
Definition GxSysUnit.h:92
constexpr GxOctree * getSpaceGraphPointer(void)
8分木を取得
Definition GxSysUnit.h:286
void setViewportAll(RENDER_VIEW view, b32 enable)
ビューポートに全て設定
Definition GxSysUnit.cpp:533
constexpr s32 getSpaceGraphLebel(void) const
8分木の階層レベルを取得
Definition GxSysUnit.h:277
GX_FORCE_INLINE void pushCmdBuildSpaceGraph(void)
空間木構築に次のPostAsync後にユニットが格納されるようにフラグセット
Definition GxSysUnit.h:153
GX_FORCE_INLINE const GxArrayClassBase & getRootUnitList(void) const
ルートユニットリストを取得
Definition GxSysUnit.h:259
GxListUnit * getListProcess(u32 listProcessNumber) const
処理用リストを取得
Definition GxSysUnit.cpp:817
GX_FORCE_INLINE void setSlow(f32 timeRatio=1.0f)
スロー時間比率を設定
Definition GxSysUnit.h:274
u32 getUnitCount(void) const
全リストのユニット数を取得
Definition GxSysUnit.cpp:909
void setAttributeAll(GxUnitBase::ATTRIBUTE attribute, b32 enable)
アトリビュートを全て設定
Definition GxSysUnit.cpp:520
GX_FORCE_INLINE b32 isCullingSkip(void)
現在カリングされた回数を取得
Definition GxSysUnit.h:292
void changeListKind(GxUnitBase *pUnit, u32 listNumber)
分類用リストを変更
Definition GxSysUnit.cpp:896
virtual GX_FORCE_INLINE u32 getProcessListNumber(const GxRtti &)
ユニット生成時の処理リスト番号を取得
Definition GxSysUnit.h:234
b32 initialize(const GxClassBase *pInitializeInformation) override
初期化
Definition GxSysUnit.cpp:72
GxUnitBase * createAndAddTop(u32 listProcessNumber, u32 listKindNumber, const GxRtti &rtti)
指定リストの先頭にユニットを追加作成
Definition GxSysUnit.cpp:354
virtual void forceAsyncUpdate(void)
全リストの強制並列更新(pause中も実行)
Definition GxSysUnit.cpp:318
static constexpr u32 THREAD_MAX
スレッドの最大数
Definition GxThread.h:188
ユニット基礎クラス
Definition GxUnitBase.h:45
ATTRIBUTE
属性
Definition GxUnitBase.h:71
@ ATTRIBUTE_NOSERIALIZE
シリアライズしない
Definition GxUnitBase.h:76
カメラ基礎クラス
Definition GxUnitCameraBase.h:20
初期化クラス
Definition GxSysUnit.h:18
u32 _listProcessMax
処理用リストの最大数
Definition GxSysUnit.h:55
座標ユニット基礎クラス
Definition GxUnitLocate.h:23
シングルトン基礎クラス
Definition GxSingleton.h:19
static constexpr GxSysUnit * getSingletonPointer(void)
Definition GxSingleton.h:59
イテレータ
Definition GxArray.h:35
ジョブを投げる際に使うスレッド関数用のパラメータ
Definition GxOtFrustumCulling.h:295
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173