Esempio n. 1
0
    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);
    }
Esempio n. 2
0
 private void Init()
 {
     library = libraryTransform.GetComponent <LibraryElements>();
 }