public override void Write(BinaryWriter writer, IMultiPartGeometry <IPointZ> value, WordCount origin) { Box.Write(writer, value.Box, origin); var partCount = value.Parts.Count; NumParts.Write(writer, partCount, origin); var points = value.Parts.SelectMany(part => part.Points).ToArray(); NumPoints.Write(writer, points.Length, origin); int pointCount = 0; for (int i = 0; i < partCount; i++) { Part(i).Write(writer, pointCount, origin); pointCount += value.Parts[i].Points.Count; } var pointsOffset = OffsetPoints(partCount); for (int i = 0; i < points.Length; i++) { Point(pointsOffset, pointCount, i).Write(writer, points[i], origin); } MinZ(pointsOffset, pointCount).Write(writer, value.Box.Min.Z, origin); MaxZ(pointsOffset, pointCount).Write(writer, value.Box.Max.Z, origin); MinM(pointsOffset, pointCount).Write(writer, value.Box.Min.M, origin); MaxM(pointsOffset, pointCount).Write(writer, value.Box.Max.M, origin); }
public override void Write(BinaryWriter writer, IMultiPartGeometry <IPoint> value, WordCount origin) { Box.Write(writer, value.Box, origin); var partCount = value.Parts.Count; NumParts.Write(writer, partCount, origin); var points = value.Parts.SelectMany(part => part.Points).ToArray(); NumPoints.Write(writer, points.Length, origin); int pointCount = 0; for (int i = 0; i < partCount; i++) { Part(i).Write(writer, pointCount, origin); pointCount += value.Parts[i].Points.Count; } for (int i = 0; i < pointCount; i++) { Point(partCount, i).Write(writer, points[i], origin); } }