Skip to content

Commit 9dbc7ad

Browse files
committed
Properly deactivate fog with non-zero density
1 parent 8075bce commit 9dbc7ad

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

dlls/effects.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4353,8 +4353,10 @@ class CEnvFog : public CPointEntity
43534353
void EXPORT FadeInDone( void );
43544354
void EXPORT FadeOutDone( void );
43554355
void SendMessages(CBaseEntity *pClient);
4356-
void SendData( Vector col, int iFadeTime, int iStartDist, int iEndDist);
4357-
void SendDataToOne(CBaseEntity *pClient, Vector col, int iFadeTime, int iStartDist, int iEndDist);
4356+
void SendData() { SendData(pev->rendercolor, 0, m_iStartDist, m_iEndDist, m_density); }
4357+
void SendDataDeactivate() { SendData(g_vecZero, 0, 0, 0, 0); }
4358+
void SendData(Vector col, int iFadeTime, int iStartDist, int iEndDist, float density);
4359+
void SendDataToOne(CBaseEntity *pClient, Vector col, int iFadeTime, int iStartDist, int iEndDist, float density);
43584360
void KeyValue( KeyValueData *pkvd );
43594361
virtual int Save( CSave &save );
43604362
virtual int Restore( CRestore &restore );
@@ -4456,14 +4458,14 @@ void CEnvFog :: TurnOn ( void )
44564458
if( m_iFadeIn )
44574459
{
44584460
pev->spawnflags |= SF_FOG_FADING;
4459-
SendData( pev->rendercolor, m_iFadeIn, m_iStartDist, m_iEndDist);
4461+
SendData( pev->rendercolor, m_iFadeIn, m_iStartDist, m_iEndDist, m_density);
44604462
pev->nextthink = gpGlobals->time + m_iFadeIn;
44614463
SetThink(&CEnvFog :: FadeInDone );
44624464
}
44634465
else
44644466
{
44654467
pev->spawnflags &= ~SF_FOG_FADING;
4466-
SendData( pev->rendercolor, 0, m_iStartDist, m_iEndDist);
4468+
SendData();
44674469
if (m_fHoldTime)
44684470
{
44694471
pev->nextthink = gpGlobals->time + m_fHoldTime;
@@ -4481,14 +4483,14 @@ void CEnvFog :: TurnOff ( void )
44814483
if( m_iFadeOut )
44824484
{
44834485
pev->spawnflags |= SF_FOG_FADING;
4484-
SendData( pev->rendercolor, -m_iFadeOut, m_iStartDist, m_iEndDist);
4486+
SendData( pev->rendercolor, -m_iFadeOut, m_iStartDist, m_iEndDist, m_density);
44854487
pev->nextthink = gpGlobals->time + m_iFadeOut;
44864488
SetThink(&CEnvFog :: FadeOutDone );
44874489
}
44884490
else
44894491
{
44904492
pev->spawnflags &= ~SF_FOG_FADING;
4491-
SendData( g_vecZero, 0, 0, 0 );
4493+
SendDataDeactivate();
44924494
//DontThink();
44934495
}
44944496
}
@@ -4507,7 +4509,7 @@ void CEnvFog :: ResumeThink ( void )
45074509
void CEnvFog :: FadeInDone ( void )
45084510
{
45094511
pev->spawnflags &= ~SF_FOG_FADING;
4510-
SendData( pev->rendercolor, 0, m_iStartDist, m_iEndDist);
4512+
SendData();
45114513

45124514
if (m_fHoldTime)
45134515
{
@@ -4519,7 +4521,7 @@ void CEnvFog :: FadeInDone ( void )
45194521
void CEnvFog :: FadeOutDone ( void )
45204522
{
45214523
pev->spawnflags &= ~SF_FOG_FADING;
4522-
SendData( g_vecZero, 0, 0, 0);
4524+
SendDataDeactivate();
45234525
}
45244526

45254527
void CEnvFog :: Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
@@ -4537,23 +4539,23 @@ void CEnvFog::SendMessages(CBaseEntity *pClient)
45374539
{
45384540
if (FBitSet(pev->spawnflags, SF_FOG_ACTIVE) && pClient)
45394541
{
4540-
SendDataToOne(pClient, pev->rendercolor, 0, m_iStartDist, m_iEndDist);
4542+
SendDataToOne(pClient, pev->rendercolor, 0, m_iStartDist, m_iEndDist, m_density);
45414543
}
45424544
}
45434545

4544-
void CEnvFog::SendData ( Vector col, int iFadeTime, int iStartDist, int iEndDist )
4546+
void CEnvFog::SendData ( Vector col, int iFadeTime, int iStartDist, int iEndDist, float density )
45454547
{
45464548
for ( int i = 1; i <= gpGlobals->maxClients; i++ )
45474549
{
45484550
CBaseEntity *pPlayer = UTIL_PlayerByIndex( i );
45494551
if ( pPlayer )
45504552
{
4551-
SendDataToOne(pPlayer, col, iFadeTime, iStartDist, iEndDist);
4553+
SendDataToOne(pPlayer, col, iFadeTime, iStartDist, iEndDist, density);
45524554
}
45534555
}
45544556
}
45554557

4556-
void CEnvFog::SendDataToOne(CBaseEntity *pClient, Vector col, int iFadeTime, int iStartDist, int iEndDist)
4558+
void CEnvFog::SendDataToOne(CBaseEntity *pClient, Vector col, int iFadeTime, int iStartDist, int iEndDist, float density)
45574559
{
45584560
MESSAGE_BEGIN( MSG_ONE, gmsgSetFog, NULL, pClient->pev );
45594561
WRITE_BYTE ( col.x );
@@ -4562,7 +4564,7 @@ void CEnvFog::SendDataToOne(CBaseEntity *pClient, Vector col, int iFadeTime, int
45624564
WRITE_SHORT ( iFadeTime );
45634565
WRITE_SHORT ( iStartDist );
45644566
WRITE_SHORT ( iEndDist );
4565-
WRITE_LONG ( m_density * 10000 );
4567+
WRITE_LONG ( density * 10000 );
45664568
WRITE_BYTE ( m_fogType );
45674569
MESSAGE_END();
45684570
}

0 commit comments

Comments
 (0)