[1114] | 1 | using System.Xml;
|
---|
| 2 | using Oni.Akira;
|
---|
| 3 | using Oni.Metadata;
|
---|
| 4 | using Oni.Motoko;
|
---|
| 5 | using Oni.Physics;
|
---|
| 6 | using Oni.Xml;
|
---|
| 7 |
|
---|
| 8 | namespace Oni.Objects
|
---|
| 9 | {
|
---|
| 10 | internal class ConsoleClass : GunkObjectClass
|
---|
| 11 | {
|
---|
| 12 | public ConsoleClassFlags Flags;
|
---|
| 13 | public Vector3 ActionPoint;
|
---|
| 14 | public Vector3 ActionOrientation;
|
---|
| 15 | public ObjectNode Geometry;
|
---|
| 16 | public Geometry ScreenGeometry;
|
---|
| 17 | public GunkFlags ScreenGunkFlags;
|
---|
| 18 | public string InactiveTexture;
|
---|
| 19 | public string ActiveTexture;
|
---|
| 20 | public string TriggeredTexture;
|
---|
| 21 |
|
---|
| 22 | public static ConsoleClass Read(InstanceDescriptor cons)
|
---|
| 23 | {
|
---|
| 24 | var klass = new ConsoleClass();
|
---|
| 25 |
|
---|
| 26 | InstanceDescriptor geometryDescriptor;
|
---|
| 27 | InstanceDescriptor screenGeometryDescriptor;
|
---|
| 28 |
|
---|
| 29 | using (var reader = cons.OpenRead())
|
---|
| 30 | {
|
---|
| 31 | klass.Flags = (ConsoleClassFlags)reader.ReadUInt32();
|
---|
| 32 | klass.ActionPoint = reader.ReadVector3();
|
---|
| 33 | klass.ActionOrientation = reader.ReadVector3();
|
---|
| 34 | geometryDescriptor = reader.ReadInstance();
|
---|
| 35 | screenGeometryDescriptor = reader.ReadInstance();
|
---|
| 36 | klass.ScreenGunkFlags = (GunkFlags)reader.ReadUInt32();
|
---|
| 37 | klass.InactiveTexture = reader.ReadString(32);
|
---|
| 38 | klass.ActiveTexture = reader.ReadString(32);
|
---|
| 39 | klass.TriggeredTexture = reader.ReadString(32);
|
---|
| 40 | }
|
---|
| 41 |
|
---|
| 42 | if (geometryDescriptor != null)
|
---|
| 43 | klass.Geometry = ObjectDatReader.ReadObjectGeometry(geometryDescriptor);
|
---|
| 44 |
|
---|
| 45 | if (screenGeometryDescriptor != null)
|
---|
| 46 | klass.ScreenGeometry = GeometryDatReader.Read(screenGeometryDescriptor);
|
---|
| 47 |
|
---|
| 48 | return klass;
|
---|
| 49 | }
|
---|
| 50 |
|
---|
| 51 | public static ConsoleClass Read(XmlReader xml)
|
---|
| 52 | {
|
---|
| 53 | var klass = new ConsoleClass();
|
---|
| 54 |
|
---|
| 55 | while (xml.IsStartElement())
|
---|
| 56 | {
|
---|
| 57 | switch (xml.LocalName)
|
---|
| 58 | {
|
---|
| 59 | case "Flags":
|
---|
| 60 | klass.Flags = xml.ReadElementContentAsEnum<ConsoleClassFlags>();
|
---|
| 61 | break;
|
---|
| 62 | case "ActionPoint":
|
---|
| 63 | klass.ActionPoint = xml.ReadElementContentAsVector3();
|
---|
| 64 | break;
|
---|
| 65 | case "ActionOrientation":
|
---|
| 66 | klass.ActionOrientation = xml.ReadElementContentAsVector3();
|
---|
| 67 | break;
|
---|
| 68 | case "ConsoleGeometry":
|
---|
| 69 | break;
|
---|
| 70 | case "InactiveTexture":
|
---|
| 71 | klass.InactiveTexture = xml.ReadElementContentAsString();
|
---|
| 72 | break;
|
---|
| 73 | case "ActiveTexture":
|
---|
| 74 | klass.ActiveTexture = xml.ReadElementContentAsString();
|
---|
| 75 | break;
|
---|
| 76 | case "TriggeredTexture":
|
---|
| 77 | klass.TriggeredTexture = xml.ReadElementContentAsString();
|
---|
| 78 | break;
|
---|
| 79 | }
|
---|
| 80 | }
|
---|
| 81 |
|
---|
| 82 | return klass;
|
---|
| 83 | }
|
---|
| 84 |
|
---|
| 85 | public override ObjectGeometry[] GunkNodes => Geometry.Geometries;
|
---|
| 86 | }
|
---|
| 87 | }
|
---|