2022-01-23 18:26:48 +01:00
# pragma once
2022-08-09 11:53:33 +02:00
# include <public/iengine.h>
2022-01-23 18:26:48 +01:00
2023-09-09 15:12:58 +02:00
class CEngine ;
/* ==== CENGINE ======================================================================================================================================================= */
2024-01-02 15:21:36 +01:00
inline bool ( * CEngine__Frame ) ( CEngine * thisp ) ;
2023-09-09 15:12:58 +02:00
extern CEngine * g_pEngine ;
extern IEngine : : QuitState_t * gsm_Quitting ;
2022-08-09 11:53:33 +02:00
class CEngine : public IEngine
2022-01-23 18:26:48 +01:00
{
2023-04-10 22:35:41 +02:00
public :
2024-01-01 16:46:02 +01:00
static bool _Frame ( CEngine * const thisp ) ;
2023-09-09 15:12:58 +02:00
inline IEngine : : QuitState_t GetQuitting ( ) const { return * gsm_Quitting ; }
2023-04-10 22:35:41 +02:00
2022-03-07 13:15:45 +01:00
private :
EngineState_t m_nDLLState ;
EngineState_t m_nNextDLLState ;
2022-08-09 11:53:33 +02:00
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 ;
2022-01-23 18:26:48 +01:00
} ;
2024-01-01 16:46:02 +01:00
static_assert ( sizeof ( CEngine ) = = 0x40 ) ;
2022-01-23 18:26:48 +01:00
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
2022-05-13 14:53:25 +02:00
class VEngine : public IDetour
2022-01-23 18:26:48 +01:00
{
2022-04-11 01:44:30 +02:00
virtual void GetAdr ( void ) const
2022-01-23 18:26:48 +01:00
{
2024-01-02 15:21:36 +01:00
LogFunAdr ( " CEngine::Frame " , CEngine__Frame ) ;
LogVarAdr ( " g_Engine " , g_pEngine ) ;
LogVarAdr ( " sm_Quitting " , gsm_Quitting ) ;
2023-04-10 22:35:41 +02:00
}
virtual void GetFun ( void ) const
{
2024-01-02 15:21:36 +01:00
g_GameDll . FindPatternSIMD ( " 48 8B C4 55 56 48 8D A8 ?? ?? ?? ?? 48 81 EC ?? ?? ?? ?? 0F 29 70 B8 " ) . GetPtr ( CEngine__Frame ) ;
2022-01-23 18:26:48 +01:00
}
2022-04-18 03:35:08 +02:00
virtual void GetVar ( void ) const
{
2022-12-01 22:44:55 +01:00
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 * > ( ) ;
2023-09-09 15:12:58 +02:00
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 * > ( ) ;
2022-04-18 03:35:08 +02:00
}
2022-04-11 01:44:30 +02:00
virtual void GetCon ( void ) const { }
2023-11-26 13:21:20 +01:00
virtual void Detour ( const bool bAttach ) const ;
2022-01-23 18:26:48 +01:00
} ;
///////////////////////////////////////////////////////////////////////////////