private void moveUpButton_Click(object sender, EventArgs e) { if (this.modifiersListView.SelectedItems.Count <= 0) { return; } if (this.modifiersListView.SelectedIndices[0] <= 0) { int t = this.modifiersListView.SelectedIndices[0]; this.modifiersListView.BeginUpdate(); this.modifiersListView.SelectedIndices.Clear(); this.modifiersListView.SelectedIndices.Add(t); this.modifiersListView.EndUpdate(); this.modifiersListView.Focus(); return; } int selected = this.modifiersListView.SelectedIndices[0]; AbstractModifier tmp = this.modifiers[selected - 1]; this.modifiers[selected - 1] = this.modifiers[selected]; this.modifiers[selected] = tmp; this.UpdateModifiers(this.modifiers[selected - 1]); this.modifiersListView.BeginUpdate(); this.modifiersListView.Items.Clear(); for (int i = 0; i < this.modifiers.Count; i++) { this.modifiersListView.Items.Add(this.modifiers[i].ToListViewItem(i)); } this.modifiersListView.SelectedIndices.Clear(); this.modifiersListView.SelectedIndices.Add(selected - 1); this.modifiersListView.EndUpdate(); this.modifiersListView.Focus(); }
/// <summary> /// Handles the DropDownItemClicked event of the uxAddModifierMenuItem 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 uxAddModifierMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) { try { EmitterTreeNode parentNode = this.uxEffectTree.SelectedNode as EmitterTreeNode; IModifierPlugin plugin = e.ClickedItem.Tag as IModifierPlugin; AbstractEmitter parent = parentNode.Emitter; var args = new NewModifierEventArgs(parent, plugin); this.OnModifierAdded(args); if (args.AddedModifier != null) { AbstractModifier modifier = args.AddedModifier; ModifierTreeNode node = new ModifierTreeNode(modifier); parentNode.Nodes.Add(node); node.EnsureVisible(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// Handles the ModifierCloned event of the Interface. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="ProjectMercury.EffectEditor.CloneModifierEventArgs"/> instance containing the event data.</param> public void Interface_ModifierCloned(Object sender, CloneModifierEventArgs e) { Trace.WriteLine("Cloning emitter...", "CORE"); try { AbstractModifier clone = e.Prototype.DeepCopy(); foreach (AbstractEmitter emitter in this.ParticleEffect.Emitters) { foreach (AbstractModifier modifier in emitter.Modifiers) { if (Object.ReferenceEquals(modifier, e.Prototype)) { emitter.Modifiers.Add(clone); e.AddedModifier = clone; e.Result = CoreOperationResult.OK; return; } } } e.Result = new CoreOperationResult(new Exception("Could not find modifier prototype in effect hierarchy.")); } catch (Exception error) { e.Result = new CoreOperationResult(error); } }
/// <summary> /// Handles the ModifierAdded event of the Interface. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="ProjectMercury.EffectEditor.NewModifierEventArgs"/> instance containing the event data.</param> public void Interface_ModifierAdded(Object sender, NewModifierEventArgs e) { Trace.WriteLine("Adding modifier...", "CORE"); using (new TraceIndenter()) { Trace.WriteLine("Using plugin: " + e.Plugin.Name); } try { foreach (AbstractEmitter emitter in this.ParticleEffect.Emitters) { if (Object.ReferenceEquals(emitter, e.ParentEmitter)) { AbstractModifier modifier = e.Plugin.ConstructInstance(); emitter.Modifiers.Add(modifier); e.AddedModifier = modifier; e.Result = CoreOperationResult.OK; return; } } e.Result = new CoreOperationResult(new Exception("Could not find the specified Emitter.")); } catch (Exception error) { e.Result = new CoreOperationResult(error); } }
/// <summary> /// Initializes a new instance of the <see cref="ModifierTreeNode"/> class. /// </summary> /// <param name="modifier">The modifier.</param> public ModifierTreeNode(AbstractModifier modifier) : base() { if (modifier == null) throw new ArgumentNullException("modifier"); this.Modifier = modifier; this.Text = modifier.GetType().Name; this.Tag = modifier; }
private void deleteButton_Click(object sender, EventArgs e) { if (this.modifiersListView.SelectedItems.Count <= 0) { return; } this.modifierPropertiesPanel.Controls.Clear(); AbstractModifier mod = this.modifiers[this.modifiersListView.SelectedIndices[0]]; this.modifiers.RemoveAt(this.modifiersListView.SelectedIndices[0]); this.modifiersStages.RemoveAt(this.modifiersStages.Count - 1); this.UpdateModifiers(mod); }
/// <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> /// Initializes a new instance of the <see cref="ModifierTreeNode"/> class. /// </summary> /// <param name="modifier">The modifier.</param> public ModifierTreeNode(AbstractModifier modifier) : base() { if (modifier == null) { throw new ArgumentNullException("modifier"); } this.Modifier = modifier; this.Text = modifier.GetType().Name; this.Tag = modifier; }
public MainWindow() { InitializeComponent(); this.LoadPlugins(); foreach (string name in AbstractModifier.GetModifierNames()) { this.modifiersComboBox.Items.Add(name); } this.modifiers = new List <AbstractModifier>(); this.modifiersStages = new List <HeadFile>(); this.addButton.Enabled = false; //AbstractModifier mod = AbstractModifier.MakeModifier("Eyes Modifier"); //this.modifierPropertiesPanel.Controls.Add(mod.Menu); }
/// <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(); } }
private void addButton_Click(object sender, EventArgs e) { AbstractModifier mod = AbstractModifier.MakeModifier(this.modifiersComboBox.Text); if (mod != null) { this.modifierPropertiesPanel.Controls.Clear(); this.modifiersListView.SelectedItems.Clear(); mod.Target = this.modifiersStages[this.modifiersStages.Count - 1]; this.modifiersListView.BeginUpdate(); this.modifiersListView.SelectedItems.Clear(); this.modifiersListView.Items.Add(mod.ToListViewItem(this.modifiers.Count)); this.modifiersListView.EndUpdate(); this.modifierPropertiesPanel.Controls.Clear(); this.modifierPropertiesPanel.Controls.Add(mod.Menu); this.modifiers.Add(mod); mod.WhenReady += new AbstractModifier.Ready(mod_WhenReady); HeadFile tmp = this.modifiersStages[this.modifiersStages.Count - 1]; this.modifiersStages.Add(tmp); } }
private void UpdateModifiers(AbstractModifier startingModifier) { int start = 0; for (int i = 0; i < this.modifiers.Count; i++) { if (this.modifiers[i] == startingModifier) { start = i; } } for (int i = start; i < this.modifiers.Count; i++) { this.modifiers[i].Target = this.modifiersStages[i]; this.modifiersStages[i + 1] = this.modifiers[i].Apply(); } this.modifiersListView.BeginUpdate(); this.modifiersListView.Items.Clear(); for (int i = 0; i < this.modifiers.Count; i++) { this.modifiersListView.Items.Add(this.modifiers[i].ToListViewItem(i)); } this.modifiersListView.EndUpdate(); }
/// <summary> /// Initializes a new instance of the <see cref="ModifierEventArgs"/> class. /// </summary> /// <param name="modifier">The modifier.</param> public ModifierEventArgs(AbstractModifier modifier) : base() { this.Modifier = modifier; }
/// <summary> /// Initializes a new instance of the <see cref="CloneModifierEventArgs"/> class. /// </summary> /// <param name="prototype">The prototype.</param> public CloneModifierEventArgs(AbstractModifier prototype) : base() { this.Prototype = prototype; }