diff --git a/Core/GameEngine/Source/GameClient/System/ParticleSys.cpp b/Core/GameEngine/Source/GameClient/System/ParticleSys.cpp index e9da2824daf..6d5c15380c5 100644 --- a/Core/GameEngine/Source/GameClient/System/ParticleSys.cpp +++ b/Core/GameEngine/Source/GameClient/System/ParticleSys.cpp @@ -1427,13 +1427,22 @@ void ParticleSystem::rotateLocalTransformZ( Real z ) // ------------------------------------------------------------------------------------------------ /** Attach this particle system to a Drawable */ // ------------------------------------------------------------------------------------------------ -void ParticleSystem::attachToDrawable( const Drawable *draw ) -{ - if (draw) - m_attachedToDrawableID = draw->getID(); - else - m_attachedToDrawableID = INVALID_DRAWABLE_ID; -} +void ParticleSystem::attachToDrawable( const Drawable *draw ) +{ + if (draw) + { + m_attachedToDrawableID = draw->getID(); + +#if defined(GENERALS_ONLINE_HIGH_FPS_RENDER) + // Info: One-frame attached systems can otherwise lose their only burst when the drawable is created and destroyed + // between legacy particle updates at 60Hz. + if (m_systemLifetimeLeft == 1 && m_delayLeft == 0 && getParticleCount() == 0) + update(0); +#endif + } + else + m_attachedToDrawableID = INVALID_DRAWABLE_ID; +} // ------------------------------------------------------------------------------------------------ /** Attach this particle system to a Drawable */