public Platformer2DGraph(Cell3D polygon)
     : base(polygon)
 {
 }
 public Platformer2DGrid(int x, int y, int z, Cell3D polygon, INodeInfo fill)
     : base(x, y, z, polygon, fill)
 {
 }
 public Platformer2DGraph(int x, int y, int z, Cell3D polygon)
     : base(x, y, z, polygon)
 {
 }
 public void Init(Cell3D polygon)
 {
     Polygon = polygon;
     Edges = new CellEdgeCollection();
 }
 public Grid3D(Cell3D polygon)
 {
     Init(polygon);
 }
 public Grid3D(int x, int y, int z, Cell3D polygon)
 {
     Init(polygon);
     Create(x, y, z, polygon);
 }
        /// <summary>
        /// Creates new grid of specefic size
        /// </summary>
        /// <param name="sizeX">X size parameter</param>
        /// <param name="sizeY">Y size parameter</param>
        /// <param name="sizeZ">Z size parameter</param>
        public void Create(int sizeX, int sizeY, int sizeZ, Cell3D polygon, INodeInfo fill = null)
        {
            SizeX = sizeX;
            SizeY = sizeY;
            SizeZ = sizeZ;
            Nodes = new ArrayEx<Cell>(new int[] { SizeX, SizeY, SizeZ });

            for (int k = 0; k < SizeZ; k++)
            {
                for (int j = 0; j < SizeY; j++)
                {
                    for (int i = 0; i < SizeX; i++)
                    {
                        //_nodes[i, j, k] = new Node3D<T>(i * Polygon.Bounds.SizeX, j * Polygon.Bounds.SizeY, k * Polygon.Bounds.SizeZ, Polygon);
                        Nodes[i, j, k] = new Cell(i, j, k, Polygon, this, fill);
                    }
                }
            }
        }
 public Grid3D(int x, int y, int z, Cell3D polygon, INodeInfo fill)
 {
     Init(polygon);
     Create(x, y, z, polygon, fill);
 }