private (int[, ], bool[, ], int[, ]) MarkPatterns(int[,] grid, bool[,] gridLock, int[,] gridAngles) { int[,] pattern; int[] indexOrder = new int[] { 7, 6, 5, 4, 3 }; for (int count = 0; count < indexOrder.Length; count++) // foreach (int index in Enum.GetValues(typeof(Library.Elements))) { int index = indexOrder[count]; if (index < 3 || !patternChecks[index - 3] || !library.elementPool[index].hasPattern) { continue; } int[] angles = LibraryElements.GetAngles(index); // there are more than 1 angles for this pattern foreach (int angle in angles) { pattern = LibraryElements.GetPattern(index); pattern = RotatePattern(pattern, angle); List <(int, int)> patternPositions = PatternMapper.FindPattern(ref grid, ref gridLock, pattern); Debug.Log($"Found elements: {index} / {patternPositions.Count}"); foreach ((int width, int depth)position in patternPositions) { Debug.Log($"ptrn {index}: {position.width}/{position.depth}"); grid[position.width, position.depth] = index; gridAngles[position.width, position.depth] = angle; } } } return(grid, gridLock, gridAngles); }
private void Init() { library = libraryTransform.GetComponent <LibraryElements>(); }