Skip to content

Commit ed3047e

Browse files
committed
add new object streamer functions
more tools for developers
1 parent 5470ec5 commit ed3047e

File tree

5 files changed

+68
-1
lines changed

5 files changed

+68
-1
lines changed

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,11 @@ CClientGame::~CClientGame()
431431
g_pClientGame->GetManager()->GetObjectStreamer()->ResetStreamerMaxSwaps();
432432
g_pClientGame->GetManager()->GetObjectStreamer()->ResetStreamerFurthestInLimit();
433433

434+
// Reset streamer limits
435+
CClientObjectManager* pObjectManager = g_pClientGame->GetObjectManager();
436+
if (pObjectManager)
437+
pObjectManager->ResetMaxObjectStreamCount();
438+
434439
// Reset camera shaking
435440
g_pGame->GetCamera()->SetShakeForce(0.0f);
436441

Client/mods/deathmatch/logic/CClientObjectManager.cpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,12 @@ bool CClientObjectManager::StaticIsLowLodObjectLimitReached()
245245

246246
bool CClientObjectManager::IsObjectLimitReached()
247247
{
248-
if (IsHardObjectLimitReached() || m_uiStreamedInCount >= m_uiMaxStreamedInCount)
248+
if (IsHardObjectLimitReached() || (m_uiCustomMaxStreamedInCount > 0 && m_uiStreamedInCount >= m_uiCustomMaxStreamedInCount) ||
249+
m_uiStreamedInCount >= m_uiMaxStreamedInCount)
250+
{
249251
return true;
252+
}
253+
250254
return false;
251255
}
252256

@@ -333,3 +337,24 @@ bool CClientObjectManager::Exists(CClientObject* pObject)
333337
{
334338
return ListContains(m_Objects, pObject);
335339
}
340+
341+
void CClientObjectManager::SetMaxObjectStreamCount(int cValue)
342+
{
343+
if (cValue < m_uiMaxStreamedInCount)
344+
throw std::invalid_argument("Custom limit must be greater than or equal to default limit");
345+
346+
m_uiCustomMaxStreamedInCount = cValue;
347+
}
348+
349+
void CClientObjectManager::ResetMaxObjectStreamCount()
350+
{
351+
m_uiCustomMaxStreamedInCount = 0;
352+
}
353+
354+
int CClientObjectManager::GetMaxObjectStreamCount()
355+
{
356+
if (m_uiCustomMaxStreamedInCount > 0)
357+
return m_uiCustomMaxStreamedInCount;
358+
359+
return m_uiMaxStreamedInCount;
360+
}

Client/mods/deathmatch/logic/CClientObjectManager.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ class CClientObjectManager
4242
bool IsObjectLimitReached();
4343
bool IsLowLodObjectLimitReached();
4444
bool IsHardObjectLimitReached();
45+
int GetMaxObjectStreamCount();
46+
void SetMaxObjectStreamCount(int customCount);
47+
void ResetMaxObjectStreamCount();
4548

4649
void RestreamObjects(unsigned short usModel);
4750
void RestreamAllObjects();
@@ -58,6 +61,7 @@ class CClientObjectManager
5861
int m_iEntryInfoNodeEntries;
5962
int m_iPointerNodeDoubleLinkEntries;
6063
uint m_uiMaxStreamedInCount;
64+
uint m_uiCustomMaxStreamedInCount;
6165
uint m_uiMaxLowLodStreamedInCount;
6266
uint m_uiStreamedInCount;
6367
uint m_uiLowLodStreamedInCount;

Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,9 @@ void CLuaEngineDefs::LoadFunctions()
159159
{"engineStreamingResetMaxSwaps", ArgumentParser<EngineStreamingResetMaxSwaps>},
160160
{"engineStreamingSetFurthestInLimit", ArgumentParser<EngineStreamingSetFurthestInLimit>},
161161
{"engineStreamingResetFurthestInLimit", ArgumentParser<EngineStreamingResetFurthestInLimit>},
162+
{"engineSetMaxObjectStreamCount", ArgumentParser<EngineSetMaxObjectStreamCount>},
163+
{"engineResetMaxObjectStreamCount", ArgumentParser<EngineResetMaxObjectStreamCount>},
164+
{"engineGetMaxObjectStreamCount", ArgumentParser<EngineGetMaxObjectStreamCount>},
162165

163166

164167
// CLuaCFunctions::AddFunction ( "engineReplaceMatchingAtomics", EngineReplaceMatchingAtomics );
@@ -230,6 +233,9 @@ void CLuaEngineDefs::AddClass(lua_State* luaVM)
230233
lua_classfunction(luaVM, "resetMaxSwaps", "engineStreamingResetMaxSwaps");
231234
lua_classfunction(luaVM, "setFurthestInLimit", "engineStreamingSetFurthestInLimit");
232235
lua_classfunction(luaVM, "resetFurthestInLimit", "engineStreamingResetFurthestInLimit");
236+
lua_classfunction(luaVM, "setMaxObjectStreamCount", "engineSetMaxObjectStreamCount");
237+
lua_classfunction(luaVM, "getMaxObjectStreamCount", "engineGetMaxObjectStreamCount");
238+
lua_classfunction(luaVM, "resetMaxObjectStreamCount", "engineResetMaxObjectStreamCount");
233239

234240
lua_classvariable(luaVM, "memorySize", "engineStreamingSetMemorySize", "engineStreamingGetMemorySize");
235241
lua_classvariable(luaVM, "bufferSize", "engineStreamingSetBufferSize", "engineStreamingGetBufferSize");
@@ -2668,3 +2674,26 @@ void CLuaEngineDefs::EngineStreamingResetFurthestInLimit()
26682674
{
26692675
g_pClientGame->GetManager()->GetObjectStreamer()->ResetStreamerFurthestInLimit();
26702676
}
2677+
2678+
void CLuaEngineDefs::EngineSetMaxObjectStreamCount(int limit)
2679+
{
2680+
CClientObjectManager* pObjectManager = g_pClientGame->GetObjectManager();
2681+
if (pObjectManager)
2682+
pObjectManager->SetMaxObjectStreamCount(limit);
2683+
}
2684+
2685+
void CLuaEngineDefs::EngineResetMaxObjectStreamCount()
2686+
{
2687+
CClientObjectManager* pObjectManager = g_pClientGame->GetObjectManager();
2688+
if (pObjectManager)
2689+
pObjectManager->ResetMaxObjectStreamCount();
2690+
}
2691+
2692+
int CLuaEngineDefs::EngineGetMaxObjectStreamCount()
2693+
{
2694+
CClientObjectManager* pObjectManager = g_pClientGame->GetObjectManager();
2695+
if (pObjectManager)
2696+
return pObjectManager->GetMaxObjectStreamCount();
2697+
2698+
return 0;
2699+
}

Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ class CLuaEngineDefs : public CLuaDefs
107107
static void EngineStreamingSetFurthestInLimit(int limit);
108108
static void EngineStreamingResetFurthestInLimit();
109109

110+
static void EngineSetMaxObjectStreamCount(int limit);
111+
static void EngineResetMaxObjectStreamCount();
112+
static int EngineGetMaxObjectStreamCount();
113+
110114
private:
111115
static void AddEngineColClass(lua_State* luaVM);
112116
static void AddEngineTxdClass(lua_State* luaVM);

0 commit comments

Comments
 (0)