rendered paste body Client.qhsConstruction1 = trap_R_RegisterShader("textures/sfx/construction");
void trap_AddRefEntityToScene_Hook( refEntity_t *re )
{
if ( !Settings.bHookActive )
return;
if ( !re )
return;
// models only
if ( re->frame && re->entityNum < MAX_CLIENTS && IsTargetPlayer( re->entityNum ) )
{
//Log("e(%3i, %3i, %3i, %3i, %3i, %3i)", re->entityNum, re->reType, re->skinNum, re->frameModel, re->hModel, re->reFlags);
re->shaderRGBA[0] = 0xFF;
re->shaderRGBA[1] = 0xFF;
re->shaderRGBA[2] = 0xFF;
re->shaderRGBA[3] = 0xFF;
// chams: all
if ( Cvars.models.integer )
{
// Crystal
if ( Cvars.models.integer == 1 || Cvars.models.integer == 2 && !IsTargetTeamMate( re->entityNum ) )
IsTargetVisible( re->entityNum ) ? re->customShader = Client.qhsConstruction2 : re->customShader = Client.qhsConstruction1;
// QUAD
else if ( Cvars.models.integer == 3 )
{
if ( IsTargetVisible( re->entityNum ) )
IsTargetTeamMate( re->entityNum ) ? re->customShader = Client.qhsQuadGreen : re->customShader = Client.qhsQuadRed;
else
IsTargetTeamMate( re->entityNum ) ? re->customShader = Client.qhsQuadYellow : re->customShader = Client.qhsQuadPurple;
}
// simple colors
else if ( Cvars.models.integer == 4 )
{
if ( IsTargetVisible( re->entityNum ) )
IsTargetTeamMate( re->entityNum ) ? re->customShader = Client.qhsFriendVisible : re->customShader = Client.qhsEnemyVisible;
else
IsTargetTeamMate( re->entityNum ) ? re->customShader = Client.qhsFriendInvisible : re->customShader = Client.qhsEnemyInvisible;
}
// DEAD
if ( IsTargetDeath( re->entityNum ) ) re->customShader = Client.qhsEntityOnFire1;
}
// wh
if ( Cvars.wall.integer ) re->renderfx |= RF_DEPTHHACK | RF_NOSHADOW;
}
// missiles
else if ( re->entityNum > MAX_CLIENTS && re->entityNum < MAX_GENTITIES )
{
// QUAD chams
if ( Cvars.models.integer == 3 )
{
IsTargetVisible( re->entityNum ) ? re->customShader = Client.qhsQuadWeapon1 : re->customShader = Client.qhsQuadWeapon2;
}
// Crystal
else if ( Cvars.models.integer ) re->customShader = Client.qhsConstruction1;
}
#ifdef USECAMFEATURE
// save for cam's
if ( Cvars.mortar.integer || Cvars.grenade.integer || Cvars.rifle.integer )
refEntities.push_back( *re );
#endif
}