示例#1
0
        /// <summary>
        /// Updates the particle emitter.
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            if (!isEmitting)
            {
                return;
            }
            Debug.Instance.AssertStrict(isLoaded, "Particle Emitter not initialized...");
            timer += Time.Instance.DeltaTime;

            int numParticles = (int)Math.Round(SpawnRate * timer);

            if (numParticles > 0)
            {
                for (int i = 0; i < numParticles; i++)
                {
                    float    scale = (float)(random.NextDouble() * (MaxScale - MinScale) + MinScale);
                    Particle p     = (Particle)Activator.CreateInstance(typeof(T), timeToLive);
                    p.Position = Holder.Position;
                    p.Scale    = new Vector2(scale, scale);
                    p.SetTexturePath(paths);
                    CurrentScene.AddObject(p);
                }
                timer = 0;
            }
        }