Exemplo n.º 1
0
        public virtual void Dx()
        {
            //_dx = false;

            Reset();

            _update    = null;
            _draw      = null;
            _draw3     = null;
            _drawAura  = null;
            _drawAura3 = null;

            if (this == _current)
            {
                _current = null;
            }
        }
Exemplo n.º 2
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
        }