summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2018-09-25 21:14:25 +0200
committernavewindre <boneyaard@gmail.com>2018-09-25 21:14:25 +0200
commit85434a853957ae5315594f72561dd1a745549727 (patch)
tree7617f0f92f118bfa7a00349855c792e90ad18fa4
parentb7375a7582db7ba2ee8a4dacfab226a3fd8fc514 (diff)
a
-rw-r--r--internal_rewrite/csm_shadows.cpp10
-rw-r--r--internal_rewrite/factory.hpp2
-rw-r--r--internal_rewrite/hooks.cpp2
-rw-r--r--internal_rewrite/hooks.hpp1
-rw-r--r--internal_rewrite/interface.cpp3
-rw-r--r--internal_rewrite/interface.hpp1
-rw-r--r--internal_rewrite/internal_rewrite.vcxproj1
-rw-r--r--internal_rewrite/internal_rewrite.vcxproj.filters3
-rw-r--r--internal_rewrite/settings.hpp1
-rw-r--r--internal_rewrite/ui.h1
10 files changed, 23 insertions, 2 deletions
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 @@
<ClCompile Include="chams.cpp" />
<ClCompile Include="console.cpp" />
<ClCompile Include="context.cpp" />
+ <ClCompile Include="csm_shadows.cpp" />
<ClCompile Include="c_base_player.cpp" />
<ClCompile Include="c_base_weapon.cpp" />
<ClCompile Include="d3d.cpp" />
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 @@
<ClCompile Include="hde32.cpp">
<Filter>hooks\hookers</Filter>
</ClCompile>
+ <ClCompile Include="csm_shadows.cpp">
+ <Filter>hooks</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="factory.hpp">
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 );