summaryrefslogtreecommitdiffstats
path: root/src/netvars.cpp
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-04 01:13:09 +0100
committersalmonik <salmonik@tuta.io>2026-11-04 01:13:09 +0100
commitb9d5965c0366fd7777c3627b9fbf89c8526ac0ec (patch)
tree65a1213b902f2a3352ecc19dc76be396e80f63f3 /src/netvars.cpp
parentSkybox image: swap red/blue in the uploaded texture (diff)
downloadhl2h-b9d5965c0366fd7777c3627b9fbf89c8526ac0ec.tar.gz
hl2h-b9d5965c0366fd7777c3627b9fbf89c8526ac0ec.zip
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.
Diffstat (limited to 'src/netvars.cpp')
-rw-r--r--src/netvars.cpp6
1 files changed, 4 insertions, 2 deletions
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) {
92 } else if (strcmp(pname2, "m_hActiveWeapon") == 0 && 92 } else if (strcmp(pname2, "m_hActiveWeapon") == 0 &&
93 g_net.activeweapon < 0) { 93 g_net.activeweapon < 0) {
94 g_net.activeweapon = (int)(base_off + (uint32_t)poff); 94 g_net.activeweapon = (int)(base_off + (uint32_t)poff);
95 } else if (strcmp(pname2, "m_clrRender") == 0 && g_net.clr_render < 0) {
96 g_net.clr_render = (int)(base_off + (uint32_t)poff);
95 } else if (strcmp(pname2, "m_iTeamNum") == 0 && g_net.teamnum < 0) { 97 } else if (strcmp(pname2, "m_iTeamNum") == 0 && g_net.teamnum < 0) {
96 g_net.teamnum = (int)(base_off + (uint32_t)poff); 98 g_net.teamnum = (int)(base_off + (uint32_t)poff);
97 } else if (strcmp(pname2, "m_vecOrigin") == 0 && g_net.origin < 0) { 99 } else if (strcmp(pname2, "m_vecOrigin") == 0 && g_net.origin < 0) {
@@ -273,9 +275,9 @@ void resolve_netvars() {
273 logf("netvars: flags=%d velocity=%d movetype=%d health=%d maxhealth=%d " 275 logf("netvars: flags=%d velocity=%d movetype=%d health=%d maxhealth=%d "
274 "teamnum=%d origin=%d viewoffset=%d mins=%d maxs=%d lifeste=%d " 276 "teamnum=%d origin=%d viewoffset=%d mins=%d maxs=%d lifeste=%d "
275 "modelindex=%d absvelocity=%d activeweapon=%d owner=%d " 277 "modelindex=%d absvelocity=%d activeweapon=%d owner=%d "
276 "weapon_owner=%d", 278 "weapon_owner=%d clr_render=%d",
277 g_net.flags, g_net.velocity, g_net.movetype, g_net.health, 279 g_net.flags, g_net.velocity, g_net.movetype, g_net.health,
278 g_net.maxhealth, g_net.teamnum, g_net.origin, g_net.viewoffset, 280 g_net.maxhealth, g_net.teamnum, g_net.origin, g_net.viewoffset,
279 g_net.mins, g_net.maxs, g_net.lifestate, g_net.modelindex, 281 g_net.mins, g_net.maxs, g_net.lifestate, g_net.modelindex,
280 g_net.absvelocity, g_net.activeweapon); 282 g_net.absvelocity, g_net.activeweapon, g_net.clr_render);
281} 283}