12GX_CORE_NAMESPACE_BEGIN()
96#if (GX_OCTREE_TYPE == GX_OCTREE_POOL)
102 void initializeSpaceGraph(u32 level, GxVector3& min, GxVector3& max);
128 virtual void render(
void);
169 void beginBuildSpaceGraph(
void );
171 void finishBuildSpaceGraph(
void );
176 void buildSpaceGraph(
void );
179 void resetCullingFlags(
void);
181 void hierarchCalCullingOctree(
void);
183 void cullingObjects(
void);
185 void cullingMeshes(
void);
187 void cullingInstances(
void);
201 void render(u32 listProcessNumber);
204 void updateAddList(
void);
206 void updateRootUnitList(
void);
220 template<
typename T> T*
getUnit(
void) {
return static_cast<T*
>(
getUnit(T::GX_RTTI)); }
250 void changeListProcess(
GxUnitBase* pUnit, u32 listNumber);
253 GxListUnit* getListKind(u32 listKindNumber) const;
269 GX_FORCE_INLINE
void setGlobalFrustum(
GxShapeFrustum& frustum ){ _testFrustum = frustum; _setFrustum =
false; }
272 GX_FORCE_INLINE b32 isSlow(void){ return _slowTimeRatio < 1.0f ? true : false; }
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; }
316 GxListUnit* _pListOctreeBuildReserve;
317 GxListUnit** _ppListProcess;
319 GxAddList* _pListAddTop[GxThread::HARDWARE_THREAD_MAX];
320 GxAddList* _pListAddBottom[GxThread::HARDWARE_THREAD_MAX];
323 s32 _sceneGraphLevel;
327 b32* _pOctreeCullingState;
331 b32 _stopBuildSpaceGraph;
338 b32 _CullingDebugDraw;
419 constexpr GX_CSTR getListName(
void)
const {
return _name; }
450 f32 _deltaTimeFactor;
453 b32 _isCheckToUpdateForceAsync;
487 GxNodeClassBase*
allocNode(
void)
override;
515 GxAddNode(
void) : _listProcessNumber(0), _listKindNumber(0){}
540 u32 _listProcessNumber;
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 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