Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void ReadFromFile(string file)
- {
- try
- {
- if (File.Exists(file))
- {
- path = file;
- XmlReader reader = XmlReader.Create(file);
- if (!reader.ReadToFollowing("ParticleEffect"))
- return;
- if (!reader.ReadToFollowing("Emitters"))
- return;
- while (reader.ReadToFollowing("Emitter"))
- Emitters.Add(readEmitter(reader));
- reader.Close();
- Name = Path.GetFileNameWithoutExtension(file);
- }
- }
- catch
- {
- MessageBox.Show("Error while reading: " + path);
- }
- }
- private Emitter readEmitter(XmlReader reader)
- {
- Emitter returnEmit = new Emitter();
- reader.MoveToAttribute("Type");
- returnEmit.Type = Emitter.stringToEnum(reader.Value);
- reader.MoveToAttribute("x");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out returnEmit.x);
- reader.MoveToAttribute("y");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out returnEmit.y);
- reader.MoveToAttribute("z");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out returnEmit.z);
- reader.MoveToAttribute("datablock");
- returnEmit.datablock = reader.Value;
- reader.MoveToAttribute("emitter");
- returnEmit.emitter = reader.Value;
- reader.MoveToAttribute("Start");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out returnEmit.Start);
- reader.MoveToAttribute("End");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out returnEmit.End);
- if (reader.MoveToAttribute("Tag"))
- returnEmit.Tag = reader.Value != "" ? reader.Value : null;
- reader.MoveToElement();
- string innerXML = reader.ReadInnerXml();
- XmlReader subReader = XmlReader.Create(new StringReader("<root>"+innerXML+"</root>"));
- while (subReader.ReadToFollowing("Value"))
- {
- Emitter.value val = new Emitter.value();
- val.points = new List<Emitter.PointOnValue>();
- subReader.MoveToAttribute("Name");
- val.valueName = subReader.Value;
- subReader.MoveToAttribute("DeltaValue");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out val.deltaValue);
- subReader.MoveToAttribute("setTime");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out val.setTime);
- subReader.MoveToAttribute("Ease");
- val.Ease = bool.Parse(subReader.Value);
- subReader.MoveToAttribute("DeltaValue");
- subReader.MoveToElement();
- string innerXML2 = subReader.ReadInnerXml();
- XmlReader subReader2 = XmlReader.Create(new StringReader("<root>"+innerXML2+"</root>"));
- while (subReader2.ReadToFollowing("Point"))
- {
- Emitter.PointOnValue pt = new Emitter.PointOnValue();
- if(subReader2.MoveToAttribute("X"))
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out pt.point.X);
- subReader2.MoveToAttribute("Y");
- float.TryParse(reader.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out pt.point.Y);
- subReader2.MoveToAttribute("Easing");
- pt.Easing = subReader2.Value;
- subReader2.MoveToAttribute("EaseIn");
- pt.EaseIn = bool.Parse(subReader2.Value);
- subReader2.MoveToAttribute("EaseOut");
- pt.EaseOut = bool.Parse(subReader2.Value);
- val.points.Add(pt);
- }
- subReader2.Close();
- returnEmit.Values.Add(val);
- }
- subReader.Close();
- return returnEmit;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement