diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-04 01:13:09 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-04 01:13:09 +0100 |
| commit | b9d5965c0366fd7777c3627b9fbf89c8526ac0ec (patch) | |
| tree | 65a1213b902f2a3352ecc19dc76be396e80f63f3 /src/netvars.cpp | |
| parent | Skybox image: swap red/blue in the uploaded texture (diff) | |
| download | hl2h-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 '')
| -rw-r--r-- | src/netvars.cpp | 6 |
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 | } |
