diff --git a/Client/game_sa/CStreamingSA.cpp b/Client/game_sa/CStreamingSA.cpp index 5a57924e32..71dda31dba 100644 --- a/Client/game_sa/CStreamingSA.cpp +++ b/Client/game_sa/CStreamingSA.cpp @@ -153,6 +153,11 @@ void CStreamingSA::ReinitStreaming() reinitStreaming(); } +void CStreamingSA::MakeSpaceFor(std::uint32_t memoryToCleanInBytes) +{ + (reinterpret_cast(0x40E120))(memoryToCleanInBytes); +} + std::uint32_t CStreamingSA::GetMemoryUsed() const { return *reinterpret_cast(0x8E4CB4); diff --git a/Client/game_sa/CStreamingSA.h b/Client/game_sa/CStreamingSA.h index 5e3029f2a4..476b42a64b 100644 --- a/Client/game_sa/CStreamingSA.h +++ b/Client/game_sa/CStreamingSA.h @@ -29,6 +29,7 @@ class CStreamingSA : public CStreaming void RequestSpecialModel(DWORD model, const char* szTexture, DWORD channel); void ReinitStreaming(); CStreamingInfo* GetStreamingInfoFromModelId(uint32 id); + void MakeSpaceFor(std::uint32_t memoryToCleanInBytes) override; std::uint32_t GetMemoryUsed() const override; private: diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 81461c1f06..43960fb962 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -12,6 +12,11 @@ #include "StdInc.h" #include +void EngineStreamingFreeUpMemory(std::uint32_t bytes) +{ + g_pGame->GetStreaming()->MakeSpaceFor(bytes); +} + std::uint32_t EngineStreamingGetUsedMemory() { return g_pGame->GetStreaming()->GetMemoryUsed(); @@ -56,7 +61,7 @@ void CLuaEngineDefs::LoadFunctions() {"engineGetObjectGroupPhysicalProperty", EngineGetObjectGroupPhysicalProperty}, {"engineRestoreObjectGroupPhysicalProperties", EngineRestoreObjectGroupPhysicalProperties}, {"engineRestreamWorld", ArgumentParser}, - + {"engineStreamingFreeUpMemory", ArgumentParser}, {"engineStreamingGetUsedMemory", ArgumentParser}, // CLuaCFunctions::AddFunction ( "engineReplaceMatchingAtomics", EngineReplaceMatchingAtomics ); diff --git a/Client/sdk/game/CStreaming.h b/Client/sdk/game/CStreaming.h index bfda19ee89..9a53f8df8c 100644 --- a/Client/sdk/game/CStreaming.h +++ b/Client/sdk/game/CStreaming.h @@ -48,5 +48,6 @@ class CStreaming virtual void RequestSpecialModel(DWORD model, const char* szTexture, DWORD channel) = 0; virtual CStreamingInfo* GetStreamingInfoFromModelId(uint32 id) = 0; virtual void ReinitStreaming() = 0; + virtual void MakeSpaceFor(std::uint32_t memoryToCleanInBytes) = 0; virtual std::uint32_t GetMemoryUsed() const = 0; };