public void RefreshTreeView() { if (ProjectManager.Self.EmitterSaveList != null) { EmitterSaveList esl = ProjectManager.Self.EmitterSaveList; for (int i = 0; i < esl.emitters.Count; i++) { EmitterSave es = esl[i]; if (GetTreeNode(es) == null) { CreateTreeNodeFor(es); } } } // Check for removals for (int i = mTreeView.Nodes.Count - 1; i > -1; i--) { EmitterSave emitterSave = mTreeView.Nodes[i].Tag as EmitterSave; if (ProjectManager.Self.EmitterSaveList.emitters.Contains(emitterSave) == false) { mTreeView.Nodes.RemoveAt(i); } } }
private void CreateTreeNodeFor(EmitterSave es) { TreeNode treeNode = new TreeNode(es.Name); treeNode.Tag = es; mTreeView.Nodes.Add(treeNode); }
/// <summary> /// Handles updating old particle files that stored textures in /// the particle blueprint object. If the emitterSave has a /// texture but the emissionSettings does not, it will /// copy the texture from emitterSave to emissionSettings /// </summary> /// <param name="emitterSave">The emitter save to check.</param> private void TryUpdateEmitterTextures(EmitterSave emitterSave) { if (emitterSave != null && emitterSave.ParticleBlueprint != null && !string.IsNullOrEmpty(emitterSave.ParticleBlueprint.Texture) && string.IsNullOrEmpty(emitterSave.EmissionSettings.Texture)) { emitterSave.EmissionSettings.Texture = emitterSave.ParticleBlueprint.Texture; } }
/// <summary> /// Duplicates the selected emitter /// </summary> private void duplicateToolStripMenuItem_Click(object sender, EventArgs e) { EmitterSave duplicate = FlatRedBall.IO.FileManager.CloneObject(ApplicationState.Self.SelectedEmitterSave); duplicate.Name += "_duplicate"; ProjectManager.Self.EmitterSaveList.emitters.Add(duplicate); // Manually trigger state change event. EmitterStateChanged(sender, e); }
/// <summary> /// Disposes of the currently displaying /// emitter and creates a new one from the supplied /// save object. Requires an absolute path so it knows where /// to load sprites and other paths from. /// </summary> /// <param name="emitterSave">The emitter save to inflate into an emitter runtime object.</param> /// <param name="absolutePath">The base path to use when loading sprite textures or other resources.</param> public void DisplayEmitter(EmitterSave emitterSave, string absolutePath) { if (previewEmitter != null) { SpriteManager.RemoveEmitter(previewEmitter); } FileManager.RelativeDirectory = absolutePath; previewEmitter = emitterSave.ToEmitter(ContentManagerName); SpriteManager.AddEmitter(previewEmitter); }
private TreeNode GetTreeNode(EmitterSave es) { foreach (TreeNode node in mTreeView.Nodes) { if (node.Tag == es) { return(node); } } return(null); }
public void RefreshTreeViewFor(EmitterSave es) { var treeNode = GetTreeNode(es); if (treeNode != null) { if (treeNode.Text != es.Name) { treeNode.Text = es.Name; } } }
internal TreeNode GetTreeNodeFor(EmitterSave value) { if (value == null) { return(null); } else { foreach (TreeNode treeNode in mTreeView.Nodes) { if (treeNode.Tag == value) { return(treeNode); } } // if we got here then there's no node: return(null); } }
public void DeleteEmitterClick(object sender, EventArgs args) { if (ApplicationState.Self.SelectedEmitterSave != null) { DialogResult result = MessageBox.Show("Delete Emitter " + ApplicationState.Self.SelectedEmitterSave.Name + "?", "Delete?", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { EmitterSave emitterToRemove = ApplicationState.Self.SelectedEmitterSave; ApplicationState.Self.SelectedEmitterSave = null; ProjectManager.Self.EmitterSaveList.emitters.Remove(emitterToRemove); TreeViewManager.Self.RefreshTreeView(); CallListAddOrRemove(); } } }
public void AddEmitterClick(object sender, EventArgs args) { TextInputWindow tiw = new TextInputWindow(); tiw.DisplayText = "Enter new Emitter name"; if (tiw.ShowDialog() == DialogResult.OK) { string result = tiw.Result; string whyIsntValid = GetWhyNameIsntValid(result); if (!string.IsNullOrEmpty(whyIsntValid)) { MessageBox.Show(whyIsntValid); } else { EmitterSave emitterSave = new EmitterSave(); emitterSave.Name = result; // let's set some useful defaults: emitterSave.RemovalEvent = nameof(Emitter.RemovalEventType.Timed); emitterSave.SecondsLasting = 5; emitterSave.EmissionSettings.RadialVelocity = 20; emitterSave.EmissionSettings.RadialVelocityRange = 20; emitterSave.TimedEmission = true; emitterSave.SecondFrequency = .2f; ProjectManager.Self.EmitterSaveList.emitters.Add(emitterSave); TreeViewManager.Self.RefreshTreeView(); ApplicationState.Self.SelectedEmitterSave = emitterSave; CallListAddOrRemove(); } } }