game/server: fix particle transition from trigger_vphysics_motion

This commit is contained in:
nillerusr 2022-10-31 19:59:10 +03:00
parent 3a1f8ed07c
commit 22d6544454
3 changed files with 15 additions and 1 deletions

View file

@ -4623,7 +4623,8 @@ void CTriggerVPhysicsMotion::StartTouch( CBaseEntity *pOther )
#ifndef _XBOX
if ( m_ParticleTrail.m_strMaterialName != NULL_STRING )
{
CEntityParticleTrail::Create( pOther, m_ParticleTrail, this );
CEntityParticleTrail *pTrail = CEntityParticleTrail::Create( pOther, m_ParticleTrail, this );
pTrail->SetShouldDeletedOnChangelevel( true );
}
#endif

View file

@ -35,6 +35,7 @@ CBaseParticleEntity::CBaseParticleEntity( void )
m_bSimulate = true;
m_nToolParticleEffectId = TOOLPARTICLESYSTEMID_INVALID;
#endif
m_bShouldDeletedOnChangelevel = false;
}
CBaseParticleEntity::~CBaseParticleEntity( void )

View file

@ -35,6 +35,16 @@ public:
CBaseParticleEntity();
virtual ~CBaseParticleEntity();
virtual int ObjectCaps()
{
if( m_bShouldDeletedOnChangelevel )
return BaseClass::ObjectCaps() & ~FCAP_ACROSS_TRANSITION;
else
return BaseClass::ObjectCaps();
}
void SetShouldDeletedOnChangelevel( bool bDel ) { m_bShouldDeletedOnChangelevel = bDel; }
// CBaseEntity overrides.
public:
#if !defined( CLIENT_DLL )
@ -76,6 +86,8 @@ public:
void SetLifetime(float lifetime);
private:
bool m_bShouldDeletedOnChangelevel;
CBaseParticleEntity( const CBaseParticleEntity & ); // not defined, not accessible
};