Ejemplo n.º 1
0
        /// <summary>
        /// Updates the particle-system by letting all emitters create new particles.
        /// </summary>
        public void Update()
        {
            // For each emitter in the list update the particles
            foreach (var keyValue in _emitters.ToList())
            {
                // If the emitter is currently not emitting, ignore it
                if (!keyValue.Key.IsEmitting)
                {
                    continue;
                }

                // Only generate new particles if the emitter is allowed to
                float currentTime = Time.CurrentTime;

                if (currentTime > keyValue.Value + Settings.TimeBetweenRounds)
                {
                    Tuple <Vector3, Vector3> posVel = keyValue.Key.GetNextPosition();

                    for (int i = 0; i < Settings.ParticlesPerRound; ++i)
                    {
                        ParticleSystem.AddSingleParticle(posVel.Item1, posVel.Item2);
                    }

                    _emitters[keyValue.Key] = currentTime;
                }
            }
        }