Skip to content

Commit b4983b6

Browse files
committed
Implemented Trees
1 parent bb3e7df commit b4983b6

8 files changed

Lines changed: 727 additions & 0 deletions

File tree

ESPSharp/ESPSharp.csproj

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,11 @@
324324
<DesignTime>True</DesignTime>
325325
<DependentUpon>Terminal.tt</DependentUpon>
326326
</Compile>
327+
<Compile Include="Records\GeneratedCode\Tree.cs">
328+
<AutoGen>True</AutoGen>
329+
<DesignTime>True</DesignTime>
330+
<DependentUpon>Tree.tt</DependentUpon>
331+
</Compile>
327332
<Compile Include="Records\GenericRecord.cs" />
328333
<Compile Include="Records\GeneratedCode\TextureSet.cs">
329334
<AutoGen>True</AutoGen>
@@ -502,6 +507,10 @@
502507
<Generator>TextTemplatingFileGenerator</Generator>
503508
<LastGenOutput>Terminal.cs</LastGenOutput>
504509
</None>
510+
<None Include="Records\GeneratedCode\Tree.tt">
511+
<Generator>TextTemplatingFileGenerator</Generator>
512+
<LastGenOutput>Tree.cs</LastGenOutput>
513+
</None>
505514
<None Include="SubrecordCollections\GeneratedCode\Destructable.tt">
506515
<Generator>TextTemplatingFileGenerator</Generator>
507516
<LastGenOutput>Destructable.cs</LastGenOutput>
@@ -576,6 +585,11 @@
576585
<DesignTime>True</DesignTime>
577586
<DependentUpon>Attributes.tt</DependentUpon>
578587
</Compile>
588+
<Compile Include="Subrecords\GeneratedCode\BillboardDimensions.cs">
589+
<AutoGen>True</AutoGen>
590+
<DesignTime>True</DesignTime>
591+
<DependentUpon>BillboardDimensions.tt</DependentUpon>
592+
</Compile>
579593
<Compile Include="Subrecords\GeneratedCode\BipedData.cs">
580594
<AutoGen>True</AutoGen>
581595
<DesignTime>True</DesignTime>
@@ -746,13 +760,19 @@
746760
<DesignTime>True</DesignTime>
747761
<DependentUpon>TerminalData.tt</DependentUpon>
748762
</Compile>
763+
<Compile Include="Subrecords\GeneratedCode\TreeData.cs">
764+
<AutoGen>True</AutoGen>
765+
<DesignTime>True</DesignTime>
766+
<DependentUpon>TreeData.tt</DependentUpon>
767+
</Compile>
749768
<Compile Include="Subrecords\GeneratedCode\ValueWeight.cs">
750769
<AutoGen>True</AutoGen>
751770
<DesignTime>True</DesignTime>
752771
<DependentUpon>ValueWeight.tt</DependentUpon>
753772
</Compile>
754773
<Compile Include="Subrecords\InventoryItemExtraData.cs" />
755774
<Compile Include="Subrecords\SimpleSubrecord.cs" />
775+
<Compile Include="Subrecords\SpeedtreeSeeds.cs" />
756776
<Compile Include="Subrecords\StaticCollectionPartData.cs" />
757777
<Compile Include="Subrecords\SubMarker.cs" />
758778
<Compile Include="Subrecords\UndecodedSubrecord.cs" />
@@ -778,6 +798,10 @@
778798
<Generator>TextTemplatingFileGenerator</Generator>
779799
<LastGenOutput>ArmorExtraData.cs</LastGenOutput>
780800
</None>
801+
<None Include="Subrecords\GeneratedCode\BillboardDimensions.tt">
802+
<Generator>TextTemplatingFileGenerator</Generator>
803+
<LastGenOutput>BillboardDimensions.cs</LastGenOutput>
804+
</None>
781805
<None Include="Subrecords\GeneratedCode\BipedData.tt">
782806
<Generator>TextTemplatingFileGenerator</Generator>
783807
<LastGenOutput>BipedData.cs</LastGenOutput>
@@ -818,6 +842,10 @@
818842
<Generator>TextTemplatingFileGenerator</Generator>
819843
<LastGenOutput>TerminalData.cs</LastGenOutput>
820844
</None>
845+
<None Include="Subrecords\GeneratedCode\TreeData.tt">
846+
<Generator>TextTemplatingFileGenerator</Generator>
847+
<LastGenOutput>TreeData.cs</LastGenOutput>
848+
</None>
821849
<None Include="Subrecords\GeneratedCode\ValueWeight.tt">
822850
<Generator>TextTemplatingFileGenerator</Generator>
823851
<LastGenOutput>ValueWeight.cs</LastGenOutput>
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using System.IO;
7+
using System.Xml.Linq;
8+
using ESPSharp.Enums;
9+
using ESPSharp.Enums.Flags;
10+
using ESPSharp.Interfaces;
11+
using ESPSharp.Subrecords;
12+
using ESPSharp.SubrecordCollections;
13+
using ESPSharp.DataTypes;
14+
15+
namespace ESPSharp.Records
16+
{
17+
public partial class Tree : Record, IEditorID {
18+
public SimpleSubrecord<String> EditorID { get; set; }
19+
public ObjectBounds ObjectBounds { get; set; }
20+
public Model Model { get; set; }
21+
public Icon Icon { get; set; }
22+
public SpeedtreeSeeds SpeedtreeSeeds { get; set; }
23+
public TreeData Data { get; set; }
24+
public BillboardDimensions BillboardDimensions { get; set; }
25+
26+
public override void ReadData(ESPReader reader, long dataEnd)
27+
{
28+
while (reader.BaseStream.Position < dataEnd)
29+
{
30+
string subTag = reader.PeekTag();
31+
32+
switch (subTag)
33+
{
34+
case "EDID":
35+
if (EditorID == null)
36+
EditorID = new SimpleSubrecord<String>();
37+
38+
EditorID.ReadBinary(reader);
39+
break;
40+
case "OBND":
41+
if (ObjectBounds == null)
42+
ObjectBounds = new ObjectBounds();
43+
44+
ObjectBounds.ReadBinary(reader);
45+
break;
46+
case "MODL":
47+
if (Model == null)
48+
Model = new Model();
49+
50+
Model.ReadBinary(reader);
51+
break;
52+
case "ICON":
53+
if (Icon == null)
54+
Icon = new Icon();
55+
56+
Icon.ReadBinary(reader);
57+
break;
58+
case "SNAM":
59+
if (SpeedtreeSeeds == null)
60+
SpeedtreeSeeds = new SpeedtreeSeeds();
61+
62+
SpeedtreeSeeds.ReadBinary(reader);
63+
break;
64+
case "CNAM":
65+
if (Data == null)
66+
Data = new TreeData();
67+
68+
Data.ReadBinary(reader);
69+
break;
70+
case "BNAM":
71+
if (BillboardDimensions == null)
72+
BillboardDimensions = new BillboardDimensions();
73+
74+
BillboardDimensions.ReadBinary(reader);
75+
break;
76+
}
77+
}
78+
}
79+
80+
public override void WriteData(ESPWriter writer)
81+
{
82+
if (EditorID != null)
83+
EditorID.WriteBinary(writer);
84+
if (ObjectBounds != null)
85+
ObjectBounds.WriteBinary(writer);
86+
if (Model != null)
87+
Model.WriteBinary(writer);
88+
if (Icon != null)
89+
Icon.WriteBinary(writer);
90+
if (SpeedtreeSeeds != null)
91+
SpeedtreeSeeds.WriteBinary(writer);
92+
if (Data != null)
93+
Data.WriteBinary(writer);
94+
if (BillboardDimensions != null)
95+
BillboardDimensions.WriteBinary(writer);
96+
}
97+
98+
public override void WriteDataXML(XElement ele, ElderScrollsPlugin master)
99+
{
100+
XElement subEle;
101+
if (EditorID != null)
102+
{
103+
ele.TryPathTo("EditorID", true, out subEle);
104+
EditorID.WriteXML(subEle, master);
105+
}
106+
if (ObjectBounds != null)
107+
{
108+
ele.TryPathTo("ObjectBounds", true, out subEle);
109+
ObjectBounds.WriteXML(subEle, master);
110+
}
111+
if (Model != null)
112+
{
113+
ele.TryPathTo("Model", true, out subEle);
114+
Model.WriteXML(subEle, master);
115+
}
116+
if (Icon != null)
117+
{
118+
ele.TryPathTo("Icon", true, out subEle);
119+
Icon.WriteXML(subEle, master);
120+
}
121+
if (SpeedtreeSeeds != null)
122+
{
123+
ele.TryPathTo("SpeedtreeSeeds", true, out subEle);
124+
SpeedtreeSeeds.WriteXML(subEle, master);
125+
}
126+
if (Data != null)
127+
{
128+
ele.TryPathTo("Data", true, out subEle);
129+
Data.WriteXML(subEle, master);
130+
}
131+
if (BillboardDimensions != null)
132+
{
133+
ele.TryPathTo("BillboardDimensions", true, out subEle);
134+
BillboardDimensions.WriteXML(subEle, master);
135+
}
136+
}
137+
138+
public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
139+
{
140+
XElement subEle;
141+
142+
if (ele.TryPathTo("EditorID", false, out subEle))
143+
{
144+
if (EditorID == null)
145+
EditorID = new SimpleSubrecord<String>();
146+
147+
EditorID.ReadXML(subEle, master);
148+
}
149+
if (ele.TryPathTo("ObjectBounds", false, out subEle))
150+
{
151+
if (ObjectBounds == null)
152+
ObjectBounds = new ObjectBounds();
153+
154+
ObjectBounds.ReadXML(subEle, master);
155+
}
156+
if (ele.TryPathTo("Model", false, out subEle))
157+
{
158+
if (Model == null)
159+
Model = new Model();
160+
161+
Model.ReadXML(subEle, master);
162+
}
163+
if (ele.TryPathTo("Icon", false, out subEle))
164+
{
165+
if (Icon == null)
166+
Icon = new Icon();
167+
168+
Icon.ReadXML(subEle, master);
169+
}
170+
if (ele.TryPathTo("SpeedtreeSeeds", false, out subEle))
171+
{
172+
if (SpeedtreeSeeds == null)
173+
SpeedtreeSeeds = new SpeedtreeSeeds();
174+
175+
SpeedtreeSeeds.ReadXML(subEle, master);
176+
}
177+
if (ele.TryPathTo("Data", false, out subEle))
178+
{
179+
if (Data == null)
180+
Data = new TreeData();
181+
182+
Data.ReadXML(subEle, master);
183+
}
184+
if (ele.TryPathTo("BillboardDimensions", false, out subEle))
185+
{
186+
if (BillboardDimensions == null)
187+
BillboardDimensions = new BillboardDimensions();
188+
189+
BillboardDimensions.ReadXML(subEle, master);
190+
}
191+
}
192+
193+
}
194+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<#@ template debug="false" hostspecific="false" language="C#" #>
2+
<#@ output extension=".cs" #>
3+
<#
4+
RecordTemplate template = new RecordTemplate();
5+
template.ClassName = "Tree";
6+
7+
RecordField tempField;
8+
9+
tempField =
10+
new RecordField(
11+
"EDID",
12+
typeof(SimpleSubrecord<string>),
13+
"EditorID",
14+
"EditorID"
15+
);
16+
tempField.isRequired = true;
17+
template.Fields.Add(tempField);
18+
19+
tempField =
20+
new RecordField(
21+
"OBND",
22+
typeof(ObjectBounds),
23+
"ObjectBounds",
24+
"ObjectBounds"
25+
);
26+
tempField.isRequired = true;
27+
template.Fields.Add(tempField);
28+
29+
tempField =
30+
new RecordField(
31+
"MODL",
32+
typeof(Model),
33+
"Model",
34+
"Model"
35+
);
36+
tempField.isRequired = true;
37+
template.Fields.Add(tempField);
38+
39+
tempField =
40+
new RecordField(
41+
"ICON",
42+
typeof(Icon),
43+
"Icon",
44+
"Icon"
45+
);
46+
tempField.isRequired = true;
47+
template.Fields.Add(tempField);
48+
49+
tempField =
50+
new RecordField(
51+
"SNAM",
52+
typeof(SpeedtreeSeeds),
53+
"SpeedtreeSeeds",
54+
"SpeedtreeSeeds"
55+
);
56+
tempField.isRequired = true;
57+
template.Fields.Add(tempField);
58+
59+
tempField =
60+
new RecordField(
61+
"CNAM",
62+
typeof(TreeData),
63+
"Data",
64+
"Data"
65+
);
66+
tempField.isRequired = true;
67+
template.Fields.Add(tempField);
68+
69+
tempField =
70+
new RecordField(
71+
"BNAM",
72+
typeof(BillboardDimensions),
73+
"BillboardDimensions",
74+
"BillboardDimensions"
75+
);
76+
tempField.isRequired = true;
77+
template.Fields.Add(tempField);
78+
#>
79+
<#@ include file="RecordTemplate.t4" once="true" #>

0 commit comments

Comments
 (0)