OROCHI
 
Loading...
Searching...
No Matches
GxSysUnit Class Reference

ユニットシステムクラス More...

#include <GxSysUnit.h>

Inheritance diagram for GxSysUnit:
Collaboration diagram for GxSysUnit:

Classes

class  GxAddList
 ユニット追加連結リストクラス More...
 
class  GxAddNode
 ユニット連結リストノードクラス More...
 
class  GxListUnit
 ユニット連結リストクラス More...
 

Public Member Functions

初期化
 GxSysUnit (void)
 コンストラクタ
 
 ~GxSysUnit (void) override
 デストラクタ
 
b32 initialize (const GxClassBase *pInitializeInformation) override
 初期化
 
void initializeSpaceGraph (u32 level, GxVector3 &min, GxVector3 &max, u32 levelNonShared=0, u32 numCsecShared=10)
 
void terminate (void) override
 終了
 
void terminateSpaceGraph (void)
 空間木を開放(ステージ変更時などに使用)
 
- Public Member Functions inherited from GxSysBase
template<typename T >
T * getModule (void) const
 モジュールを取得
 
 GxSysBase (void)
 デフォルトコンストラクタ
 
 ~GxSysBase (void) override
 デストラクタ
 
virtual void update (void)
 更新
 
b32 isLocked (void)
 クリティカルセクションのロック状態を確認する
 
void sleep (f32 time)
 スリープ(スクリプト用)
 
- Public Member Functions inherited from GxClassBase
constexpr GxClassBase (void)
 コンストラクタ
 
constexpr GxClassBase (const GxClassBase &base)
 コピーコンストラクタ
 
 ~GxClassBase (void) override
 デストラクタ
 
- Public Member Functions inherited from GxClassBaseRoot
constexpr GxClassBaseRoot (void)
 コンストラクタ
 
constexpr GxClassBaseRoot (const GxClassBaseRoot &)
 コピーコンストラクタ
 
virtual ~GxClassBaseRoot (void)
 デストラクタ
 
constexpr GxClassBaseRootoperator= (const GxClassBaseRoot &)
 代入演算子
 
virtual GxRttigetRtti (void) const =0
 Rttiの取得
 
virtual GX_FORCE_INLINE const GxTypedObjectgetDefaultObject (void)
 デフォルトオブジェクトを取得
 
GX_FORCE_INLINE b32 isDefaultObject (void)
 デフォルトオブジェクト判定
 
- Public Member Functions inherited from SingletonBase< GxSysUnit >
 SingletonBase (void)
 コンストラクタ
 
 ~SingletonBase (void)
 デストラクタ
 

定義

class GxUnitBase
 
static constexpr u32 LIST_KIND_MAX = GxMath::VALUE_32
 分類用リストの最大数
 

操作

virtual void preAsyncUpdate (void)
 全リストの並列更新(asyncUpdateの前に実行)
 
virtual void asyncUpdate (void)
 全リストの並列更新
 
virtual void postAsyncUpdate (void)
 全リストの並列更新(asyncUpdateの後に実行)
 
virtual void sequentialUpdate (void)
 全リストの逐次更新
 
virtual void forceAsyncUpdate (void)
 全リストの強制並列更新(pause中も実行)
 
virtual void render (void)
 全リストの描画
 
void drawSpaceGraph (void)
 空間木の描画
 
GxUnitBasecreateAndAddTop (u32 listProcessNumber, u32 listKindNumber, const GxRtti &rtti)
 指定リストの先頭にユニットを追加作成
 
GxUnitBasecreateAndAddBottom (u32 listProcessNumber, u32 listKindNumber, const GxRtti &rtti)
 指定リストの終端にユニットを追加作成
 
GX_FORCE_INLINE GxUnitBasecreateAndAddBottom (const GxRtti &rtti)
 リストの終端にユニットを追加作成
 
void addBottom (GxUnitBase *pUnit, u32 listProcessNumber, u32 listKindNumber)
 指定リストの終端にユニットを追加(デシリアライズ時のみ使用可)
 
