diff options
Diffstat (limited to 'gmod/paint_traverse.cpp')
| -rw-r--r-- | gmod/paint_traverse.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gmod/paint_traverse.cpp b/gmod/paint_traverse.cpp new file mode 100644 index 0000000..c3dd47e --- /dev/null +++ b/gmod/paint_traverse.cpp @@ -0,0 +1,28 @@ +#include "hooks.hpp" +#include "renderer.hpp" +#include "context.hpp" +#include "console.hpp" +#include "base_cheat.hpp" +#include "math.hpp" +#include "settings.hpp" + +void __fastcall hooks::paint_traverse( void* ecx_, void* edx_, unsigned int panel, bool force_repaint, bool allowforce ) { + static auto paint_traverse_o = g_gmod.m_panel->get_old_function< decltype( &hooks::paint_traverse ) >( 41 ); + if( g_gmod.m_panic ) return paint_traverse_o( ecx_, 0, panel, force_repaint, allowforce ); + + + static uint32_t mat_system_top_panel{ }; + if( !mat_system_top_panel ) { + auto panel_name = g_gmod.m_panel( )->GetName( panel ); + auto panel_hash = hash::fnv1a( panel_name ); + if( fnv( "MatSystemTopPanel" ) == panel_hash ) { + mat_system_top_panel = panel; + } + } + + if( panel && panel == mat_system_top_panel ) { + g_gmod.m_panel( )->SetMouseInputEnabled( panel, g_settings.menu.open ); + } + + return paint_traverse_o( ecx_, 0, panel, force_repaint, allowforce ); +}
\ No newline at end of file |
