Skip to content

Commit 2282943

Browse files
authored
Add engineStreamingFreeUpMemory (PR #2268)
1 parent b170d02 commit 2282943

File tree

4 files changed

+13
-1
lines changed

4 files changed

+13
-1
lines changed

Client/game_sa/CStreamingSA.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,11 @@ void CStreamingSA::ReinitStreaming()
153153
reinitStreaming();
154154
}
155155

156+
void CStreamingSA::MakeSpaceFor(std::uint32_t memoryToCleanInBytes)
157+
{
158+
(reinterpret_cast<void(__cdecl*)(std::uint32_t)>(0x40E120))(memoryToCleanInBytes);
159+
}
160+
156161
std::uint32_t CStreamingSA::GetMemoryUsed() const
157162
{
158163
return *reinterpret_cast<std::uint32_t*>(0x8E4CB4);

Client/game_sa/CStreamingSA.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class CStreamingSA : public CStreaming
2929
void RequestSpecialModel(DWORD model, const char* szTexture, DWORD channel);
3030
void ReinitStreaming();
3131
CStreamingInfo* GetStreamingInfoFromModelId(uint32 id);
32+
void MakeSpaceFor(std::uint32_t memoryToCleanInBytes) override;
3233
std::uint32_t GetMemoryUsed() const override;
3334

3435
private:

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
#include "StdInc.h"
1313
#include <lua/CLuaFunctionParser.h>
1414

15+
void EngineStreamingFreeUpMemory(std::uint32_t bytes)
16+
{
17+
g_pGame->GetStreaming()->MakeSpaceFor(bytes);
18+
}
19+
1520
std::uint32_t EngineStreamingGetUsedMemory()
1621
{
1722
return g_pGame->GetStreaming()->GetMemoryUsed();
@@ -56,7 +61,7 @@ void CLuaEngineDefs::LoadFunctions()
5661
{"engineGetObjectGroupPhysicalProperty", EngineGetObjectGroupPhysicalProperty},
5762
{"engineRestoreObjectGroupPhysicalProperties", EngineRestoreObjectGroupPhysicalProperties},
5863
{"engineRestreamWorld", ArgumentParser<EngineRestreamWorld>},
59-
64+
{"engineStreamingFreeUpMemory", ArgumentParser<EngineStreamingFreeUpMemory>},
6065
{"engineStreamingGetUsedMemory", ArgumentParser<EngineStreamingGetUsedMemory>},
6166

6267
// CLuaCFunctions::AddFunction ( "engineReplaceMatchingAtomics", EngineReplaceMatchingAtomics );

Client/sdk/game/CStreaming.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,6 @@ class CStreaming
4848
virtual void RequestSpecialModel(DWORD model, const char* szTexture, DWORD channel) = 0;
4949
virtual CStreamingInfo* GetStreamingInfoFromModelId(uint32 id) = 0;
5050
virtual void ReinitStreaming() = 0;
51+
virtual void MakeSpaceFor(std::uint32_t memoryToCleanInBytes) = 0;
5152
virtual std::uint32_t GetMemoryUsed() const = 0;
5253
};

0 commit comments

Comments
 (0)