/// <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 { Emitter emitter = e.Plugin.CreateDefaultInstance(); emitter.Initialise(e.Budget, e.Term); emitter.ParticleTexture = this.DefaultParticleTexture; this.ParticleEffect.Add(emitter); e.AddedEmitter = emitter; e.Result = CoreOperationResult.OK; } catch (Exception error) { e.Result = new CoreOperationResult(error); } }
/// <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) { Emitter emitter = args.AddedEmitter; EmitterTreeNode node = new EmitterTreeNode(emitter); this.uxEffectTree.Nodes[0].Nodes.Add(node); node.EnsureVisible(); } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
protected virtual void OnEmitterAdded(NewEmitterEventArgs e) { Trace.WriteLine("User requires adding an emitter...", "UI"); using (new HourglassCursor()) { var handler = Interlocked.CompareExchange(ref this.EmitterAdded, null, null); if (handler != null) { handler.Invoke(this, e); } } this.AssertOperationOK(e.Result); }
/// <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); } }
protected virtual void OnEmitterAdded(NewEmitterEventArgs e) { Trace.WriteLine("User requires adding an emitter...", "UI"); using (new HourglassCursor()) { var handler = Interlocked.CompareExchange(ref this.EmitterAdded, null, null); if (handler != null) handler.Invoke(this, e); } this.AssertOperationOK(e.Result); }
/// <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); } }
protected virtual void OnEmitterAdded(NewEmitterEventArgs e) { if (this.EmitterAdded != null) this.EmitterAdded(this, e); }
/// <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) { Emitter emitter = e.Plugin.CreateDefaultInstance(); emitter.Initialise(e.Budget, e.Term); emitter.ParticleTexture = this.DefaultParticleTexture; this.ParticleEffect.Add(emitter); e.AddedEmitter = emitter; }