aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDLL/debugoverlay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDLL/debugoverlay.cpp')
-rw-r--r--NorthstarDLL/debugoverlay.cpp62
1 files changed, 14 insertions, 48 deletions
diff --git a/NorthstarDLL/debugoverlay.cpp b/NorthstarDLL/debugoverlay.cpp
index 96da2f38..ef456867 100644
--- a/NorthstarDLL/debugoverlay.cpp
+++ b/NorthstarDLL/debugoverlay.cpp
@@ -1,17 +1,9 @@
#include "pch.h"
-#include "debugoverlay.h"
#include "dedicated.h"
#include "cvar.h"
+#include "vector.h"
-struct Vector3
-{
- float x, y, z;
-};
-
-struct QAngle
-{
- float x, y, z, w;
-};
+AUTOHOOK_INIT()
enum OverlayType_t
{
@@ -40,7 +32,7 @@ struct OverlayBase_t
int m_nServerCount; // Latch server count, too
float m_flEndTime; // When does this box go away
OverlayBase_t* m_pNextOverlay;
- __int64 m_pUnk;
+ void* m_pUnk;
};
struct OverlayLine_t : public OverlayBase_t
@@ -76,37 +68,18 @@ struct OverlayBox_t : public OverlayBase_t
int a;
};
-// this is in cvar.h, don't need it here
-/*class Color
-{
- public:
- Color(int r, int g, int b, int a)
- {
- _color[0] = (unsigned char)r;
- _color[1] = (unsigned char)g;
- _color[2] = (unsigned char)b;
- _color[3] = (unsigned char)a;
- }
-
- private:
- unsigned char _color[4];
-};*/
-
static HMODULE sEngineModule;
-typedef void (*DrawOverlayType)(OverlayBase_t* a1);
-DrawOverlayType DrawOverlay;
-
typedef void (*RenderLineType)(Vector3 v1, Vector3 v2, Color c, bool bZBuffer);
static RenderLineType RenderLine;
-
typedef void (*RenderBoxType)(Vector3 vOrigin, QAngle angles, Vector3 vMins, Vector3 vMaxs, Color c, bool bZBuffer, bool bInsideOut);
static RenderBoxType RenderBox;
-
static RenderBoxType RenderWireframeBox;
-// engine.dll+0xABCB0
-void __fastcall DrawOverlayHook(OverlayBase_t* pOverlay)
+// clang-format off
+AUTOHOOK(DrawOverlay, engine.dll + 0xABCB0,
+void, __fastcall, (OverlayBase_t * pOverlay))
+// clang-format on
{
EnterCriticalSection((LPCRITICAL_SECTION)((char*)sEngineModule + 0x10DB0A38)); // s_OverlayMutex
@@ -151,24 +124,17 @@ void __fastcall DrawOverlayHook(OverlayBase_t* pOverlay)
LeaveCriticalSection((LPCRITICAL_SECTION)((char*)sEngineModule + 0x10DB0A38));
}
-void InitialiseDebugOverlay(HMODULE baseAddress)
+ON_DLL_LOAD_CLIENT_RELIESON("engine.dll", DebugOverlay, ConVar, (CModule module))
{
- if (IsDedicatedServer())
- return;
-
- HookEnabler hook;
- ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0xABCB0, &DrawOverlayHook, reinterpret_cast<LPVOID*>(&DrawOverlay));
-
- RenderLine = reinterpret_cast<RenderLineType>((char*)baseAddress + 0x192A70);
-
- RenderBox = reinterpret_cast<RenderBoxType>((char*)baseAddress + 0x192520);
-
- RenderWireframeBox = reinterpret_cast<RenderBoxType>((char*)baseAddress + 0x193DA0);
+ AUTOHOOK_DISPATCH()
- sEngineModule = baseAddress;
+ RenderLine = module.Offset(0x192A70).As<RenderLineType>();
+ RenderBox = module.Offset(0x192520).As<RenderBoxType>();
+ RenderWireframeBox = module.Offset(0x193DA0).As<RenderBoxType>();
+ sEngineModule = reinterpret_cast<HMODULE>(module.m_nAddress);
// not in g_pCVar->FindVar by this point for whatever reason, so have to get from memory
- ConVar* Cvar_enable_debug_overlays = (ConVar*)((char*)baseAddress + 0x10DB0990);
+ ConVar* Cvar_enable_debug_overlays = module.Offset(0x10DB0990).As<ConVar*>();
Cvar_enable_debug_overlays->SetValue(false);
Cvar_enable_debug_overlays->m_pszDefaultValue = (char*)"0";
Cvar_enable_debug_overlays->AddFlags(FCVAR_CHEAT);