[1114] | 1 | using System;
|
---|
| 2 | using System.Xml;
|
---|
| 3 | using Oni.Metadata;
|
---|
| 4 | using Oni.Xml;
|
---|
| 5 |
|
---|
| 6 | namespace Oni.Objects
|
---|
| 7 | {
|
---|
| 8 | internal class Particle : ObjectBase
|
---|
| 9 | {
|
---|
| 10 | public string ClassName;
|
---|
| 11 | public string Tag;
|
---|
| 12 | public ParticleFlags Flags;
|
---|
| 13 | public Vector2 DecalScale = new Vector2(1.0f, 1.0f);
|
---|
| 14 |
|
---|
| 15 | public Particle()
|
---|
| 16 | {
|
---|
| 17 | TypeId = ObjectType.Particle;
|
---|
| 18 | }
|
---|
| 19 |
|
---|
| 20 | protected override void WriteOsd(BinaryWriter writer)
|
---|
| 21 | {
|
---|
| 22 | writer.Write(ClassName, 64);
|
---|
| 23 | writer.Write(Tag, 48);
|
---|
| 24 | writer.Write((ushort)Flags);
|
---|
| 25 | writer.Write(DecalScale);
|
---|
| 26 | }
|
---|
| 27 |
|
---|
| 28 | protected override void ReadOsd(BinaryReader reader)
|
---|
| 29 | {
|
---|
| 30 | ClassName = reader.ReadString(64);
|
---|
| 31 | Tag = reader.ReadString(48);
|
---|
| 32 | Flags = (ParticleFlags)reader.ReadUInt16();
|
---|
| 33 | DecalScale = reader.ReadVector2();
|
---|
| 34 | }
|
---|
| 35 |
|
---|
| 36 | protected override void WriteOsd(XmlWriter xml)
|
---|
| 37 | {
|
---|
| 38 | xml.WriteElementString("Class", ClassName);
|
---|
| 39 | xml.WriteElementString("Tag", Tag);
|
---|
| 40 | xml.WriteElementString("Flags", MetaEnum.ToString<ParticleFlags>(Flags));
|
---|
| 41 | xml.WriteElementString("DecalScale", XmlConvert.ToString(DecalScale.X) + " " + XmlConvert.ToString(DecalScale.Y));
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 | protected override void ReadOsd(XmlReader xml, ObjectLoadContext context)
|
---|
| 45 | {
|
---|
| 46 | while (xml.IsStartElement())
|
---|
| 47 | {
|
---|
| 48 | switch (xml.LocalName)
|
---|
| 49 | {
|
---|
| 50 | case "Class":
|
---|
| 51 | ClassName = xml.ReadElementContentAsString();
|
---|
| 52 | break;
|
---|
| 53 | case "Tag":
|
---|
| 54 | Tag = xml.ReadElementContentAsString();
|
---|
| 55 | break;
|
---|
| 56 | case "Flags":
|
---|
| 57 | Flags = xml.ReadElementContentAsEnum<ParticleFlags>() & ParticleFlags.NotInitiallyCreated;
|
---|
| 58 | break;
|
---|
| 59 | case "DecalScale":
|
---|
| 60 | DecalScale = xml.ReadElementContentAsVector2();
|
---|
| 61 | break;
|
---|
| 62 | default:
|
---|
| 63 | xml.Skip();
|
---|
| 64 | break;
|
---|
| 65 | }
|
---|
| 66 | }
|
---|
| 67 | }
|
---|
| 68 | }
|
---|
| 69 | }
|
---|