/// <summary>`source` size must be dividable by `N`</summary> public static Model create(ref Map source, int N, Vec2i outputSize) { if (outputSize.x % N != 0 || outputSize.y % N != 0) { throw new System.Exception($"output size {outputSize} must be dividable with N={N}"); } var gridSize = outputSize / N; var patterns = RuleData.extractEveryChunk(ref source, N, PatternUtil.variations); var rule = AdjacencyModel.buildRule(patterns, ref source); return(new Model(gridSize, patterns, rule)); }