virtual void onAddUnit (GxUnitBase *pUnit, u32 listProcessNumber, u32 listKindNumber, const GxRtti &rtti)
 ユニット追加時のコールバック
 
void killAll (void)
 全リストのユニットを全て削除
 
void setAttributeAll (GxUnitBase::ATTRIBUTE attribute, b32 enable)
 アトリビュートを全て設定
 
void setViewportAll (RENDER_VIEW view, b32 enable)
 ビューポートに全て設定
 
void killByIncludeRtti (const GxRtti &rtti)
 指定Rttiを継承したユニットをkill
 
GX_FORCE_INLINE void pushCmdBuildSpaceGraph (void)
 空間木構築に次のPostAsync後にユニットが格納されるようにフラグセット
 
void storeUnit (GxArrayClassBase &storeList, GxArrayClassBase &parentList, const GxArrayClassBase &unitArray, u32 attributeCondition=GxUnitBase::ATTRIBUTE_NOSERIALIZE, b32 enableCondition=true)
 ユニットを退避
 
void restoreUnit (GxArrayClassBase &storeList, GxArrayClassBase &parentList)
 ユニットを復元
 

アクセサ

template<typename T >
T * getUnit (void)
 指定RTTIのユニットを1つ取得
 
template<typename T >
void getUnitList (GxArrayClassBase &unitList)
 指定RTTIのユニットリストを取得
 
template<typename T >
void getDerivedUnitList (GxArrayClassBase &unitList)
 指定RTTI継承のユニットリストを取得
 
virtual GX_FORCE_INLINE u32 getProcessListNumber (const GxRtti &)
 ユニット生成時の処理リスト番号を取得
 
virtual GX_FORCE_INLINE u32 getKindListNumber (const GxRtti &)
 ユニット生成時の種別リスト番号を取得
 
void addToListOctreeBuildReserve (GxUnitLocate *pUnitLocate)
 8分木への追加登録用リストにユニットを追加
 
void deleteFromListOctreeBuildReserve (GxUnitLocate *pUnitLocate)
 8分木への追加登録用リストからユニットを削除
 
constexpr u32 getListProcessMax (void) const
 処理用リストの最大数を取得
 
GxListUnitgetListProcess (u32 listProcessNumber) const
 処理用リストを取得
 
GxListUnitgetListProcess (GxUnitBase *pUnit) const
 処理用リストを取得
 
GxListUnitgetListKind (u32 listKindNumber) const
 分類用リストを取得
 
GxListUnitgetListKind (GxUnitBase *pUnit) const
 分類用リストを取得
 
void changeListKind (GxUnitBase *pUnit, u32 listNumber)
 分類用リストを変更
 
GX_FORCE_INLINE const GxArrayClassBasegetRootUnitList (void) const
 ルートユニットリストを取得
 
u32 getUnitCount (void) const
 全リストのユニット数を取得
 
GX_FORCE_INLINE b32 isSlow (void)
 スロー設定か判定
 
GX_FORCE_INLINE void setSlow (f32 timeRatio=1.0f)
 スロー時間比率を設定
 
constexpr s32 getSpaceGraphLebel (void) const
 8分木の階層レベルを取得
 
constexpr s32 getSpaceGraphLebel (void)
 8分木の階層レベルを取得
 
constexpr void setSpaceGraphLebel (s32 value)
 8分木の階層レベルを設定
 
constexpr GxOctreegetSpaceGraphPointer (void) const
 8分木を取得
 
constexpr GxOctreegetSpaceGraphPointer (void)
 8分木を取得
 
GX_FORCE_INLINE const b32 isCullingSkip (void) const
 現在カリングされた回数を取得
 
GX_FORCE_INLINE b32 isCullingSkip (void)
 現在カリングされた回数を取得
 
GX_FORCE_INLINE void startSkipCulling (void)
 現在カリングされた回数を取得
 
GX_FORCE_INLINE void stopSkipCulling (void)
 現在カリングされた回数を取得
 
virtual GxUnitCameraBasegetMainCamera (void)
 メインのカメラユニットを取得
 

Additional Inherited Members

- Static Public Member Functions inherited from GxClassBaseRoot
static GX_FORCE_INLINE GxRtti__getStaticRtti (void)
 Rttiの取得
 
