diff --git a/Warcraft.NET/Files/ADT/Chunks/Legion/MLSI.cs b/Warcraft.NET/Files/ADT/Chunks/Legion/MLSI.cs
index 2187370..a0f2040 100644
--- a/Warcraft.NET/Files/ADT/Chunks/Legion/MLSI.cs
+++ b/Warcraft.NET/Files/ADT/Chunks/Legion/MLSI.cs
@@ -42,7 +42,7 @@ public void LoadBinaryData(byte[] inData)
using (var ms = new MemoryStream(inData))
using (var br = new BinaryReader(ms))
{
- var mlsiCount = br.BaseStream.Length / sizeof(uint);
+ var mlsiCount = br.BaseStream.Length / sizeof(ushort);
SkirtIndices = new ushort[mlsiCount];
for (var i = 0; i < mlsiCount; i++)
{
diff --git a/Warcraft.NET/Files/ADT/Chunks/Legion/MLVI.cs b/Warcraft.NET/Files/ADT/Chunks/Legion/MLVI.cs
index 3d34265..e7b9af4 100644
--- a/Warcraft.NET/Files/ADT/Chunks/Legion/MLVI.cs
+++ b/Warcraft.NET/Files/ADT/Chunks/Legion/MLVI.cs
@@ -42,7 +42,7 @@ public void LoadBinaryData(byte[] inData)
using (var ms = new MemoryStream(inData))
using (var br = new BinaryReader(ms))
{
- var mlviCount = br.BaseStream.Length / sizeof(uint);
+ var mlviCount = br.BaseStream.Length / sizeof(ushort);
VertexIndices = new ushort[mlviCount];
for (var i = 0; i < mlviCount; i++)
{
diff --git a/Warcraft.NET/Files/ADT/TerrainLOD/Legion/TerrainLOD.cs b/Warcraft.NET/Files/ADT/TerrainLOD/Legion/TerrainLOD.cs
index a6593b8..3cdf7af 100644
--- a/Warcraft.NET/Files/ADT/TerrainLOD/Legion/TerrainLOD.cs
+++ b/Warcraft.NET/Files/ADT/TerrainLOD/Legion/TerrainLOD.cs
@@ -166,6 +166,57 @@ public void LoadBinaryData(byte[] inData)
}
}
}
+
+ ///
+ public override byte[] Serialize()
+ {
+ using var ms = new MemoryStream();
+ using (var bw = new BinaryWriter(ms))
+ {
+ bw.WriteIFFChunk(Version);
+ bw.WriteIFFChunk(Header);
+ bw.WriteIFFChunk(Heightmap);
+ bw.WriteIFFChunk(Levels);
+ bw.WriteIFFChunk(QuadTree);
+ bw.WriteIFFChunk(VertexIndices);
+ bw.WriteIFFChunk(SkirtIndices);
+
+ if (BlendMeshHeaders != null)
+ bw.WriteIFFChunk(BlendMeshHeaders);
+
+ if (BlendMeshBoundingBoxes != null)
+ bw.WriteIFFChunk(BlendMeshBoundingBoxes);
+
+ if (BlendMeshIndices != null)
+ bw.WriteIFFChunk(BlendMeshIndices);
+
+ if (BlendMeshVertices != null)
+ bw.WriteIFFChunk(BlendMeshVertices);
+
+ if (BlendMeshBatches != null)
+ bw.WriteIFFChunk(BlendMeshBatches);
+
+ if (LiquidData != null)
+ bw.WriteIFFChunk(LiquidData);
+
+ foreach (var liquidN in LiquidN)
+ {
+ bw.WriteIFFChunk(liquidN);
+ }
+
+ foreach (var liquidIndex in LiquidIndices)
+ {
+ bw.WriteIFFChunk(liquidIndex);
+ }
+
+ foreach (var liquidVertex in LiquidVertices)
+ {
+ bw.WriteIFFChunk(liquidVertex);
+ }
+
+ return ms.ToArray();
+ }
+ }
}
#nullable disable
}
diff --git a/Warcraft.NET/Files/ADT/TerrainLOD/TerrainLODBase.cs b/Warcraft.NET/Files/ADT/TerrainLOD/TerrainLODBase.cs
index cbc3d8c..f4934c2 100644
--- a/Warcraft.NET/Files/ADT/TerrainLOD/TerrainLODBase.cs
+++ b/Warcraft.NET/Files/ADT/TerrainLOD/TerrainLODBase.cs
@@ -23,5 +23,8 @@ public TerrainLODBase() : base()
public TerrainLODBase(byte[] inData) : base(inData)
{
}
+
+ ///
+ public abstract byte[] Serialize();
}
}