public static Vector2 Reduce3x3(Vector2 curr_cell, Reduce3x3Callback <Vector2> callback) { return(UMatrix.Reduce3x3 <Vector2>( curr_cell, (prev, curr) => curr_cell == curr ? prev : callback(prev, curr), curr_cell )); }
public static T Reduce3x3 <T>(Vector2 curr_cell, Reduce3x3Callback <T> callback, T initial) { T result = initial; UMatrix.ForEach3x3(curr_cell, curr_neighbour => { result = callback(result, curr_neighbour); }); return(result); }
public static void ForEachRotated(Vector2 size, ForEachXYCallback xy_callback) => UMatrix.ForEachRotated(size, (y) => { }, xy_callback);
public static void ForEachRotated(Vector2 size, ForEachYCallback y_callback, ForEachXYCallback xy_callback) => UMatrix.ForEach(new Vector2(size.Y, size.X), (y) => y_callback(y), (x, y) => xy_callback(y, x));
public static void ForEach(Vector2 size, ForEachXYCallback xy_callback) => UMatrix.ForEach(size, (x) => { }, xy_callback);