Right now the fact that particles are only client-side entities causes issues and is confusing.
By creating Particle, ParticleFactory, ParticleManager and ParticleSource classes we would fix that.
ParticleFactory would be the factory for Particle implementations.
Particle would be the actual implementation.
ParticleSource would be a component you add to your ComponentProviders to spawn particles when desired. (would extend Updater)
It would keep a reference to particle factories, the delay timers for each factory and where to spawn the particles created by those factories.
ParticleManager would be the manager for registering particles.
Right now the fact that particles are only client-side entities causes issues and is confusing.
By creating
Particle,ParticleFactory,ParticleManagerandParticleSourceclasses we would fix that.ParticleFactorywould be the factory forParticleimplementations.Particlewould be the actual implementation.ParticleSourcewould be a component you add to yourComponentProviders to spawn particles when desired. (would extendUpdater)It would keep a reference to particle factories, the delay timers for each factory and where to spawn the particles created by those factories.
ParticleManagerwould be the manager for registering particles.