public List <Param> xGetExtraAffectorParams(ParticleAffector af) { List <Param> list = new List <Param>(); if (af == null) { return(list); } // the default //Dictionary<string, string> def = xGetDefEmitterParams(pe.Type); ////////////////////////////////////////////////////////////////////////// Const_ParameterList plist = af.GetParameters(); foreach (ParameterDef_NativePtr c in plist) { // dont include base emitter properties! //if (def.ContainsKey(c.name) == false) continue; string value = af.GetParameter(c.name); list.Add(new Param() { Property = c.name, Value = value, Description = c.description }); } return(list); }
public List<Param> xGetExtraAffectorParams(ParticleAffector af) { List<Param> list = new List<Param>(); if (af == null) return list; // the default //Dictionary<string, string> def = xGetDefEmitterParams(pe.Type); ////////////////////////////////////////////////////////////////////////// Const_ParameterList plist = af.GetParameters(); foreach (ParameterDef_NativePtr c in plist) { // dont include base emitter properties! //if (def.ContainsKey(c.name) == false) continue; string value = af.GetParameter(c.name); list.Add(new Param() { Property = c.name, Value = value, Description = c.description }); } return list; }
// save flow file public void xSaveConfinguration(string filename) { XmlTextWriter xml = null; try { xml = new XmlTextWriter(filename, null); } catch (Exception err) { MessageBox.Show("Error: " + err.Message); return; } xml.Formatting = Formatting.Indented; // tabs & newlines xml.WriteStartDocument(); { xml.WriteStartElement("config"); xml.WriteStartAttribute("version"); xml.WriteValue(1000); xml.WriteEndAttribute(); for (int i = 0; i < plist.Count; i++) { ParticleSystem p = plist[i]; xml.WriteStartElement("system"); xml.WriteStartAttribute("name"); xml.WriteValue(p.Name); xml.WriteEndAttribute(); xml.WriteStartElement("params"); foreach (ParameterDef_NativePtr param in p.GetParameters()) { xml.WriteStartElement("add"); xml.WriteStartAttribute("key"); xml.WriteValue(param.name); xml.WriteEndAttribute(); xml.WriteStartAttribute("value"); xml.WriteValue(p.GetParameter(param.name)); xml.WriteEndAttribute(); xml.WriteEndElement(); } // billboard type xml.WriteStartElement("add"); xml.WriteStartAttribute("key"); xml.WriteValue("billboard_type"); xml.WriteEndAttribute(); xml.WriteStartAttribute("value"); xml.WriteValue(p.Renderer.GetParameter("billboard_type")); xml.WriteEndAttribute(); xml.WriteEndElement(); // common dir xml.WriteStartElement("add"); xml.WriteStartAttribute("key"); xml.WriteValue("common_direction"); xml.WriteEndAttribute(); xml.WriteStartAttribute("value"); xml.WriteValue(p.Renderer.GetParameter("common_direction")); xml.WriteEndAttribute(); xml.WriteEndElement(); xml.WriteEndElement(); // affectors for (int j = 0; j < p.NumAffectors; j++) { ParticleAffector af = p.GetAffector((ushort)j); xml.WriteStartElement("affector"); xml.WriteStartAttribute("type"); xml.WriteValue(af.Type); xml.WriteEndAttribute(); xml.WriteStartAttribute("name"); xml.WriteValue("Affector" + j); xml.WriteEndAttribute(); { xml.WriteStartElement("params"); foreach (ParameterDef_NativePtr param in af.GetParameters()) { xml.WriteStartElement("add"); xml.WriteStartAttribute("key"); xml.WriteValue(param.name); xml.WriteEndAttribute(); xml.WriteStartAttribute("value"); xml.WriteValue(af.GetParameter(param.name)); xml.WriteEndAttribute(); xml.WriteEndElement(); } xml.WriteEndElement(); } xml.WriteEndElement(); } // emitters for (int j = 0; j < p.NumEmitters; j++) { ParticleEmitter em = p.GetEmitter((ushort)j); xml.WriteStartElement("emitter"); xml.WriteStartAttribute("type"); xml.WriteValue(em.Type); xml.WriteEndAttribute(); xml.WriteStartAttribute("name"); xml.WriteValue("Emitter" + j); xml.WriteEndAttribute(); { xml.WriteStartElement("params"); foreach (ParameterDef_NativePtr param in em.GetParameters()) { xml.WriteStartElement("add"); xml.WriteStartAttribute("key"); xml.WriteValue(param.name); xml.WriteEndAttribute(); xml.WriteStartAttribute("value"); xml.WriteValue(em.GetParameter(param.name)); xml.WriteEndAttribute(); xml.WriteEndElement(); } xml.WriteEndElement(); } xml.WriteEndElement(); } xml.WriteEndElement(); // </system> } xml.WriteEndElement();//</config> } xml.WriteEndDocument(); xml.Close(); }
// export ogre particle script public void xExportScript(string filename) { StreamWriter fp = null; try { fp = File.CreateText(filename); } catch (Exception err) { MessageBox.Show("Error: " + err.Message); return; } for (int i = 0; i < plist.Count; i++) { ParticleSystem ps = plist[i]; fp.WriteLine("particle_system {0}", ps.Name); fp.WriteLine("{"); fp.WriteLine("\tmaterial {0}", ps.MaterialName); fp.WriteLine("\tparticle_width {0}", ps.DefaultWidth); fp.WriteLine("\tparticle_height {0}", ps.DefaultHeight); fp.WriteLine("\tcull_each {0}", ps.CullIndividually); fp.WriteLine("\tquota {0}", ps.ParticleQuota); fp.WriteLine("\tsorted {0}", ps.SortingEnabled); fp.WriteLine("\tbillboard_type {0}", ps.Renderer.GetParameter("billboard_type")); fp.WriteLine("\tcommon_direction {0}", ps.Renderer.GetParameter("common_direction")); fp.WriteLine("\tcommon_up_vector {0}", ps.Renderer.GetParameter("common_up_vector")); fp.WriteLine(); // emitters for (int j = 0; j < ps.NumEmitters; j++) { ParticleEmitter pe = ps.GetEmitter((ushort)j); fp.WriteLine("\temitter {0}", pe.Type); fp.WriteLine("\t{"); foreach (ParameterDef_NativePtr param in pe.GetParameters()) { string value = pe.GetParameter(param.name); if (value == "") { continue; // no empty } if (param.name == "name") { continue; } fp.WriteLine("\t\t{0} {1}", param.name, value); } fp.WriteLine("\t}"); fp.WriteLine(); } // affectors for (int j = 0; j < ps.NumAffectors; j++) { ParticleAffector af = ps.GetAffector((ushort)j); fp.WriteLine("\taffector {0}", af.Type); fp.WriteLine("\t{"); foreach (ParameterDef_NativePtr param in af.GetParameters()) { string value = af.GetParameter(param.name); fp.WriteLine("\t\t{0} {1}", param.name, value); } fp.WriteLine("\t}"); fp.WriteLine(); } fp.WriteLine("}"); fp.WriteLine(); } fp.Close(); }