/// <summary> /// Creates a flat representation of given 3D array /// </summary> /// <typeparam name="T"></typeparam> /// <param name="array"></param> /// <returns></returns> public static Flattened3DArray <T> MakeFrom <T>(T[,,] array) { var retVal = new Flattened3DArray <T>(); retVal.dimensions = new int[3]; retVal.items = new T[array.Length]; for (int i = 0; i < 3; i++) { retVal.dimensions[i] = array.GetLength(i); } int width = retVal.dimensions[0]; int height = retVal.dimensions[1]; int depth = retVal.dimensions[2]; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { for (int z = 0; z < depth; z++) { retVal.Set(array[x, y, z], x, y, z); } } } return(retVal); }
/// <summary> /// Creates a flattened array with given dimensions /// </summary> /// <typeparam name="T"></typeparam> /// <param name="x">width</param> /// <param name="y">height</param> /// <param name="z">depth</param> /// <returns></returns> public static Flattened3DArray <T> New <T>(int x, int y, int z) { var retVal = new Flattened3DArray <T>(); retVal.dimensions = new int[] { x, y, z }; retVal.items = new T[x * y * z]; return(retVal); }
public Flattened3DArray(Flattened3DArray <T> other) { dimensions = other.dimensions; items = other.items; }