diff --git a/Src/GBX.NET/Engines/Plug/CPlugSurface.cs b/Src/GBX.NET/Engines/Plug/CPlugSurface.cs index 780cdad22..424480f86 100644 --- a/Src/GBX.NET/Engines/Plug/CPlugSurface.cs +++ b/Src/GBX.NET/Engines/Plug/CPlugSurface.cs @@ -241,16 +241,47 @@ public void Write(GbxWriter w, int version = 0) public sealed partial class Compound : ISurf, IVersionable { public int Version { get; set; } + public ISurf[] Surfs { get; set; } = []; + public Iso4[] SurfLocs { get; set; } = []; + public short[] SurfJoints { get; set; } = []; public Vec3? U01 { get; set; } public void Read(GbxReader r, int version = 0) { - throw new NotImplementedException(); + var surfCount = r.ReadInt32(); + Surfs = new ISurf[surfCount]; + + for (var i = 0; i < surfCount; i++) + { + Surfs[i] = ReadSurf(r, version); + } + + SurfLocs = r.ReadArray(surfCount); + + if (version >= 1) + { + SurfJoints = r.ReadArray(); + } } public void Write(GbxWriter w, int version = 0) { - throw new NotImplementedException(); + w.Write(Surfs.Length); + + foreach (var surf in Surfs) + { + WriteSurf(surf, w, version); + } + + foreach (var surfLoc in SurfLocs) + { + w.Write(surfLoc); + } + + if (version >= 1) + { + w.WriteArray(SurfJoints); + } } } }