[FIRE-35102] - Hover text appearing through walls in Beta 7.1.12.7737

Issue was caused by miss understanding of how LLGLDepthTest works.
While it is in scope it applies, but if you have it wrapped in an if statement, it only applies within the if statement.

Change: LLHUDText::render()
Changed to have inline ? statement instead of if/else block.
master
minerjr 2025-01-28 07:47:18 -04:00
parent 28210b4351
commit f3ca2ccc7e
1 changed files with 6 additions and 10 deletions

View File

@ -129,16 +129,12 @@ void LLHUDText::render()
// If the current text object is highighed and the use hover highlight feature is enabled, then
// disable writing to the depth buffer
static LLCachedControl<bool> mbUseHoverHighlight(gSavedSettings, "FSHudTextUseHoverHighlight");
if (mbUseHoverHighlight && mbIsHighlighted)
{
LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE);
}
//Else, use the standard method of writing to the depth buffer for all other non-highlighted text objects
else
{
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
}
// </FS:minerjr> [FIRE-35019]
// <FS:minerjr> [FIRE-35102] - Hover text appearing through walls in Beta 7.1.12.7737
// So it turns out when the LLGLDepthTest object goes out of scope, it reverts back
// to the previous state. So by having the LLGLDepthTest in the if statements, they were
// never applied.
LLGLDepthTest gls_depth(mbUseHoverHighlight && mbIsHighlighted ? GL_FALSE : GL_TRUE, GL_FALSE);
// </FS:minerjr> [FIRE-35019] </FS:minerjr> [FIRE-35102]
//LLGLDisable gls_stencil(GL_STENCIL_TEST);
renderText();
}