- Static Public Member Functions inherited from SingletonBase< GxSysUnit >
static GX_FORCE_INLINE GxSysUnitgetSingleton (void)
 参照を取得
 
static constexpr GxSysUnitgetSingletonPointer (void)
 ポインタを取得
 
- Protected Types inherited from GxSysBase
enum class  LOCK_TYPE { SEQUENTIAL_THREAD_SAFE , THREAD_SAFE }
 ロックタイプ More...
 
- Protected Member Functions inherited from GxSysBase
void terminateGxModules (void)
 GXモジュールの終了処理
 
void lock (LOCK_TYPE type=LOCK_TYPE::THREAD_SAFE)
 クリティカルセクションに入る
 
void unlock (LOCK_TYPE type=LOCK_TYPE::THREAD_SAFE)
 クリティカルセクションを出る
 
template<typename T >
T * addModule (void)
 モジュールを作成
 
template<typename T >
void removeModule (void)
 モジュールを削除
 

Detailed Description

ユニットシステムクラス

Member Function Documentation

◆ addBottom()

void GxSysUnit::addBottom ( GxUnitBase * pUnit,
u32 listProcessNumber,
u32 listKindNumber )

指定リストの終端にユニットを追加(デシリアライズ時のみ使用可)

Parameters
pUnit[in] 追加するユニット
listProcessNumber[in] 処理用リスト番号
listKindNumber[in] 分類用リスト番号
Here is the call graph for this function:
Here is the caller graph for this function:

◆ addToListOctreeBuildReserve()

void GxSysUnit::addToListOctreeBuildReserve ( GxUnitLocate * pUnitLocate)

8分木への追加登録用リストにユニットを追加

Parameters
pUnit[in]
Here is the call graph for this function:
Here is the caller graph for this function:

◆ changeListKind()

void GxSysUnit::changeListKind ( GxUnitBase * pUnit,
u32 listNumber )

分類用リストを変更

Parameters
pUnit[in] ユニット
listNumber[in] 変更後のリスト番号
Here is the call graph for this function:

◆ createAndAddBottom()

GxUnitBase * GxSysUnit::createAndAddBottom ( u32 listProcessNumber,
u32 listKindNumber,
const GxRtti & rtti )

指定リストの終端にユニットを追加作成

Parameters
listProcessNumber[in] 処理用リスト番号
listKindNumber[in] 分類用リスト番号
rtti[in] RTTI
Returns
追加ユニット
Here is the call graph for this function:
Here is the caller graph for this function:

◆ createAndAddTop()

GxUnitBase * GxSysUnit::createAndAddTop ( u32 listProcessNumber,
u32 listKindNumber,
const GxRtti & rtti )

指定リストの先頭にユニットを追加作成

Parameters
listProcessNumber[in] 処理用リスト番号
listKindNumber[in] 分類用リスト番号
rtti[in] RTTI
Returns
追加ユニット
Here is the call graph for this function:

◆ deleteFromListOctreeBuildReserve()

void GxSysUnit::deleteFromListOctreeBuildReserve ( GxUnitLocate * pUnitLocate)

8分木への追加登録用リストからユニットを削除

Parameters
pUnitLocate[in] 削除するユニット
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getListKind() [1/2]

GxSysUnit::GxListUnit * GxSysUnit::getListKind ( GxUnitBase * pUnit) const

分類用リストを取得

Parameters
pUnit[in] ユニット
Returns
ユニットリスト

◆ getListKind() [2/2]

GxSysUnit::GxListUnit * GxSysUnit::getListKind ( u32 listKindNumber) const

分類用リストを取得

Parameters
listKindNumber[in] リスト番号
Returns
ユニットリスト
Here is the caller graph for this function:

◆ getListProcess() [1/2]

GxSysUnit::GxListUnit * GxSysUnit::getListProcess ( GxUnitBase * pUnit) const

処理用リストを取得

Parameters
pUnit[in] ユニット
Returns
ユニットリスト

◆ getListProcess() [2/2]

GxSysUnit::GxListUnit * GxSysUnit::getListProcess ( u32 listProcessNumber) const

