public void LoadUncompressed(int initialVersion, Vector3D position, BinaryReader reader, string defaultMaterial, bool loadMaterial)
{
string voxelType = "Cell";
int materialBaseCount = 0;
switch (initialVersion)
{
case 1:
// cell tag header
voxelType = reader.ReadString();
FileVersion = reader.Read7BitEncodedInt();
break;
default:
FileVersion = reader.ReadInt32();
break;
}
if (voxelType == "Cell")
{
var sizeX = reader.ReadInt32();
var sizeY = reader.ReadInt32();
var sizeZ = reader.ReadInt32();
var cellSizeX = reader.ReadInt32();
var cellSizeY = reader.ReadInt32();
var cellSizeZ = reader.ReadInt32();
_cellSize = new Vector3I(cellSizeX, cellSizeY, cellSizeZ);
InitVoxelMap(position, new Vector3I(sizeX, sizeY, sizeZ), defaultMaterial, true);
if (FileVersion == 2)
materialBaseCount = reader.ReadByte();
}
else
{
//voxelType == "Octree"
// Don't know how to read this format.
var a1 = reader.ReadByte(); // no idea
var a2 = reader.ReadByte();
var a3 = reader.ReadByte();
var a4 = reader.ReadByte();
var a5 = reader.ReadByte();
var a6 = reader.ReadByte();
var a7 = reader.ReadByte();
var sizeX = reader.ReadInt32();
var sizeY = reader.ReadInt32();
var sizeZ = reader.ReadInt32();
var c1 = reader.ReadByte(); // no idea
var c2 = reader.ReadByte();
var c3 = reader.ReadByte();
var c4 = reader.ReadByte();
var c5 = reader.ReadByte();
_cellSize = new Vector3I(8, 8, 8);
InitVoxelMap(position, new Vector3I(sizeX, sizeY, sizeZ), defaultMaterial, false);
materialBaseCount = reader.ReadInt32();
//FileVersion = 2;
IsValid = false;
return;
}
switch (FileVersion)
{
case 0:
case 1: LoadUncompressedV1(reader, loadMaterial); break;
case 2: LoadUncompressedV2(reader, loadMaterial, materialBaseCount); break;
default: throw new Exception("Voxel format not implmented");
}
}