Exemplo n.º 1
0
        public void Subdivide(Vector3Int delta, bool centered = true)
        {
            if (delta.x < 0 || delta.y < 0 || delta.y < 0)
            {
                return;
            }

            Vector3Int factor = delta + Vector3Int.one;

            Pattern oldPattern = this.pattern;
            Pattern newPattern = new Pattern(oldPattern.Size * factor, Tile.Empty);

            Vector3Int offset = centered? new Vector3Int(
                (factor.x - 1) / 2,
                (factor.y - 1) / 2,
                (factor.z - 1) / 2
                ) : Vector3Int.zero;

            foreach (Vector3Int p in Utils.IterateGrid3D(oldPattern.Size))
            {
                newPattern.SetTile(p * factor + offset, oldPattern.GetTile(p), false);
            }

            this.pattern = newPattern;
        }
Exemplo n.º 2
0
        private void SetPattern(Vector3Int position, Pattern pattern)
        {
            Vector3Int pSize       = pattern.Size;
            Pattern    mainPattern = GetComponent <PatternView>().pattern;

            foreach (Vector3Int p in Utils.IterateGrid3D(pSize))
            {
                Tile tile = pattern.tiles[p.x, p.y, p.z];
                if (tile.Label != Tile.Wildcard.Label)
                {
                    mainPattern.SetTile(position + p, tile, false);
                }
            }
            mainPattern.TriggerChangeEvents();
        }