public unsafe void SaveTerrain(string path, string name)
{
using (var stream = File.Create(path))
{
using (var bw = new BinaryWriter(stream, Encoding.Default, true))
{
bw.Write(name);
bw.Write(this.Size.Width);
bw.Write(this.Size.Height);
bw.Write(this.Size.Depth);
}
fixed (TileData* v = this.m_tileGrid)
{
byte* p = (byte*)v;
using (var memStream = new UnmanagedMemoryStream(p, this.Size.Volume * sizeof(TileData)))
memStream.CopyTo(stream);
}
fixed (byte* v = this.m_levelMap)
{
byte* p = (byte*)v;
using (var memStream = new UnmanagedMemoryStream(p, this.Width * this.Height * sizeof(byte)))
memStream.CopyTo(stream);
}
}
}