Skip to content

Commit

Permalink
Supported TriAPI triggers for software engine too
Browse files Browse the repository at this point in the history
  • Loading branch information
SmileyAG committed Dec 14, 2023
1 parent ab44d54 commit a546abf
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
4 changes: 2 additions & 2 deletions cl_dll/entity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ int CL_DLLEXPORT HUD_AddEntity( int type, struct cl_entity_s *ent, const char *m

// show triggers that would be transferred from server-side with specific value in renderfx to differ it from other entities
// update: there is a new implementation of displaying triggers that allows you to display even when planes is stripped due to optimizations in updated map compiler
// so for hardware engine this code will only work if the value 2 is specified in the cvar
if ((ent->curstate.rendermode == kRenderTransColor) && (ent->curstate.renderfx == kRenderFxTrigger) && (gHUD.m_pShowServerTriggers->value == 2.0f || (!IEngineStudio.IsHardware && gHUD.m_pShowServerTriggers->value > 0)) && !gHUD.IsTriggerForSinglePlayer(ent->curstate.rendercolor))
// so this code will only work if the value 2 is specified in the cvar, but it should not be deleted imo
if ((ent->curstate.rendermode == kRenderTransColor) && (ent->curstate.renderfx == kRenderFxTrigger) && (gHUD.m_pShowServerTriggers->value == 2.0f) && !gHUD.IsTriggerForSinglePlayer(ent->curstate.rendercolor))
ent->curstate.renderamt = std::min(255.0f, std::max(0.0f, gHUD.m_pShowServerTriggersAlpha->value));

// hide corpses option
Expand Down
28 changes: 17 additions & 11 deletions cl_dll/tri.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,28 +196,34 @@ void CL_DLLEXPORT HUD_DrawTransparentTriangles( void )
g_pParticleMan->Update();

// Draw server-side triggers with TriAPI instead
if (IEngineStudio.IsHardware())
static bool init = true;
static HSPRITE white_sprite = 0;

if (init)
{
glDisable(GL_TEXTURE_2D);
white_sprite = gEngfuncs.pfnSPR_Load("sprites/white.spr");
init = false;
}

if (white_sprite == 0)
return;

if (gEngfuncs.pTriAPI->SpriteTexture(const_cast<model_s*>(gEngfuncs.GetSpritePointer(white_sprite)), 0))
{
gHUD.SetMapName(map_name, ARRAYSIZE(map_name));
if ((gHUD.m_pShowServerTriggers->value > 0) && (gHUD.m_pShowServerTriggers->value != 2.0f))
{
gHUD.SetMapName(map_name, ARRAYSIZE(map_name));
UpdateServerTriggers();
DrawServerTriggers();
}

glEnable(GL_TEXTURE_2D);
gEngfuncs.pTriAPI->RenderMode(kRenderNormal);

if ((gHUD.m_pShowServerTriggers->value > 0) && (gHUD.m_pShowServerTriggers->value != 2.0f))
// Saved old map name in static variable to differ it with new map name
if (map_name[0])
{
// Saved old map name in static variable to differ it with new map name
if (map_name[0])
{
memset(map_name_old, 0, sizeof(map_name_old));
strncpy(map_name_old, map_name, sizeof(map_name_old) - 1);
}
memset(map_name_old, 0, sizeof(map_name_old));
strncpy(map_name_old, map_name, sizeof(map_name_old) - 1);
}
}
}

0 comments on commit a546abf

Please sign in to comment.