static void openDoor(Zone zone, Player player)
{
int sx = zone.Bounds.XMin;
int ex = zone.Bounds.XMax;
int sy = zone.Bounds.YMin;
int ey = zone.Bounds.YMax;
int sz = zone.Bounds.ZMin;
int ez = zone.Bounds.ZMax;
Block[] buffer = new Block[zone.Bounds.Volume];
int counter = 0;
for (int x = sx; x <= ex; x++)
{
for (int y = sy; y <= ey; y++)
{
for (int z = sz; z <= ez; z++)
{
buffer[counter] = player.WorldMap.GetBlock(x, y, z);
player.WorldMap.QueueUpdate(new BlockUpdate(null, new Vector3I(x, y, z), Block.Air));
counter++;
}
}
}
DoorInfo info = new DoorInfo(zone, buffer, player.WorldMap);
//reclose door
Scheduler.NewTask(doorTimer_Elapsed).RunOnce(info, DoorCloseTimer);
}