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