From b9d5965c0366fd7777c3627b9fbf89c8526ac0ec Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 4 Nov 2026 01:13:09 +0100 Subject: World tint: colour dynamic props through m_clrRender Prop model materials (VertexLitGeneric) ignore IMaterial::ColorModulate: the engine feeds StudioRender the per-entity render colour (m_clrRender) on every draw, so the material-side tint never showed on crates and other props. Resolve m_clrRender from DT_BaseEntity and, every 10 ms while World tint and Props are enabled, write the prop colour into every entity whose model is under models/props. Restore white once when disabled. --- src/netvars.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/netvars.cpp') diff --git a/src/netvars.cpp b/src/netvars.cpp index 238af70..4578e52 100644 --- a/src/netvars.cpp +++ b/src/netvars.cpp @@ -92,6 +92,8 @@ static void collect_netvars(uintptr_t table, uintptr_t base_off, int depth) { } else if (strcmp(pname2, "m_hActiveWeapon") == 0 && g_net.activeweapon < 0) { g_net.activeweapon = (int)(base_off + (uint32_t)poff); + } else if (strcmp(pname2, "m_clrRender") == 0 && g_net.clr_render < 0) { + g_net.clr_render = (int)(base_off + (uint32_t)poff); } else if (strcmp(pname2, "m_iTeamNum") == 0 && g_net.teamnum < 0) { g_net.teamnum = (int)(base_off + (uint32_t)poff); } else if (strcmp(pname2, "m_vecOrigin") == 0 && g_net.origin < 0) { @@ -273,9 +275,9 @@ void resolve_netvars() { logf("netvars: flags=%d velocity=%d movetype=%d health=%d maxhealth=%d " "teamnum=%d origin=%d viewoffset=%d mins=%d maxs=%d lifeste=%d " "modelindex=%d absvelocity=%d activeweapon=%d owner=%d " - "weapon_owner=%d", + "weapon_owner=%d clr_render=%d", g_net.flags, g_net.velocity, g_net.movetype, g_net.health, g_net.maxhealth, g_net.teamnum, g_net.origin, g_net.viewoffset, g_net.mins, g_net.maxs, g_net.lifestate, g_net.modelindex, - g_net.absvelocity, g_net.activeweapon); + g_net.absvelocity, g_net.activeweapon, g_net.clr_render); } -- cgit v1.2.3