Example #1
0
        public override ParticleEmitter Create(ParticleSystem ps)
        {
            var emitter = new PointEmitter(ps);

            emitterList.Add(emitter);
            return(emitter);
        }
Example #2
0
        public override ParticleEmitter Create()
        {
            PointEmitter emitter = new PointEmitter();

            emitterList.Add(emitter);
            return(emitter);
        }
Example #3
0
        /// <summary>
        /// Handles the Click event of the btnNewEmitter control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        void btnNewEmitter_Click(object sender, EventArgs e)
        {
            // Ensure a valid ParticleEffect is selected
            var pe = ParticleEffect;

            if (pe == null)
            {
                return;
            }

            // Add new emitter. Default to PointEmitter. Type can be changed by the user later.
            var emitter = new PointEmitter(pe);

            if (emitter.Sprite.GrhData == null && _defaultEmitterSprite != null)
            {
                emitter.Sprite.SetGrh(_defaultEmitterSprite);
            }

            if (!lstEmitters.Items.Contains(emitter))
            {
                lstEmitters.Items.Add(emitter);
            }

            lstEmitters.RebuildList(ParticleEffect);
            lstEmitters.SelectedItem = emitter;
        }
Example #4
0
        /// <summary>
        /// Instantiates the default particle effect.
        /// </summary>
        private ParticleEffect InstantiateDefaultParticleEffect()
        {
            Trace.WriteLine("Instantiating default particle effect...", "CORE");

            ParticleEffect  effect = new ParticleEffect();
            AbstractEmitter emiter = new PointEmitter
            {
                Budget  = 5000,
                Enabled = true,
                //MinimumTriggerPeriod     = 0f,
                Name            = "Basic Emitter",
                ParticleTexture = this.DefaultParticleTexture,
                //ParticleTextureAssetName = "FlowerBurst",
                ReleaseColour   = Color.White.ToVector3(),
                ReleaseOpacity  = 1f,
                ReleaseQuantity = 10,
                ReleaseScale    = new Range(24f, 40f),  // {  Value = 32f, Variation = 16f },
                ReleaseSpeed    = new Range(12f, 37f),  // { Value = 25f, Variation = 25f },
                Term            = 1f,
                Modifiers       = new ModifierCollection(),
                Controllers     = new ControllerPipeline()
            };

            emiter.Initialise();
            effect.Emitters.Add(emiter);
            return(effect);
        }
Example #5
0
        public override void Update(Renderer renderer)
        {
            base.Update(renderer);

            if (iceSpikeEmitter == null &&
                renderer.IceSpikeSystem.EmitterCount < 30 // safety number...
                )
            {
                iceSpikeEmitter = new PointEmitter(renderer.Time.PausableLast / 1000d, Position, 2500.0f);
                renderer.IceSpikeSystem.AddEmitter(iceSpikeEmitter);
            }

            if (dead &&
                iceSpikeEmitter != null)
            {
                iceSpikeEmitter.Active = false;
            }

            if (iceSpikeEmitter != null)
            {
                iceSpikeEmitter.SetPoint(renderer.Time.PausableAt / 1000d, Position);
                Debug.Assert(iceSpikeEmitter.Times[0] == renderer.Time.PausableLast / 1000d);
                Debug.Assert(iceSpikeEmitter.Times[1] == renderer.Time.PausableAt / 1000d);

                //Console.WriteLine("Emitter {0}: {1}, {2}", iceSpikeEmitter.EmitterIndex, Position, direction);

                renderer.IceSpikeSystem.SetPosition(iceSpikeEmitter.EmitterIndex, Position);
                renderer.IceSpikeSystem.SetDirection(iceSpikeEmitter.EmitterIndex, direction);
                renderer.IceSpikeSystem.SetDead(iceSpikeEmitter.EmitterIndex, dead);
            }
        }
 public override ParticleEmitter Create() {
     PointEmitter emitter = new PointEmitter();
     emitterList.Add(emitter);
     return emitter;
 }
		public override ParticleEmitter Create( ParticleSystem ps )
		{
			var emitter = new PointEmitter( ps );
			emitterList.Add( emitter );
			return emitter;
		}
