Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
PixelPaint.cs
Go to the documentation of this file.
2using UnityEngine;
3using UnityEngine.UI;
4
5public class PixelPaint : MonoBehaviour
6{
7 public RawImage imageRect;
8
9 public RawImage imageGrid;
10
11 public RawImage imagePreview;
12
13 public RawImage imageMask;
14
15 public Vector2Int size;
16
17 public int scale;
18
19 public int brushSize;
20
21 public int paddingBrush;
22
23 public Texture2D tex;
24
25 public Image imageBrush;
26
28
30
31 public Color bgColor;
32
33 private bool first = true;
34
35 private void Update()
36 {
37 RectTransform rectTransform = (RectTransform)imageRect.transform;
38 RectTransformUtility.ScreenPointToLocalPointInRectangle(imageRect.rectTransform, Input.mousePosition, null, out var localPoint);
39 Vector2 vector = localPoint - rectTransform.rect.min;
40 vector.x *= imageRect.uvRect.width / rectTransform.rect.width;
41 vector.y *= imageRect.uvRect.height / rectTransform.rect.height;
42 vector += imageRect.uvRect.min;
43 int num = (int)(vector.x * (float)size.x);
44 int num2 = (int)(vector.y * (float)size.y);
45 bool flag = vector.x >= 0f && vector.y >= 0f && vector.x <= 1f && vector.y <= 1f;
46 if (flag)
47 {
48 if (Input.GetMouseButton(0) && !first)
49 {
50 for (int i = num2 - brushSize + 1; i < num2 + brushSize; i++)
51 {
52 for (int j = num - brushSize + 1; j < num + brushSize; j++)
53 {
54 if (j >= 0 && i >= 0 && j < size.x && i < size.y)
55 {
56 tex.SetPixel(j, i, picker.SelectedColor);
57 }
58 }
59 }
60 tex.Apply();
61 }
62 if (Input.GetMouseButton(1))
63 {
64 Color pixel = tex.GetPixel(num, num2);
65 picker.SelectColor(pixel);
66 }
67 }
68 else if (Input.GetMouseButtonDown(0))
69 {
70 first = true;
71 }
72 float axis = Input.GetAxis("Mouse ScrollWheel");
73 if (axis > 0f)
74 {
75 brushSize++;
76 }
77 if (axis < 0f)
78 {
79 brushSize--;
80 }
81 brushSize = Mathf.Clamp(brushSize, 1, 10);
82 int num3 = ((brushSize == 1) ? 1 : (1 + (brushSize - 1) * 2));
83 imageBrush.rectTransform.sizeDelta = new Vector2(num3 * scale + paddingBrush, num3 * scale + paddingBrush);
84 imageBrush.rectTransform.anchoredPosition = new Vector2(scale / 2 + num * scale, -size.y * scale + num2 * scale + scale / 2);
85 imageBrush.gameObject.SetActive(flag);
86 if (!Input.GetMouseButton(0))
87 {
88 first = false;
89 }
90 }
91
92 public void Init()
93 {
94 Vector2 sizeDelta = new Vector2(size.x * scale, size.y * scale);
95 imageRect.rectTransform.sizeDelta = sizeDelta;
96 imageGrid.rectTransform.sizeDelta = sizeDelta;
97 imageGrid.uvRect = new Rect(0f, 0f, size.x, size.y);
98 tex = new Texture2D(size.x, size.y, TextureFormat.ARGB32, mipChain: false);
99 tex.filterMode = FilterMode.Point;
100 imagePreview.texture = tex;
101 imagePreview.rectTransform.sizeDelta = new Vector2(size.x * 2, size.y * 2);
102 imageRect.texture = tex;
103 Fill(bgColor);
104 picker.Init();
107 }
108
109 public void Fill(Color color)
110 {
111 int num = tex.GetPixels().Length;
112 Color[] array = new Color[num];
113 for (int i = 0; i < num; i++)
114 {
115 array[i] = color;
116 }
117 tex.SetPixels(array);
118 tex.Apply();
119 }
120
121 private void OnDestroy()
122 {
123 if ((bool)tex)
124 {
125 Object.Destroy(tex);
126 tex = null;
127 }
128 }
129}
void SelectColor(Color newColor)
Definition: ColorPicker.cs:218
void Update()
Definition: PixelPaint.cs:35
RawImage imageGrid
Definition: PixelPaint.cs:9
RawImage imagePreview
Definition: PixelPaint.cs:11
Color startColor
Definition: PixelPaint.cs:29
ColorPicker picker
Definition: PixelPaint.cs:27
int brushSize
Definition: PixelPaint.cs:19
int paddingBrush
Definition: PixelPaint.cs:21
Color bgColor
Definition: PixelPaint.cs:31
void Init()
Definition: PixelPaint.cs:92
Image imageBrush
Definition: PixelPaint.cs:25
Vector2Int size
Definition: PixelPaint.cs:15
bool first
Definition: PixelPaint.cs:33
void Fill(Color color)
Definition: PixelPaint.cs:109
Texture2D tex
Definition: PixelPaint.cs:23
void OnDestroy()
Definition: PixelPaint.cs:121
RawImage imageMask
Definition: PixelPaint.cs:13
RawImage imageRect
Definition: PixelPaint.cs:7