Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
OutlineImage.cs
Go to the documentation of this file.
1using UnityEngine;
2using UnityEngine.UI;
3
4namespace Applibot;
5
7{
8 [ColorUsage(true, true)]
9 [SerializeField]
10 private Color _outlineColor = Color.white;
11
12 private Image _image;
13
14 [SerializeField]
15 private bool _isStatic;
16
17 private int _OutlineColor = Shader.PropertyToID("_OutlineColor");
18
19 private readonly int _SrcFactor = Shader.PropertyToID("_SrcFactor");
20
21 private readonly int _DstFactor = Shader.PropertyToID("_DstFactor");
22
23 protected override void UpdateMaterial(Material baseMaterial)
24 {
25 if (material == null)
26 {
27 Shader shader = Shader.Find("Applibot/UI/Outline");
28 material = new Material(shader);
29 }
31 material.SetInt(_SrcFactor, 5);
32 material.SetInt(_DstFactor, 10);
33 if (base.canvasScaler != null)
34 {
35 Vector2 referenceResolution = base.canvasScaler.referenceResolution;
36 Vector2 one = Vector2.one;
37 if (_image != null && _image.sprite.packed)
38 {
39 Rect textureRect = _image.sprite.textureRect;
40 one = new Vector2(textureRect.width, textureRect.height);
41 }
42 else
43 {
44 Texture mainTexture = base.graphic.mainTexture;
45 one = new Vector2(mainTexture.width, mainTexture.height);
46 }
47 float x = one.x / referenceResolution.x;
48 float y = one.y / referenceResolution.y;
49 material.SetVector("_scaleFactor", new Vector4(x, y));
50 }
51 }
52
53 private void Awake()
54 {
55 _image = base.graphic as Image;
56 if (Application.isPlaying && _isStatic)
57 {
58 Capture();
59 }
60 }
61
62 public void Capture()
63 {
64 UpdateMaterial(null);
65 material.SetInt(_SrcFactor, 1);
66 material.SetInt(_DstFactor, 0);
67 if (TryGetComponent<RawImage>(out var component))
68 {
69 Texture mainTexture = base.graphic.mainTexture;
70 float width = (base.transform as RectTransform).rect.width;
71 float height = (base.transform as RectTransform).rect.height;
72 RenderTexture renderTexture = new RenderTexture((int)width, (int)height, 0, RenderTextureFormat.ARGBHalf);
73 Graphics.Blit(mainTexture, renderTexture, material);
74 component.texture = renderTexture;
76 base.enabled = false;
77 }
78 }
79}
readonly int _DstFactor
Definition: OutlineImage.cs:21
readonly int _SrcFactor
Definition: OutlineImage.cs:19
override void UpdateMaterial(Material baseMaterial)
Definition: OutlineImage.cs:23