Example #8
0
        public Pax4ParticleEffect()
        {
            _current = this;

            if (_particleRenderer == null)
            {
                _particleRenderer = new SpriteBatchRenderer {
                    GraphicsDeviceService = Pax4Game._graphicsDeviceManager
                };
                _particleRenderer.LoadContent(Pax4Game._current.Content);

                _particleRenderer3 = new QuadRenderer(10000)
                {
                    GraphicsDeviceService = Pax4Game._graphicsDeviceManager
                };
                _particleRenderer3.LoadContent(Pax4Game._current.Content);
            }

            ParticleEffect  particleEffect  = null;
            Texture2D       particleTexture = null;
            AbstractEmitter emitter         = null;

            float scale = 1.0f;

            if (Pax4Camera._backBufferWidth <= 320)
            {
                scale = Pax4Camera._current._scale.X * 0.9f;
            }
            else
            {
                scale = Pax4Camera._current._scale.X;
            }

            int budgetFactor = 3;

            #region Default
            //****************************
            //Default
            //****************************
            budgetFactor   = 3;
            particleEffect = new ParticleEffect();

            Pax4Texture2D._current.Load("ParticleEffect/FlowerBurst");
            particleTexture = Pax4Texture2D._current.Get("ParticleEffect/FlowerBurst");
            emitter         = new PointEmitter
            {
                Budget          = 64 * budgetFactor,
                Term            = 1.0f,
                ReleaseQuantity = 5,
                Enabled         = true,

                ReleaseSpeed  = new Range(0.0f, 50.0f), // { Value = 25f, Variation = 25f },
                ReleaseColour = new ColourRange
                {
                    Red   = new Range(0.0f, 0.8f),
                    Green = new Range(0.0f, 1.0f),
                    Blue  = new Range(0.0f, 1.0f)
                },
                ReleaseOpacity = new Range(1.0f, 1.0f),
                ReleaseScale   = new Range(16.0f * scale, 48.0f * scale), // {  Value = 32f, Variation = 16f },
                //ReleaseRotation
                //ReleaseImpulse
                ParticleTexture = particleTexture,

                Modifiers = new ModifierCollection
                {
                    new OpacityFastFadeModifier
                    {
                        InitialOpacity = 1.0f
                    }
                },

                BlendMode = EmitterBlendMode.Add,

                Controllers = new ControllerPipeline
                {
                    new TriggerOffsetController
                    {
                        TriggerOffset = Vector3.Zero
                    },
                    //new TriggerRotationController
                    //{
                    //    TriggerRotation = Vector3.Zero
                    //}
                },

                //TriggerOffset
                //MinimumTriggerPeriod
            };

            emitter.Initialise();
            particleEffect.Emitters.Add(emitter);

            _particleEffectDefault = particleEffect;
            AddUpdate(particleEffect);
            AddDraw(particleEffect);

            #endregion //Default

            #region IceStarTrail
            //****************************
            //IceStarTrail
            //****************************
            budgetFactor   = 1;
            particleEffect = new ParticleEffect();

            Pax4Texture2D._current.Load("ParticleEffect/Star");
            particleTexture = Pax4Texture2D._current.Get("ParticleEffect/Star");
            emitter         = new PointEmitter//Sparkles
            {
                Budget          = 42 * budgetFactor,
                Term            = 0.5f,
                ReleaseQuantity = 1,
                Enabled         = true,

                ReleaseSpeed  = new Range(32.0f, 160.0f),
                ReleaseColour = new ColourRange
                {
                    Red   = new Range(1.0f, 1.0f),
                    Green = new Range(1.0f, 1.0f),
                    Blue  = new Range(1.0f, 1.0f)
                },
                ReleaseOpacity  = new Range(1.0f, 1.0f),
                ReleaseScale    = new Range(16.0f * scale, 16.0f * scale),
                ReleaseRotation = new RotationRange
                {
                    Yaw   = new Range(0.0f, 0.0f),
                    Pitch = new Range(0.0f, 0.0f),
                    Roll  = new Range(0.0f, 6.28f),
                },
                //ReleaseImpulse
                ParticleTexture = particleTexture,

                Modifiers = new ModifierCollection
                {
                    new OpacityInterpolator3
                    {
                        InitialOpacity = 0.0f,
                        MedianOpacity  = 1.0f,
                        Median         = 0.75f,
                        FinalOpacity   = 0.0f
                    },
                    new DampingModifier
                    {
                        DampingCoefficient = 3.0f
                    },
                    new ColourInterpolator2
                    {
                        InitialColour = new Vector3(0.7529412f, 0.7529412f, 1.0f),
                        FinalColour   = new Vector3(0.7529412f, 1.0f, 1.0f)
                    },
                    new LinearGravityModifier
                    {
                        GravityVector = new Vector3(0.0f, 1.0f, 0.0f),
                        Strength      = 150.0f
                    }
                },

                BlendMode = EmitterBlendMode.Add,

                Controllers = new ControllerPipeline
                {
                    new TriggerOffsetController
                    {
                        TriggerOffset = Vector3.Zero
                    },
                    //new TriggerRotationController
                    //{
                    //    TriggerRotation = Vector3.Zero
                    //}
                },

                //TriggerOffset
                //MinimumTriggerPeriod
            };

            emitter.Initialise();
            particleEffect.Emitters.Add(emitter);

            particleTexture = Pax4Texture2D._current.Get("ParticleEffect/Star");
            emitter         = new PointEmitter//Flakes
            {
                Budget          = 42 * budgetFactor,
                Term            = 0.5f,
                ReleaseQuantity = 1,
                Enabled         = true,

                ReleaseSpeed  = new Range(0.0f, 48.0f),
                ReleaseColour = new ColourRange
                {
                    Red   = new Range(1.0f, 1.0f),
                    Green = new Range(1.0f, 1.0f),
                    Blue  = new Range(1.0f, 1.0f)
                },
                ReleaseOpacity  = new Range(1.0f, 1.0f),
                ReleaseScale    = new Range(8.0f * scale, 24.0f * scale),
                ReleaseRotation = new RotationRange
                {
                    Yaw   = new Range(0.0f, 0.0f),
                    Pitch = new Range(0.0f, 0.0f),
                    Roll  = new Range(0.0f, 3.14f),
                },
                //ReleaseImpulse

                ParticleTexture = particleTexture,

                Modifiers = new ModifierCollection
                {
                    new ColourInterpolator2
                    {
                        InitialColour = new Vector3(0.7529412f, 0.7529412f, 1.0f),
                        FinalColour   = new Vector3(0.7529412f, 1.0f, 1.0f)
                    },
                    new OpacityInterpolator2
                    {
                        InitialOpacity = 1.0f,
                        FinalOpacity   = 0.0f
                    },
                },

                BlendMode = EmitterBlendMode.Add,

                Controllers = new ControllerPipeline
                {
                    new TriggerOffsetController
                    {
                        TriggerOffset = Vector3.Zero
                    },
                    //new TriggerRotationController
                    //{
                    //    TriggerRotation = Vector3.Zero
                    //}
                },
                //TriggerOffset
                //MinimumTriggerPeriod
            };

            emitter.Initialise();
            particleEffect.Emitters.Add(emitter);

            _particleEffectIceStarTrail = particleEffect;
            AddUpdate(particleEffect);
            AddDraw(particleEffect);
            #endregion //IceStarTrail

            #region ChainLinkBreak

            //****************************
            //ChainLinkBreak
            //****************************
            budgetFactor   = 5;
            particleEffect = new ParticleEffect();

            Pax4Texture2D._current.Load("ParticleEffect/Particle005");
            particleTexture = Pax4Texture2D._current.Get("ParticleEffect/Particle005");
            emitter         = new PointEmitter//Sparks
            {
                Budget          = 20 * budgetFactor,
                Term            = 0.75f,
                ReleaseQuantity = 20,
                Enabled         = true,

                ReleaseSpeed  = new Range(0.0f, 250.0f),
                ReleaseColour = new ColourRange
                {
                    Red   = new Range(1.0f, 1.0f),
                    Green = new Range(1.0f, 1.0f),
                    Blue  = new Range(1.0f, 1.0f)
                },
                ReleaseOpacity = new Range(1.0f, 1.0f),
                ReleaseScale   = new Range(0.0f * scale, 8.0f * scale),
                //ReleaseRotation,
                //ReleaseImpulse,
                ParticleTexture = particleTexture,

                Modifiers = new ModifierCollection
                {
                    new OpacityInterpolator2
                    {
                        InitialOpacity = 1.0f,
                        FinalOpacity   = 0.0f
                    },
                    new DampingModifier
                    {
                        DampingCoefficient = 2.0f
                    },
                    new LinearGravityModifier
                    {
                        GravityVector = new Vector3(0.0f, 1.0f, 0.0f),
                        Strength      = 1000.0f
                    }
                },
                BlendMode = EmitterBlendMode.Add,

                Controllers = new ControllerPipeline
                {
                    new TriggerOffsetController
                    {
                        TriggerOffset = Vector3.Zero
                    },
                    //new TriggerRotationController
                    //{
                    //    TriggerRotation = Vector3.Zero
                    //}
                },

                //TriggerOffset
                //MinimumTriggerPeriod
            };

            emitter.Initialise();
            particleEffect.Emitters.Add(emitter);

            particleTexture = Pax4Texture2D._current.Get("ParticleEffect/Particle005");
            emitter         = new PointEmitter//Flash
            {
                Budget          = 1 * budgetFactor,
                Term            = 0.1f,
                ReleaseQuantity = 1,
                Enabled         = true,

                ReleaseSpeed  = new Range(50.0f, 50.0f),
                ReleaseColour = new ColourRange
                {
                    Red   = new Range(1.0f, 1.0f),
                    Green = new Range(1.0f, 1.0f),
                    Blue  = new Range(1.0f, 1.0f)
                },
                ReleaseOpacity = new Range(0.0f, 0.5f),
                ReleaseScale   = new Range(100.0f * scale, 100.0f * scale),
                //ReleaseRotation,
                //ReleaseImpulse,
                ParticleTexture = particleTexture,

                Modifiers = new ModifierCollection
                {
                    new OpacityInterpolator2
                    {
                        InitialOpacity = 1.0f,
                        FinalOpacity   = 0.0f
                    }
                },

                BlendMode = EmitterBlendMode.Add,

                Controllers = new ControllerPipeline
                {
                    new TriggerOffsetController
                    {
                        TriggerOffset = Vector3.Zero
                    },
                    //new TriggerRotationController
                    //{
                    //    TriggerRotation = Vector3.Zero
                    //}
                },

                //TriggerOffset
                //MinimumTriggerPeriod
            };

            emitter.Initialise();
            particleEffect.Emitters.Add(emitter);

            _particleEffectChainLinkBreak = particleEffect;
            //_particleEffectPart.Add(_particleEffectChainLinkBreak);

            #endregion //ChainLinkBreak
        }