1 | using System;
|
---|
2 | using System.Xml;
|
---|
3 | using Oni.Metadata;
|
---|
4 | using Oni.Xml;
|
---|
5 |
|
---|
6 | namespace Oni.Objects
|
---|
7 | {
|
---|
8 | internal class TriggerVolume : ObjectBase
|
---|
9 | {
|
---|
10 | public string Name;
|
---|
11 | public string EntryScript;
|
---|
12 | public string InsideScript;
|
---|
13 | public string ExitScript;
|
---|
14 | public TurretTargetTeams Teams;
|
---|
15 | public Vector3 Size;
|
---|
16 | public int ScriptId;
|
---|
17 | public int ParentId;
|
---|
18 | public string Notes;
|
---|
19 | public TriggerVolumeFlags Flags;
|
---|
20 |
|
---|
21 | public TriggerVolume()
|
---|
22 | {
|
---|
23 | TypeId = ObjectType.TriggerVolume;
|
---|
24 | }
|
---|
25 |
|
---|
26 | protected override void WriteOsd(BinaryWriter writer)
|
---|
27 | {
|
---|
28 | writer.Write(Name, 63);
|
---|
29 | writer.Write(EntryScript, 32);
|
---|
30 | writer.Write(InsideScript, 32);
|
---|
31 | writer.Write(ExitScript, 32);
|
---|
32 | writer.Write((uint)Teams);
|
---|
33 | writer.Write(Size);
|
---|
34 | writer.Write(ScriptId);
|
---|
35 | writer.Write(ParentId);
|
---|
36 | writer.Write(Notes, 128);
|
---|
37 | writer.Write((uint)Flags);
|
---|
38 | }
|
---|
39 |
|
---|
40 | protected override void ReadOsd(BinaryReader reader)
|
---|
41 | {
|
---|
42 | Name = reader.ReadString(63);
|
---|
43 | EntryScript = reader.ReadString(32);
|
---|
44 | InsideScript = reader.ReadString(32);
|
---|
45 | ExitScript = reader.ReadString(32);
|
---|
46 | Teams = (TurretTargetTeams)(reader.ReadUInt32() & 0xff);
|
---|
47 | Size = reader.ReadVector3();
|
---|
48 | ScriptId = reader.ReadInt32();
|
---|
49 | ParentId = reader.ReadInt32();
|
---|
50 | Notes = reader.ReadString(128);
|
---|
51 | Flags = (TriggerVolumeFlags)(reader.ReadUInt32() & 0xff);
|
---|
52 | }
|
---|
53 |
|
---|
54 | protected override void WriteOsd(XmlWriter xml)
|
---|
55 | {
|
---|
56 | throw new NotImplementedException();
|
---|
57 | }
|
---|
58 |
|
---|
59 | protected override void ReadOsd(XmlReader xml, ObjectLoadContext context)
|
---|
60 | {
|
---|
61 | while (xml.IsStartElement())
|
---|
62 | {
|
---|
63 | switch (xml.LocalName)
|
---|
64 | {
|
---|
65 | case "Name":
|
---|
66 | Name = xml.ReadElementContentAsString();
|
---|
67 | break;
|
---|
68 | case "Scripts":
|
---|
69 | xml.ReadStartElement();
|
---|
70 | EntryScript = xml.ReadElementContentAsString("Entry", "");
|
---|
71 | InsideScript = xml.ReadElementContentAsString("Inside", "");
|
---|
72 | ExitScript = xml.ReadElementContentAsString("Exit", "");
|
---|
73 | xml.ReadEndElement();
|
---|
74 | break;
|
---|
75 | case "Teams":
|
---|
76 | Teams = xml.ReadElementContentAsEnum<TurretTargetTeams>();
|
---|
77 | break;
|
---|
78 | case "Size":
|
---|
79 | Size = xml.ReadElementContentAsVector3();
|
---|
80 | break;
|
---|
81 | case "TriggerVolumeId":
|
---|
82 | case "ScriptId":
|
---|
83 | ScriptId = xml.ReadElementContentAsInt();
|
---|
84 | break;
|
---|
85 | case "ParentId":
|
---|
86 | ParentId = xml.ReadElementContentAsInt();
|
---|
87 | break;
|
---|
88 | case "Notes":
|
---|
89 | Notes = xml.ReadElementContentAsString();
|
---|
90 | break;
|
---|
91 | case "Flags":
|
---|
92 | Flags = xml.ReadElementContentAsEnum<TriggerVolumeFlags>();
|
---|
93 | break;
|
---|
94 |
|
---|
95 | default:
|
---|
96 | xml.Skip();
|
---|
97 | break;
|
---|
98 | }
|
---|
99 | }
|
---|
100 | }
|
---|
101 | }
|
---|
102 | }
|
---|