処理用リストを取得

Parameters
listProcessNumber[in] リスト番号
Returns
ユニットリスト
Here is the caller graph for this function:

◆ getUnitCount()

u32 GxSysUnit::getUnitCount ( void ) const

全リストのユニット数を取得

Returns
ユニット数
Here is the call graph for this function:

◆ initialize()

b32 GxSysUnit::initialize ( const GxClassBase * pInitializeInformation)
overridevirtual

初期化

Parameters
pInitializeInformation[in] 初期化情報
Returns
成功ならtrue

Reimplemented from GxSysBase.

Reimplemented in GxSysUnitFlock.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initializeSpaceGraph()

void GxSysUnit::initializeSpaceGraph ( u32 level,
GxVector3 & min,
GxVector3 & max,
u32 levelNonShared = 0,
u32 numCsecShared = 10 )

空間木を初期化(ステージ変更時などに使用) levelNonShared, numCsecSharedを変更することで、使用する同期ユニット数が変わる。

Parameters
level[in] 空間木の深さ
min[in] 空間木のAABBのmin
max[in] 空間木のAABBのmax
levelNonShare[in] 同期オブジェクトを共有しないツリー深さ。生成されるオブジェクト数は1で1+8, 2で1+8+64, 3で1+8+64+512...
numCsecShared[in] 共有同期オブジェクトの数
Here is the call graph for this function:

◆ killByIncludeRtti()

void GxSysUnit::killByIncludeRtti ( const GxRtti & rtti)

指定Rttiを継承したユニットをkill

Parameters
rtti[in] kill処理を行うUnitRTTI
Here is the call graph for this function:

◆ onAddUnit()

void GxSysUnit::onAddUnit ( GxUnitBase * pUnit,
u32 listProcessNumber,
u32 listKindNumber,
const GxRtti & rtti )
virtual

ユニット追加時のコールバック

Parameters
pUnit[in] ユニット
listProcessNumber[in] プロセス番号
listKindNumber[in] 種類番号
rtti[in] RTTI
Here is the call graph for this function:
Here is the caller graph for this function:

◆ preAsyncUpdate()

void GxSysUnit::preAsyncUpdate ( void )
virtual

全リストの並列更新(asyncUpdateの前に実行)

Reimplemented in GxSysUnitFlock.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ restoreUnit()

void GxSysUnit::restoreUnit ( GxArrayClassBase & storeList,
GxArrayClassBase & parentList )

ユニットを復元

Parameters
storeList[in,out] 復元ユニットリスト
parentList[in,out] 復元ユニットの親のリスト
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setAttributeAll()

void GxSysUnit::setAttributeAll ( GxUnitBase::ATTRIBUTE attribute,
b32 enable )

アトリビュートを全て設定

Parameters
attribute[in] 属性
enable[in] 有効ならtrue
Here is the call graph for this function:

◆ setViewportAll()

void GxSysUnit::setViewportAll ( RENDER_VIEW view,
b32 enable )

ビューポートに全て設定

Parameters
view[in] ビュー
enable[in] 有効ならtrue
Here is the call graph for this function:

◆ storeUnit()

void GxSysUnit::storeUnit ( GxArrayClassBase & storeList,
GxArrayClassBase & parentList,
const GxArrayClassBase & unitArray,
u32 attributeCondition = GxUnitBase::ATTRIBUTE_NOSERIALIZE,
b32 enableCondition = true )

ユニットを退避

Parameters
storeList[out] 退避ユニットリスト
parentList[out] 退避ユニットの親のリスト
unitArray[in] チェック対象ユニットリスト
attributeCondition[in] 属性条件(GxUnitBase::ATTRIBUTE)
enableCondition[in] 属性有効条件(一致したら退避)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ terminate()

void GxSysUnit::terminate ( void )
overridevirtual

終了

Reimplemented from GxSysBase.

Reimplemented in GxSysUnitFlock.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ terminateSpaceGraph()

void GxSysUnit::terminateSpaceGraph ( void )

空間木を開放(ステージ変更時などに使用)

Returns
成功ならtrue
Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: