OROCHI
 
Loading...
Searching...
No Matches
GxP2PDuplicateManager.h
Go to the documentation of this file.
1//===========================================================================
11//===========================================================================
12#pragma once
13
14GX_P2P_NAMESPACE_BEGIN()
15
16//---- クラス宣言
19
20//===========================================================================
22//===========================================================================
24{
25 //-----------------------------------------------------------
27 //-----------------------------------------------------------
29public:
31 static constexpr u32 DUPLICATE_TABLE_MAX = MyNetLib::MyNetworkDuplicate::DUPLICATE_TABLE_MAX;
32
34 //-----------------------------------------------------------
36 //-----------------------------------------------------------
38public:
42 virtual ~GxP2PDuplicateManager(void);
43
45 b32 initialize(GxP2PSessionManager* pSessionManager);
47 b32 terminate(void);
48
50 //-----------------------------------------------------------
52 //-----------------------------------------------------------
54public:
56 b32 update(u32 elapsedTime);
57
59 b32 registerObject(GxP2PDuplicateObjectBase* pObject);
61 void unregisterObject(GxP2PDuplicateObjectBase* pObject);
62
63private:
65 static b32 duplicateCheckCallback(nu32 index);
66
68 //-----------------------------------------------------------
70 //-----------------------------------------------------------
72protected:
74 MyNetLib::MyNetworkDuplicate _duplicateInstance;
75
76 static GxP2PDuplicateObjectBase* _pDuplicateObjectArray[DUPLICATE_TABLE_MAX];
77
79};
80
81//===========================================================================
83//===========================================================================
85{
86 //-----------------------------------------------------------
88 //-----------------------------------------------------------
90public:
91 // RTTI定義
93 // ClassBase継承クラス用禁止宣言
95
96 // フレンド宣言
97 friend class GxP2PDuplicateManager;
98
100 //-----------------------------------------------------------
102 //-----------------------------------------------------------
104public:
108 GxP2PDuplicateObjectBase(void* pOriginal, void* pDiffrence, u32 size, b32 isReliable = true);
110 ~GxP2PDuplicateObjectBase(void) override;
111
113 virtual void initialize(void* pOriginal, void* pDiffrence, u32 size, b32 isReliable = true);
114
116 //-----------------------------------------------------------
118 //-----------------------------------------------------------
120public:
122 virtual void update(void* pData);
123
125 virtual b32 registerDuplicateObject(u32 myStationId, u32 masterStationId);
127 virtual void unregisterDuplicateObject(void);
128
129private:
131 GX_FORCE_INLINE virtual b32 checkDuplicate(void) { return true; }
132
134 //-----------------------------------------------------------
136 //-----------------------------------------------------------
138
139public:
141 GX_FORCE_INLINE b32 isRegistered(void) const { return _isRegistered; }
143 GX_FORCE_INLINE b32 isMaster(void) const { return (_myStationId == _masterIndex); }
145 constexpr u32 getStationId(void) const { return _myStationId; }
147 constexpr u32 getMasterIndex(void) const { return _masterIndex; }
149 constexpr u32 getDataSize(void) const { return _size; }
151 constexpr u32 getUpdateSpan(void) const { return _updateSpan; }
153 constexpr void setUpdateSpan(u32 span) { _updateSpan = span; }
154
156 //-----------------------------------------------------------
158 //-----------------------------------------------------------
160private:
161 u32 _myStationId;
162 u32 _masterIndex;
163 void* _pOriginal;
164 void* _pDiffrence;
165 u32 _size;
166 u32 _objectIndex;
167 b32 _isReliable;
168 b32 _isRegistered;
169 u32 _updateSpan;
170 u32 _updateCounter;
171
173};
174
175GX_P2P_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
オブジェクト基底クラス
Definition GxBase.h:88
複製オブジェクト通信マネージャクラス
Definition GxP2PDuplicateManager.h:24
MyNetLib::MyNetworkDuplicate _duplicateInstance
メモリ同期インスタンス
Definition GxP2PDuplicateManager.h:74
GxP2PSessionManager * _pSessionManager
セッションマネージャポインタ
Definition GxP2PDuplicateManager.h:73
複製オブジェクト基底クラス
Definition GxP2PDuplicateManager.h:85
virtual void update(void *pData)
更新
Definition GxP2PDuplicateManager.cpp:225
constexpr u32 getMasterIndex(void) const
マスターステーションID取得
Definition GxP2PDuplicateManager.h:147
virtual b32 registerDuplicateObject(u32 myStationId, u32 masterStationId)
複製オブジェクト登録
Definition GxP2PDuplicateManager.cpp:254
constexpr u32 getDataSize(void) const
オブジェクトデータサイズ取得
Definition GxP2PDuplicateManager.h:149
GX_FORCE_INLINE b32 isMaster(void) const
マスターオブジェクト判定
Definition GxP2PDuplicateManager.h:143
constexpr u32 getStationId(void) const
自ステーションID取得
Definition GxP2PDuplicateManager.h:145
constexpr void setUpdateSpan(u32 span)
更新フレーム間隔設定
Definition GxP2PDuplicateManager.h:153
constexpr u32 getUpdateSpan(void) const
更新フレーム間隔取得
Definition GxP2PDuplicateManager.h:151
~GxP2PDuplicateObjectBase(void) override
デストラクタ
Definition GxP2PDuplicateManager.cpp:199
virtual void initialize(void *pOriginal, void *pDiffrence, u32 size, b32 isReliable=true)
初期化
Definition GxP2PDuplicateManager.cpp:211
virtual void unregisterDuplicateObject(void)
複製オブジェクト解除
Definition GxP2PDuplicateManager.cpp:272
GxP2PDuplicateObjectBase(void)
デフォルトコンストラクタ
Definition GxP2PDuplicateManager.cpp:160
GX_FORCE_INLINE b32 isRegistered(void) const
マネージャ登録済み判定
Definition GxP2PDuplicateManager.h:141
P2Pセッションマネージャ
Definition GxP2PSessionManager.h:123
32bitブーリアン
Definition GxDefine.h:173