r5sdk/r5dev/engine/sys_engine.h

59 lines
2.1 KiB
C
Raw Normal View History

#pragma once
#include <public/iengine.h>
class CEngine;
/* ==== CENGINE ======================================================================================================================================================= */
inline bool(*CEngine__Frame)(CEngine* thisp);
extern CEngine* g_pEngine;
extern IEngine::QuitState_t* gsm_Quitting;
class CEngine : public IEngine
{
public:
2024-01-01 16:46:02 +01:00
static bool _Frame(CEngine* const thisp);
inline IEngine::QuitState_t GetQuitting() const { return *gsm_Quitting; }
2022-03-07 13:15:45 +01:00
private:
EngineState_t m_nDLLState;
EngineState_t m_nNextDLLState;
double m_flCurrentTime;
double m_flPreviousTime;
float m_flFrameTime;
float m_flPreviousFrameTime;
float m_flFilteredTime;
2024-01-01 16:46:02 +01:00
char padding[4]; // <- free data
double m_flBenchmarkTime;
bool m_bShouldPause;
bool m_bPaused;
};
2024-01-01 16:46:02 +01:00
static_assert(sizeof(CEngine) == 0x40);
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
class VEngine : public IDetour
{
virtual void GetAdr(void) const
{
LogFunAdr("CEngine::Frame", CEngine__Frame);
LogVarAdr("g_Engine", g_pEngine);
LogVarAdr("sm_Quitting", gsm_Quitting);
}
virtual void GetFun(void) const
{
g_GameDll.FindPatternSIMD("48 8B C4 55 56 48 8D A8 ?? ?? ?? ?? 48 81 EC ?? ?? ?? ?? 0F 29 70 B8").GetPtr(CEngine__Frame);
}
virtual void GetVar(void) const
{
g_pEngine = g_GameDll.FindPatternSIMD("40 53 48 83 EC 20 80 B9 ?? ?? ?? ?? ?? BB ?? ?? ?? ??").FindPatternSelf("48 8B ?? ?? ?? ?? 01", CMemory::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x3, 0x7).RCast<CEngine*>();
gsm_Quitting = g_GameDll.FindPatternSIMD("89 15 ?? ?? ?? ?? C3 CC CC CC CC CC CC CC CC CC 83 C1 F4").ResolveRelativeAddressSelf(0x2, 0x6).RCast<IEngine::QuitState_t*>();
}
virtual void GetCon(void) const { }
virtual void Detour(const bool bAttach) const;
};
///////////////////////////////////////////////////////////////////////////////