From 85434a853957ae5315594f72561dd1a745549727 Mon Sep 17 00:00:00 2001 From: navewindre Date: Tue, 25 Sep 2018 21:14:25 +0200 Subject: a --- internal_rewrite/csm_shadows.cpp | 10 ++++++++++ internal_rewrite/factory.hpp | 2 +- internal_rewrite/hooks.cpp | 2 +- internal_rewrite/hooks.hpp | 1 + internal_rewrite/interface.cpp | 3 +++ internal_rewrite/interface.hpp | 1 + internal_rewrite/internal_rewrite.vcxproj | 1 + internal_rewrite/internal_rewrite.vcxproj.filters | 3 +++ internal_rewrite/settings.hpp | 1 + internal_rewrite/ui.h | 1 + 10 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 internal_rewrite/csm_shadows.cpp diff --git a/internal_rewrite/csm_shadows.cpp b/internal_rewrite/csm_shadows.cpp new file mode 100644 index 0000000..b0aa5ed --- /dev/null +++ b/internal_rewrite/csm_shadows.cpp @@ -0,0 +1,10 @@ +#include "hooks.hpp" + +int __fastcall hooks::cl_csm_shadows_get_int( void* ecx_, void* edx_ ) { + static auto old_fn = g_csgo.m_csm_shadows->get_old_function< decltype( &cl_csm_shadows_get_int ) >( 13 ); + + if( g_settings.visuals.no_cascade_shadows ) + return 0; + + return old_fn( ecx_, edx_ ); +} \ No newline at end of file diff --git a/internal_rewrite/factory.hpp b/internal_rewrite/factory.hpp index c81c79b..d197951 100644 --- a/internal_rewrite/factory.hpp +++ b/internal_rewrite/factory.hpp @@ -11,7 +11,7 @@ //IFACE_DLLMAIN - interfaces are passed through dllmain and below code doesnt need to be ran #ifndef _DEBUG //#define IFACE_DLLMAIN -#define HEADER_MODULE +//#define HEADER_MODULE #endif #ifdef IFACE_DLLMAIN diff --git a/internal_rewrite/hooks.cpp b/internal_rewrite/hooks.cpp index 94d2cdb..3aedcb1 100644 --- a/internal_rewrite/hooks.cpp +++ b/internal_rewrite/hooks.cpp @@ -66,7 +66,7 @@ bool hooks::commit( factory::c_csgo* instance ) { instance->m_debug_show_spread->hook( 13, &hooks::debug_show_spread_get_int ); instance->m_netshowfragments->hook( 13, &hooks::net_showfragments_get_int ); - + instance->m_csm_shadows->hook( 13, &hooks::cl_csm_shadows_get_int ); paint_traverse_o = d->create_hook( &hooks::paint_traverse, instance->m_panel->get_old_function< void* >( 41 ) ); create_move_o = d->create_hook( &hooks::create_move, instance->m_clientmode->get_old_function< void* >( 24 ) ); diff --git a/internal_rewrite/hooks.hpp b/internal_rewrite/hooks.hpp index 3815c15..8911453 100644 --- a/internal_rewrite/hooks.hpp +++ b/internal_rewrite/hooks.hpp @@ -99,6 +99,7 @@ namespace hooks void __fastcall play_sound( void* ecx_, void* edx_, const char* name ); extern decltype( &play_sound ) play_sound_o; + int __fastcall cl_csm_shadows_get_int( void* ecx_, void* edx_ ); int __fastcall debug_show_spread_get_int( void* ecx_, void* edx_ ); int __fastcall net_showfragments_get_int( void* ecx_, void* edx_ ); diff --git a/internal_rewrite/interface.cpp b/internal_rewrite/interface.cpp index fb01dd9..e424c0f 100644 --- a/internal_rewrite/interface.cpp +++ b/internal_rewrite/interface.cpp @@ -120,6 +120,9 @@ bool factory::create_interfaces( c_csgo* instance, header_t* header ) { uintptr_t net_showfragments = ( uintptr_t )( instance->m_cvar( )->FindVar( xors( "net_showfragments" ) ) ); instance->create( &instance->m_netshowfragments, net_showfragments ); + uintptr_t cl_csm_shadows = ( uintptr_t )( instance->m_cvar( )->FindVar( xors( "cl_csm_shadows" ) ) ); + instance->create( &instance->m_csm_shadows, cl_csm_shadows ); + instance->listeners.bullet_impact.init( ); instance->listeners.player_hurt.init( ); instance->listeners.round_start.init( ); diff --git a/internal_rewrite/interface.hpp b/internal_rewrite/interface.hpp index 9879a4a..332971a 100644 --- a/internal_rewrite/interface.hpp +++ b/internal_rewrite/interface.hpp @@ -99,6 +99,7 @@ public: c_interface_base< cvar_t > m_debug_show_spread; c_interface_base< cvar_t > m_interpolate; c_interface_base< cvar_t > m_netshowfragments; + c_interface_base< cvar_t > m_csm_shadows; c_interface_base< ISteamClient > m_steam_client; c_interface_base< ISteamFriends > m_steam_friends; c_interface_base< IViewRenderBeams > m_beams; diff --git a/internal_rewrite/internal_rewrite.vcxproj b/internal_rewrite/internal_rewrite.vcxproj index a094bd0..09cd40c 100644 --- a/internal_rewrite/internal_rewrite.vcxproj +++ b/internal_rewrite/internal_rewrite.vcxproj @@ -387,6 +387,7 @@ + diff --git a/internal_rewrite/internal_rewrite.vcxproj.filters b/internal_rewrite/internal_rewrite.vcxproj.filters index f8816fc..977cc39 100644 --- a/internal_rewrite/internal_rewrite.vcxproj.filters +++ b/internal_rewrite/internal_rewrite.vcxproj.filters @@ -262,6 +262,9 @@ hooks\hookers + + hooks + diff --git a/internal_rewrite/settings.hpp b/internal_rewrite/settings.hpp index cf4f506..d8cc15e 100644 --- a/internal_rewrite/settings.hpp +++ b/internal_rewrite/settings.hpp @@ -346,6 +346,7 @@ namespace data con_var< bool > world_modulate{ &holder_, fnv( "visuals_world_modulate" ), false }; con_var< bool > night_mode{ &holder_, fnv( "visuals_night_mode" ), false }; con_var< bool > transparent_props{ &holder_, fnv( "visuals_transparent_props" ), false }; + con_var< bool > no_cascade_shadows{ &holder_, fnv( "visuals_no_cascade_shadows" ), false }; con_var< bool > recoil_crosshair{ &holder_, fnv( "misc_recoil_crosshair" ), false }; con_var< bool > autowall_crosshair{ &holder_, fnv( "visual_recoil_crosshair" ), false }; diff --git a/internal_rewrite/ui.h b/internal_rewrite/ui.h index 36d2f7d..3df7e23 100644 --- a/internal_rewrite/ui.h +++ b/internal_rewrite/ui.h @@ -639,6 +639,7 @@ namespace ui removals_form->add_item( std::make_shared< ui::c_checkbox >( 0, 0, xors( "no smoke" ), &g_settings.misc.no_smoke ) ); removals_form->add_item( std::make_shared< ui::c_checkbox >( 0, 0, xors( "transparent viewmodel" ), &g_settings.misc.transparent_vm ) ); removals_form->add_item( std::make_shared< ui::c_checkbox >( 0, 0, xors( "no post processing" ), &g_settings.misc.disable_post_process ) ); + removals_form->add_item( std::make_shared< ui::c_checkbox >( 0, 0, xors( "no cascade shadows" ), &g_settings.visuals.no_cascade_shadows ) ); } left_column->add_item( world_form ); -- cgit v1.2.3