YaLTeR / OpenAG

An open-source reimplementation of Adrenaline Gamer's client library.
https://j.mp/OpenAG
Other
131 stars 42 forks source link

Always render local player model when watching a POV demo with dem_forcehltv 1 #142

Closed chinese-soup closed 3 years ago

chinese-soup commented 3 years ago

Hello. Tried to make the cvar name as close to the dem_forcehltv since it only applies to this (because in a real HLTV demo, the localplayer is the HLTV proxy and therefore all players are rendered correctly) and at the same time not too long. This is basically this, but client DLL edition: https://github.com/YaLTeR/bxt-rs/issues/10 (https://github.com/advancedfx/advancedfx/blob/main/AfxHookGoldSrc/HltvFix.cpp)

Video: https://user-images.githubusercontent.com/5108747/129068510-f3c7a689-5bce-4e59-bcf7-3fd655195948.mp4

chinese-soup commented 3 years ago

Maybe it should just be always on, without a cvar? Is there any reason to ever have it off?

Looked into it and couldn't find any "wrong thirdperson behaviour" when enabling this, therefore I've changed it to be always on for when dem_forcehltv is set to 1 (which is the same as being connected to a HLTV server / watching a real HLTV demo) and demo playback is happening.

So yeah, as per my testing this shouldn't do any regression for POV demos, HLTV demos or live HLTV watching. (I've checked and the HLTV proxy "player" isn't rendered accidentally nor is the view switched to thirdperson or anything).

And if I missed something, someone will likely report it in the future.

EDIT: yeah HLTV proxy is never rendered server side so its never saved in the demos nor are other spectators so it should be safe to have this always on. :) EDIT 2: And yes, OBS_INEYE check is enough because of the fact all the other observer modes are 2 third person modes, 1 free look and 2 where pparams->onlyClientDraw = true; therefore world isn't rendered at all.

YaLTeR commented 3 years ago

Thanks!