private void DoScan(int sleep)
        {
            this.cancel     = false;
            this.processing = true;
            this.objects    = new Array3D <GameObject>(this.map.Columns, this.map.Rows, Math.Max(this.map.Layers.Length, 1));
            var transform = this.map.transform;

            for (var i = 0; i < transform.childCount; i++)
            {
                // process child
                var    child = transform.GetChild(i);
                string prefabName;
                int    layer;
                int    column;
                int    row;
                if (child.name.TryParsePrefabName(out prefabName, out layer, out column, out row))
                {
                    this.Set(column, row, layer, child.gameObject);
                }

                // check if canceled
                if (this.cancel)
                {
                    break;
                }

                // update progress
                this.progress = (float)i / transform.childCount;

                // check if threat should sleep between each entry
                if (sleep > 0)
                {
                    System.Threading.Thread.Sleep(sleep);
                }
            }

            this.cancel     = false;
            this.processing = false;
        }
 public void CopyTo(Array3D <T> array, int z)
 {
 }