From 76c88403d18ef01e8f15b89fcd6d09f0825a1bfc Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 4 Nov 2026 01:16:51 +0100 Subject: World tint: tint map-static props through IStudioRender Most of the crates are prop_static, which have no client entity, so writing m_clrRender only reached the three dynamic ones. Hook the StudioRender interface (VStudioRender025) on the interface object's vtable: substitute the prop colour in SetColorModulation/SetAlphaModulation while DrawModelStaticProp is drawing a models/props model, and set the modulation explicitly before the original draw in case the engine sets it just before the call. Vtable indices verified by disassembling CStudioRenderContext: 27 = three float stores from the argument pointer, 28 = one float, 30 = the DrawModelInfo_t-drawing entry with three arguments (the 2013 SDK header lists these slots five positions earlier in this build). --- src/esp.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/esp.cpp') diff --git a/src/esp.cpp b/src/esp.cpp index 9d041b0..67fbad2 100644 --- a/src/esp.cpp +++ b/src/esp.cpp @@ -1413,6 +1413,8 @@ void prop_tint_update() { static bool logged_missing = false; static bool logged_touched = false; bool on = feature_active(FEAT_WORLD_TINT) && g_tint_prop_on; + if (on) + studio_props_init(); if (!on && !applied) return; if (!g_iface.entitylist || g_net.clr_render < 0) { -- cgit v1.2.3