Ejemplo n.º 1
0
        /// <summary>
        /// Handles the DropDownItemClicked event of the uxAddControllerMenuItem control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.Forms.ToolStripItemClickedEventArgs"/> instance containing the event data.</param>
        private void uxAddControllerMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            try
            {
                EmitterTreeNode parentNode = this.uxEffectTree.SelectedNode as EmitterTreeNode;

                IControllerPlugin plugin = e.ClickedItem.Tag as IControllerPlugin;

                AbstractEmitter parent = parentNode.Emitter;

                var args = new NewControllerEventArgs(parent, plugin);

                this.OnControllerAdded(args);

                if (args.AddedController != null)
                {
                    AbstractController controller = args.AddedController;

                    ControllerTreeNode node = new ControllerTreeNode(controller);

                    parentNode.Nodes.Add(node);

                    node.EnsureVisible();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Handles the DropDownItemClicked event of the uxAddEmitterMenuItem control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.Forms.ToolStripItemClickedEventArgs"/> instance containing the event data.</param>
        private void uxAddEmitterMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            try
            {
                using (NewEmitterDialog dialog = new NewEmitterDialog())
                {
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        IEmitterPlugin plugin = e.ClickedItem.Tag as IEmitterPlugin;

                        var args = new NewEmitterEventArgs(plugin, dialog.EmitterBudget, dialog.EmitterTerm);

                        this.OnEmitterAdded(args);

                        if (args.AddedEmitter != null)
                        {
                            AbstractEmitter emitter = args.AddedEmitter;

                            EmitterTreeNode node = new EmitterTreeNode(emitter);

                            this.uxEffectTree.Nodes[0].Nodes.Add(node);

                            node.EnsureVisible();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EmitterTreeNode"/> class.
        /// </summary>
        /// <param name="emitter">The emitter.</param>
        public EmitterTreeNode(AbstractEmitter emitter) : base()
        {
            this.Emitter = emitter;

            this.ForeColor = emitter.Enabled ? SystemColors.WindowText : Color.Gray;

            this.Text = emitter.Enabled ? emitter.Name : String.Format("{0} (Disabled)", emitter.Name);

            this.Emitter.NameChanged += (o, s) => this.Text = this.Emitter.Name;

            this.Tag = emitter;

            foreach (AbstractModifier modifier in emitter.Modifiers)
            {
                ModifierTreeNode node = new ModifierTreeNode(modifier);

                this.Nodes.Add(node);
            }

            foreach (AbstractController controller in emitter.Controllers)
            {
                ControllerTreeNode node = new ControllerTreeNode(controller);

                this.Nodes.Add(node);
            }

            if (emitter.Enabled)
            {
                this.Expand();
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Handles the EmitterAdded event of the Interface.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ProjectMercury.EffectEditor.NewEmitterEventArgs"/> instance containing the event data.</param>
        public void Interface_EmitterAdded(Object sender, NewEmitterEventArgs e)
        {
            Trace.WriteLine("Adding emitter...", "CORE");

            using (new TraceIndenter())
            {
                Trace.WriteLine("Using plugin: " + e.Plugin.Name);
            }

            try
            {
                AbstractEmitter emitter = e.Plugin.ConstructInstance();

                emitter.Initialise(e.Budget, e.Term);

                emitter.Name = String.Format("Emitter {0}", ++this.NewEmitterIndex);

                emitter.ParticleTexture = this.DefaultParticleTexture;

                this.ParticleEffect.Emitters.Add(emitter);

                e.AddedEmitter = emitter;

                e.Result = CoreOperationResult.OK;
            }
            catch (Exception error)
            {
                e.Result = new CoreOperationResult(error);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="EmitterTreeNode"/> class.
        /// </summary>
        /// <param name="emitter">The emitter.</param>
        public EmitterTreeNode(AbstractEmitter emitter) : base()
        {
            this.Emitter = emitter;

            this.ForeColor = emitter.Enabled ? SystemColors.WindowText : Color.Gray;

            this.Text = emitter.Enabled ? emitter.Name : String.Format("{0} (Disabled)", emitter.Name);

            this.Emitter.NameChanged += (o, s) => this.Text = this.Emitter.Name;

            this.Tag = emitter;

            foreach (AbstractModifier modifier in emitter.Modifiers)
            {
                ModifierTreeNode node = new ModifierTreeNode(modifier);

                this.Nodes.Add(node);
            }

            foreach (AbstractController controller in emitter.Controllers)
            {
                ControllerTreeNode node = new ControllerTreeNode(controller);

                this.Nodes.Add(node);
            }

            if (emitter.Enabled)
            {
                this.Expand();
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Handles the CheckedChanged event of the uxToggleEmitterEnabledMenuItem 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>
        private void uxToggleEmitterEnabledMenuItem_CheckedChanged(object sender, EventArgs e)
        {
            AbstractEmitter emitter = (this.uxEffectTree.SelectedNode as EmitterTreeNode).Emitter;

            if (emitter.Enabled == false)
            {
                this.uxEffectTree.SelectedNode.ForeColor = SystemColors.WindowText;

                this.uxEffectTree.SelectedNode.Text = this.uxEffectTree.SelectedNode.Text.Replace(" (Disabled)", "");

                this.uxEffectTree.SelectedNode.Expand();

                emitter.Enabled = true;
            }
            else
            {
                this.uxEffectTree.SelectedNode.Collapse();

                this.uxEffectTree.SelectedNode.ForeColor = Color.Gray;

                this.uxEffectTree.SelectedNode.Text = String.Format("{0} (Disabled)", this.uxEffectTree.SelectedNode.Text);

                emitter.Enabled = false;
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Renders the specified particle effect.
        /// </summary>
        /// <param name="effect">The particle effect to render.</param>
        /// <param name="worldMatrix">The world transformation matrix.</param>
        /// <param name="viewMatrix">The view matrix.</param>
        /// <param name="projectionMatrix">The projection matrix.</param>
        /// <param name="cameraPosition">The camera matrix.</param>
        public void RenderEffect(ParticleEffect effect, ref Matrix worldMatrix,
                                 ref Matrix viewMatrix,
                                 ref Matrix projectionMatrix,
                                 ref Vector3 cameraPosition)
        {
#if UNSAFE
            unsafe
#endif
            {
                this.PreRender(ref worldMatrix, ref viewMatrix, ref projectionMatrix);

                //Pre-multiply any proxies world matrices with the passed in world matrix
                if (effect.Proxies != null && worldMatrix != Matrix.Identity)
                {
                    effect.SetFinalWorld(ref worldMatrix);
                }

                for (Int32 i = 0; i < effect.Emitters.Count; i++)
                {
                    AbstractEmitter emitter = effect.Emitters[i];

                    // Skip if the emitter does not have a texture...
                    if (emitter.ParticleTexture == null)
                    {
                        continue;
                    }

                    // Skip if the emitter blend mode is set to 'None'...
                    if (emitter.BlendMode == EmitterBlendMode.None)
                    {
                        continue;
                    }

                    // Skip if the emitter has no active particles...
                    if (emitter.ActiveParticlesCount == 0)
                    {
                        continue;
                    }

                    BlendState blendState = BlendStateFactory.GetBlendState(emitter.BlendMode);



                    RenderContext context = new RenderContext(emitter.BillboardStyle, emitter.BillboardRotationalAxis, blendState, emitter.ParticleTexture, ref worldMatrix, ref viewMatrix, ref projectionMatrix, ref cameraPosition, emitter.ActiveParticlesCount, emitter.UseVelocityAsBillboardAxis);

                    Counters.ParticlesDrawn += emitter.ActiveParticlesCount;
#if UNSAFE
                    fixed(Particle *buffer = emitter.Particles)
#else
                    Particle[] buffer = emitter.Particles;
#endif
                    {
                        ParticleIterator iterator = new ParticleIterator(buffer, emitter.Budget, emitter.ActiveIndex, emitter.ActiveParticlesCount);

                        this.Render(ref context, ref iterator);
                    }
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Copies the properties of this instance into the specified existing instance.
        /// </summary>
        /// <param name="exisitingInstance">An existing emitter instance.</param>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            PointEmitter value = (exisitingInstance as PointEmitter) ?? new PointEmitter();

            base.DeepCopy(value);

            return value;
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Copies the properties of this instance into the specified existing instance.
        /// </summary>
        /// <param name="exisitingInstance">An existing emitter instance.</param>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            CylinderEmitter value = (exisitingInstance as CylinderEmitter) ?? new CylinderEmitter();

            value.Height = this.Height;

            base.DeepCopy(value);

            return value;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Copies the properties of this instance into the specified existing instance.
        /// </summary>
        /// <param name="exisitingInstance">An existing emitter instance.</param>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            PlaneEmitter value = (exisitingInstance as PlaneEmitter);
            
            value.ConstrainToPlane = this.ConstrainToPlane;

            base.DeepCopy(value);

            return value;
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Copies the properties of this instance into the specified existing instance.
        /// </summary>
        /// <param name="exisitingInstance">An existing emitter instance.</param>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            $safeitemname$ value = (exisitingInstance as $safeitemname$) ?? default($safeitemname$);

            // TODO copy implementation specific fields & properties...

            base.DeepCopy(value);

            return value;
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Copies the properties of this instance into the specified existing instance.
        /// </summary>
        /// <param name="exisitingInstance">An existing emitter instance.</param>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            $safeitemname$ value = (exisitingInstance as $safeitemname$) ?? default($safeitemname$);

            // TODO copy implementation specific fields & properties...

            base.DeepCopy(value);

            return(value);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Returns an unitialised deep copy of the Emitter.
        /// </summary>
        /// <returns>A deep copy of the Emitter.</returns>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            LineEmitter value = (exisitingInstance as LineEmitter) ?? new LineEmitter();

            value.Length = this.Length;
            value.Rectilinear = this.Rectilinear;
            value.EmitBothWays = this.EmitBothWays;

            base.DeepCopy(value);

            return value;
        }
Ejemplo n.º 14
0
 // Start is called before the first frame update
 void Start()
 {
     ui_description   = GameObject.Find("TowerName").GetComponent <Text>();
     canvas           = GameObject.Find("TowerPanel").GetComponent <CanvasGroup>();
     Cursor.visible   = true;
     initial_position = gameObject.transform.position;
     activators       = GameObject.FindGameObjectsWithTag("Activator");
     sound            = GameObject.Find("Shop").GetComponent <AudioSource>();
     abstract_emitter = GetComponent <AbstractEmitter>();
     // Debug.Log("Activator");
     // Debug.Log(activator.transform.position.x);
 }
Ejemplo n.º 15
0
        /// <summary>
        /// Copies the properties of this instance into the specified existing instance.
        /// </summary>
        /// <param name="exisitingInstance">An existing emitter instance.</param>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            CircleEmitter value = (exisitingInstance as CircleEmitter) ?? new CircleEmitter();

            value.Radiate = this.Radiate;
            value.Radius = this.Radius;
            value.Shell = this.Shell;

            base.DeepCopy(value);

            return value;
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Copies the properties of this instance into the specified existing instance.
        /// </summary>
        /// <param name="exisitingInstance">An existing emitter instance.</param>
        protected override AbstractEmitter DeepCopy(AbstractEmitter exisitingInstance)
        {
            BoxEmitter value = (exisitingInstance as BoxEmitter) ?? new BoxEmitter();

            value.Width    = this.Width;
            value.Height   = this.Height;
            value.Depth    = this.Depth;
            value.Rotation = this.Rotation;

            base.DeepCopy(value);

            return value;
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Handles the Click event of the uxDeleteMenuItem 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>
        private void uxDeleteMenuItem_Click(object sender, EventArgs e)
        {
            var selectedNode = this.uxEffectTree.SelectedNode;

            if (selectedNode is EmitterTreeNode)
            {
                try
                {
                    AbstractEmitter emitter = (selectedNode as EmitterTreeNode).Emitter;

                    this.OnEmitterRemoved(new EmitterEventArgs(emitter));

                    selectedNode.Remove();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            else if (selectedNode is ModifierTreeNode)
            {
                try
                {
                    AbstractModifier modifier = (selectedNode as ModifierTreeNode).Modifier;

                    this.OnModifierRemoved(new ModifierEventArgs(modifier));

                    selectedNode.Remove();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else if (selectedNode is ControllerTreeNode)
            {
                try
                {
                    var controller = (selectedNode as ControllerTreeNode).Controller;

                    this.OnControllerRemoved(new ControllerEventArgs(controller));

                    selectedNode.Remove();
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message);
                }
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Handles the KeyUp event of the uxEffectTree control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.Forms.KeyEventArgs"/> instance containing the event data.</param>
        private void uxEffectTree_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                if (this.uxEffectTree.SelectedNode is EmitterTreeNode)
                {
                    AbstractEmitter emitter = (this.uxEffectTree.SelectedNode as EmitterTreeNode).Emitter;

                    this.OnEmitterRemoved(new EmitterEventArgs(emitter));
                }

                if (this.uxEffectTree.SelectedNode is ModifierTreeNode)
                {
                    AbstractModifier modifier = (this.uxEffectTree.SelectedNode as ModifierTreeNode).Modifier;

                    this.OnModifierRemoved(new ModifierEventArgs(modifier));
                }

                this.uxEffectTree.SelectedNode.Remove();
            }
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Handles the Opening event of the uxEffectTreeContextMenu control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.ComponentModel.CancelEventArgs"/> instance containing the event data.</param>
        private void uxEffectTreeContextMenu_Opening(object sender, CancelEventArgs e)
        {
            TreeNode selectedNode = this.uxEffectTree.SelectedNode;

            this.uxAddEmitterMenuItem.Visible           = selectedNode is ParticleEffectTreeNode;
            this.uxAddModifierMenuItem.Visible          = selectedNode is EmitterTreeNode;
            this.uxAddControllerMenuItem.Visible        = selectedNode is EmitterTreeNode;
            this.uxReinitialiseEmitterMenuItem.Visible  = selectedNode is EmitterTreeNode;
            this.uxSelectTextureMenuItem.Visible        = selectedNode is EmitterTreeNode;
            this.uxToggleEmitterEnabledMenuItem.Visible = selectedNode is EmitterTreeNode;

            this.uxEffectTreeContextMenuSeperator.Visible = (selectedNode is ParticleEffectTreeNode) == false;
            this.uxDeleteMenuItem.Visible = (selectedNode is ParticleEffectTreeNode) == false;
            this.uxCloneMenuItem.Visible  = (selectedNode is ParticleEffectTreeNode) == false;

            if (selectedNode is EmitterTreeNode)
            {
                AbstractEmitter emitter = (selectedNode as EmitterTreeNode).Emitter;

                this.uxToggleEmitterEnabledMenuItem.Text = emitter.Enabled ? "Disable" : "Enable";
            }
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Handles the EmitterCloned event of the Interface.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ProjectMercury.EffectEditor.CloneEmitterEventArgs"/> instance containing the event data.</param>
        public void Interface_EmitterCloned(Object sender, CloneEmitterEventArgs e)
        {
            Trace.WriteLine("Cloning emitter...", "CORE");

            try
            {
                AbstractEmitter clone = e.Prototype.DeepCopy();

                clone.Initialise();

                clone.ParticleTexture = e.Prototype.ParticleTexture;

                this.ParticleEffect.Emitters.Add(clone);

                e.AddedEmitter = clone;

                e.Result = CoreOperationResult.OK;
            }
            catch (Exception error)
            {
                e.Result = new CoreOperationResult(error);
            }
        }
Ejemplo n.º 21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EmitterEventArgs"/> class.
 /// </summary>
 /// <param name="emitter">The emitter.</param>
 public EmitterEventArgs(AbstractEmitter emitter) : base()
 {
     this.Emitter = emitter;
 }
Ejemplo n.º 22
0
    // Update is called once per frame
    void Update()
    {
        for (int i = 0; i < tower_name.Count; i++)
        {
            string name  = tower_name[i];
            int    price = prices[i];


            GameObject tower = GameObject.Find("Shop/" + name);
            if (tower != null)
            {
                AbstractEmitter a = tower.GetComponent <AbstractEmitter>();
                a.price = price;

                DragAndDrop    drag_and_drop = tower.GetComponent <DragAndDrop>();
                SpriteRenderer tower_base    = GameObject.Find("Shop/" + name + "/Turret_Base").GetComponent <SpriteRenderer>();
                SpriteRenderer tower_cannon  = GameObject.Find("Shop/" + name + "/Turret_Cannon").GetComponent <SpriteRenderer>();
                SpriteRenderer tower_top     = GameObject.Find("Shop/" + name + "/Turret_Top").GetComponent <SpriteRenderer>();
                SpriteRenderer light         = GameObject.Find("Shop/" + name + "/TowerLight").GetComponent <SpriteRenderer>();

                if (!buyed[i])
                {
                    // Color dark = Color.black;
                    Color dark = new Color(0.32f, 0.32f, 0.32f, 1f);

                    if (price <= player_info.music_energy)
                    {
                        if (!displayed_tutorial)
                        {
                            TutorialMessage tutorial = GameObject.Find("Tutorial").GetComponent <TutorialMessage>();
                            tutorial.DisplayEnergyMessage();
                            displayed_tutorial = true;
                        }

                        drag_and_drop.disabled = false;
                        tower_base.color       = dark;
                        tower_cannon.color     = dark;
                        tower_top.color        = dark;
                        light.enabled          = true;
                    }
                    else
                    {
                        light.enabled          = false;
                        drag_and_drop.disabled = true;
                        tower_base.color       = dark;
                        tower_cannon.color     = dark;
                        tower_top.color        = dark;
                    }
                }
                else
                {
                    light.enabled      = false;
                    tower_base.color   = Color.white;
                    tower_cannon.color = Color.white;
                    tower_top.color    = Color.white;
                }

                if (tower.transform.position.x > -6.37)
                {
                    if (!buyed[i])
                    {
                        Debug.Log("Spend money on tower");
                        player_info.music_energy -= price;
                        buyed[i] = true;
                        drag_and_drop.disabled = false;
                        tower_base.color       = Color.white;
                        tower_cannon.color     = Color.white;
                        tower_top.color        = Color.white;
                    }
                }
            }
        }
    }
 /// <summary>
 /// Initializes a new instance of the <see cref="TextureReferenceChangedEventArgs"/> class.
 /// </summary>
 /// <param name="emitter">The emitter.</param>
 /// <param name="textureReference">The texture reference.</param>
 public TextureReferenceChangedEventArgs(AbstractEmitter emitter, TextureReference textureReference)
     : base(emitter)
 {
     this.TextureReference = textureReference;
 }
Ejemplo n.º 24
0
 public void SetEmitter(AbstractEmitter abstractEmitter)
 {
     this.abstractEmitter = abstractEmitter;
 }
Ejemplo n.º 25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EmitterEventArgs"/> class.
 /// </summary>
 /// <param name="emitter">The emitter.</param>
 public EmitterEventArgs(AbstractEmitter emitter) : base()
 {
     this.Emitter = emitter;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EmitterReinitialisedEventArgs"/> class.
 /// </summary>
 /// <param name="emitter">The emitter.</param>
 /// <param name="budget">The new budget value.</param>
 /// <param name="term">The new term value.</param>
 public EmitterReinitialisedEventArgs(AbstractEmitter emitter, int budget, float term)
     : base(emitter)
 {
     this.Budget = budget;
     this.Term   = term;
 }
Ejemplo n.º 27
0
 public NewControllerEventArgs(AbstractEmitter parentEmitter, IControllerPlugin plugin)
 {
     this.ParentEmitter = parentEmitter;
     this.Plugin        = plugin;
 }
Ejemplo n.º 28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NewModifierEventArgs"/> class.
 /// </summary>
 /// <param name="parentEmitter">The parent emitter.</param>
 /// <param name="plugin">The plugin.</param>
 public NewModifierEventArgs(AbstractEmitter parentEmitter, IModifierPlugin plugin)
     : base()
 {
     this.ParentEmitter = parentEmitter;
     this.Plugin        = plugin;
 }
Ejemplo n.º 29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EmitterReinitialisedEventArgs"/> class.
 /// </summary>
 /// <param name="emitter">The emitter.</param>
 /// <param name="budget">The new budget value.</param>
 /// <param name="term">The new term value.</param>
 public EmitterReinitialisedEventArgs(AbstractEmitter emitter, int budget, float term)
     : base(emitter)
 {
     this.Budget = budget;
     this.Term = term;
 }
Ejemplo n.º 30
0
 public NewControllerEventArgs(AbstractEmitter parentEmitter, IControllerPlugin plugin)
 {
     this.ParentEmitter = parentEmitter;
     this.Plugin = plugin;
 }
Ejemplo n.º 31
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CloneEmitterEventArgs"/> class.
 /// </summary>
 /// <param name="prototype">The prototype.</param>
 public CloneEmitterEventArgs(AbstractEmitter prototype)
     : base()
 {
     this.Prototype = prototype;
 }
Ejemplo n.º 32
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
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TextureReferenceChangedEventArgs"/> class.
 /// </summary>
 /// <param name="emitter">The emitter.</param>
 /// <param name="textureReference">The texture reference.</param>
 public TextureReferenceChangedEventArgs(AbstractEmitter emitter, TextureReference textureReference)
     : base(emitter)
 {
     this.TextureReference = textureReference;
 }
Ejemplo n.º 34
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NewModifierEventArgs"/> class.
 /// </summary>
 /// <param name="parentEmitter">The parent emitter.</param>
 /// <param name="plugin">The plugin.</param>
 public NewModifierEventArgs(AbstractEmitter parentEmitter, IModifierPlugin plugin)
     : base()
 {
     this.ParentEmitter = parentEmitter;
     this.Plugin = plugin;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CloneEmitterEventArgs"/> class.
 /// </summary>
 /// <param name="prototype">The prototype.</param>
 public CloneEmitterEventArgs(AbstractEmitter prototype)
     : base()
 {
     this.Prototype = prototype;
 }
 public void SetEmitter(AbstractEmitter abstractEmitter)
 {
     this.abstractEmitter = abstractEmitter;
 }