/// <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); } }
/// <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); } }
/// <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(); } }
/// <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(); } }
/// <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; } }
/// <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); } } } }
/// <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; }
/// <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; }
/// <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; }
/// <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; }
/// <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); }
/// <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; }
// 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); }
/// <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; }
/// <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; }
/// <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); } } }
/// <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(); } }
/// <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"; } }
/// <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); } }
/// <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; }
// 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; }
public void SetEmitter(AbstractEmitter abstractEmitter) { this.abstractEmitter = abstractEmitter; }
/// <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; }
public NewControllerEventArgs(AbstractEmitter parentEmitter, IControllerPlugin plugin) { this.ParentEmitter = parentEmitter; this.Plugin = plugin; }
/// <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="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; }
public NewControllerEventArgs(AbstractEmitter parentEmitter, IControllerPlugin plugin) { 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 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; }
/// <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; }