Skip to content

Commit f74fbee

Browse files
authored
bugfix(particlesys): Prevent accumulation of particle systems in headless mode (#3006)
1 parent fad7935 commit f74fbee

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

Core/GameEngine/Include/GameClient/ParticleSys.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,11 @@ class ParticleSystemManager : public SubsystemInterface,
763763
ParticleSystemTemplate *newTemplate( const AsciiString &name );
764764

765765
/// given a template, instantiate a particle system
766-
ParticleSystem *createParticleSystem( const ParticleSystemTemplate *sysTemplate, Bool createSlaves = TRUE );
766+
#if RETAIL_COMPATIBLE_CRC
767+
virtual ParticleSystem *createParticleSystem( const ParticleSystemTemplate *sysTemplate, Bool createSlaves = TRUE );
768+
#else
769+
ParticleSystem* createParticleSystem(const ParticleSystemTemplate* sysTemplate, Bool createSlaves = TRUE);
770+
#endif
767771

768772
/** given a template, instantiate a particle system.
769773
if attachTo is not null, attach the particle system to the given object.
@@ -839,11 +843,15 @@ class ParticleSystemManager : public SubsystemInterface,
839843

840844
// TheSuperHackers @feature bobtista 31/01/2026
841845
// ParticleSystemManager that does nothing. Used for Headless Mode.
842-
// Generally does not load particle system templates. Certainly does not create particle systems.
846+
// Does not load particle system templates and does not create particle systems.
843847
class ParticleSystemManagerDummy : public ParticleSystemManager
844848
{
845849
public:
846850
#if RETAIL_COMPATIBLE_CRC
851+
// The creation of particle systems needs to be handled explicitly,
852+
// because they're not destroyed in the update function anymore.
853+
virtual ParticleSystem* createParticleSystem(const ParticleSystemTemplate* sysTemplate, Bool createSlaves = TRUE) override { return nullptr; }
854+
847855
// Must not overload init to keep loading the particle system templates,
848856
// which are unfortunately needed to preserve the correct logic crc.
849857
#else

0 commit comments

Comments
 (0)