@@ -45,43 +45,55 @@ void CFunc_ASW_Fade::Spawn()
4545 Assert ( m_iCollideWithGrenades <= 2 );
4646}
4747
48- void CFunc_ASW_Fade::DisableCollisionsWithGrenade ( CBaseEntity * pGrenade )
48+ void CFunc_ASW_Fade::DisableCollisionsWithGrenade ( CBaseEntity* pGrenade )
4949{
50- float flGrenadeZ = pGrenade->GetAbsOrigin ().z ;
51- string_t iszClassName = AllocPooledString ( " func_asw_fade" );
50+ const float flGrenadeZ = pGrenade->GetAbsOrigin ().z ;
51+ const string_t iszClassName = AllocPooledString ( " func_asw_fade" );
5252
53- CFunc_ASW_Fade *pCeiling = NULL ;
54- while ( ( pCeiling = assert_cast< CFunc_ASW_Fade * >( gEntList .FindEntityByClassnameFast ( pCeiling, iszClassName ) ) ) != NULL )
53+ CFunc_ASW_Fade* pCeiling = nullptr ;
54+ while ( ( pCeiling = assert_cast<CFunc_ASW_Fade*>(
55+ gEntList .FindEntityByClassnameFast ( pCeiling, iszClassName ) ) ) != nullptr )
5556 {
56- if ( ( pCeiling->m_iCollideWithGrenades == 0 && pCeiling->GetAbsOrigin ().z >= flGrenadeZ ) || pCeiling->m_iCollideWithGrenades == 2 )
57+ const bool bShouldDisable =
58+ ( pCeiling->m_iCollideWithGrenades == 0 && pCeiling->GetAbsOrigin ().z >= flGrenadeZ ) ||
59+ ( pCeiling->m_iCollideWithGrenades == 2 );
60+
61+ const bool bCurrentlyDisabled = PhysEntityCollisionsAreDisabled ( pCeiling, pGrenade );
62+
63+ if ( bShouldDisable && !bCurrentlyDisabled )
5764 {
5865 PhysDisableEntityCollisions ( pCeiling, pGrenade );
5966 }
60- else
67+ else if ( !bShouldDisable && bCurrentlyDisabled )
6168 {
6269 PhysEnableEntityCollisions ( pCeiling, pGrenade );
63- }
70+ }
6471 }
6572}
6673
67- void CFunc_ASW_Fade::DisableCollisionsWithMarine ( CBaseEntity * pMarine )
74+ void CFunc_ASW_Fade::DisableCollisionsWithMarine ( CBaseEntity* pMarine )
6875{
69- string_t iszClassName = AllocPooledString ( " func_asw_fade" );
76+ const string_t iszClassName = AllocPooledString ( " func_asw_fade" );
7077
71- CFunc_ASW_Fade *pCeiling = NULL ;
72- while ( ( pCeiling = assert_cast< CFunc_ASW_Fade * >( gEntList .FindEntityByClassnameFast ( pCeiling, iszClassName ) ) ) != NULL )
78+ CFunc_ASW_Fade* pCeiling = nullptr ;
79+ while ( ( pCeiling = assert_cast<CFunc_ASW_Fade*>(
80+ gEntList .FindEntityByClassnameFast ( pCeiling, iszClassName ) ) ) != nullptr )
7381 {
74- if ( !pCeiling->m_bCollideWithMarines )
82+ const bool bShouldDisable = !pCeiling->m_bCollideWithMarines ;
83+ const bool bCurrentlyDisabled = PhysEntityCollisionsAreDisabled ( pCeiling, pMarine );
84+
85+ if ( bShouldDisable && !bCurrentlyDisabled )
7586 {
7687 PhysDisableEntityCollisions ( pCeiling, pMarine );
7788 }
78- else
89+ else if ( !bShouldDisable && bCurrentlyDisabled )
7990 {
8091 PhysEnableEntityCollisions ( pCeiling, pMarine );
81- }
92+ }
8293 }
8394}
8495
96+
8597void CFunc_ASW_Fade::InputSetCollideWithGrenades ( inputdata_t & inputdata )
8698{
8799 m_iCollideWithGrenades = clamp ( inputdata.value .Int (), 0 , 2 );
0 commit comments