コード例 #1
0
            public static ApplyBorder GetBorderFor(int x, int y)
            {
                var request = new ApplyBorder();

                switch (x)
                {
                case 0:
                    request.Left = ApplyBorder.Style.Transparent;
                    break;

                case 1:
                    request.Right = ApplyBorder.Style.Clone;
                    break;

                case 2:
                    request.Left = ApplyBorder.Style.Clone;
                    break;

                case 3:
                    if (y < 2)
                    {
                        request.Right = ApplyBorder.Style.Clone;
                    }
                    else
                    {
                        request.Right = ApplyBorder.Style.Transparent;
                    }
                    break;
                }

                switch (y)
                {
                case 0:
                case 4:
                    request.Top = ApplyBorder.Style.Clone;
                    break;

                case 1:
                    request.Bottom = ApplyBorder.Style.Clone;
                    break;

                case 2:
                    request.Top = ApplyBorder.Style.Transparent;
                    break;

                case 3:
                    request.Bottom = ApplyBorder.Style.Clone;
                    break;

                case 5:
                    request.Bottom = ApplyBorder.Style.Transparent;
                    break;
                }

                return(request);
            }
コード例 #2
0
        private static Color[] CreateStamps(Texture2D original, Vector2Int start, Vector2Int size, ApplyBorder applyBorder)
        {
            var request = original.GetPixels(start.x, start.y, size.x, size.y);

            var borderTexture = CreateBlankTexture(new Vector2Int(size.x + 1, size.y + 1));

            borderTexture.SetPixels(applyBorder.Left == ApplyBorder.Style.None ? 0 : 1, applyBorder.Bottom == ApplyBorder.Style.None ? 0 : 1, size.x, size.y, request);

            if (applyBorder.Left == ApplyBorder.Style.Clone)
            {
                var clone = original.GetPixels(start.x, start.y, 1, size.y);
                borderTexture.SetPixels(0, applyBorder.Bottom == ApplyBorder.Style.None ? 0 : 1, 1, size.y, clone);
            }
            if (applyBorder.Right == ApplyBorder.Style.Clone)
            {
                var clone = original.GetPixels(start.x + size.x - 1, start.y, 1, size.y);
                borderTexture.SetPixels(size.x, applyBorder.Bottom == ApplyBorder.Style.None ? 0 : 1, 1, size.y, clone);
            }
            if (applyBorder.Bottom == ApplyBorder.Style.Clone)
            {
                var clone = original.GetPixels(start.x, start.y, size.x, 1);
                borderTexture.SetPixels(applyBorder.Left == ApplyBorder.Style.None ? 0 : 1, 0, size.x, 1, clone);
            }
            if (applyBorder.Top == ApplyBorder.Style.Clone)
            {
                var clone = original.GetPixels(start.x, start.y + size.y - 1, size.x, 1);
                borderTexture.SetPixels(applyBorder.Left == ApplyBorder.Style.None ? 0 : 1, size.y, size.x, 1, clone);
            }

            borderTexture.Apply();
            request = borderTexture.GetPixels();
            GameObject.DestroyImmediate(borderTexture);
            return(request);
        }
コード例 #3
0
        private static List <Color[]> GetsStampsFrom(Texture2D original, Vector2Int stampSize, Vector2Int location)
        {
            var request = new List <Color[]>();

            for (var y = 0; y < 6; y++)
            {
                for (var x = 0; x < 4; x++)
                {
                    if (x < 2 && y < 2)
                    {
                        continue;
                    }

                    request.Add(CreateStamps(original, location + new Vector2Int(stampSize.x * x, stampSize.y * 6 - stampSize.y * (y + 1)), stampSize, ApplyBorder.GetBorderFor(x, y)));
                }
            }

            return(request);
        }