public static Vector3I LoadVoxelSize(string filename)
{
var initialVersion = Path.GetExtension(filename).Equals(V2FileExtension, StringComparison.InvariantCultureIgnoreCase) ? 1 : 0;
try
{
// only 29 bytes are required for the header, but I'll leave it for 32 for a bit of extra leeway.
var buffer = initialVersion == 1 ? ZipTools.GZipUncompress(filename, 32) : Uncompress(filename, 32);
using (var reader = new BinaryReader(new MemoryStream(buffer)))
{
switch (initialVersion)
{
case 1:
// cell tag header
reader.ReadString();
reader.ReadByte();// fileVersion
break;
default:
reader.ReadInt32();// fileVersion
break;
}
var sizeX = reader.ReadInt32();
var sizeY = reader.ReadInt32();
var sizeZ = reader.ReadInt32();
return new Vector3I(sizeX, sizeY, sizeZ);
}
}
catch
{
return Vector3I.Zero;
}
}