public unsafe Adt(byte[] data)
{
MapChunks = new List<MapChunk>(McnksPerAdt);
fixed (byte* p = data)
{
Chunks = ChunkCollector.CreateChunks(p, p + data.Length, CreateChunk);
}
if (MapChunks.Count != McnksPerAdt)
{
throw new MapChunkCountException(McnksPerAdt, MapChunks.Count);
}
var mid = MapChunks[120].Bounds.Minimum;
X = (int)Math.Floor(32.0f - mid.Y / AdtWidth);
Y = (int)Math.Floor(32.0f - mid.X / AdtWidth);
Bounds = RoundToAdtBounds(MapChunks.Aggregate(Nothing, (b, c) => BoundingBox.Merge(b, c.Bounds)));
TrySetChunkLiquids();
WmoDefinitions = DoodadDefinitions = EmptyDefinitions;
WmoReferences = DoodadReferences = EmptyReferences;
}