Tanoda
BestFitOutline.cs
Go to the documentation of this file.
1
3
4using System.Collections.Generic;
6{
7 [AddComponentMenu("UI/Effects/Extensions/BestFit Outline")]
8 public class BestFitOutline : Shadow
9 {
10 //
11 // Constructors
12 //
13 protected BestFitOutline ()
14 {
15 }
16
17 //
18 // Methods
19 //
20 public override void ModifyMesh (Mesh mesh)
21 {
22 if (!this.IsActive ())
23 {
24 return;
25 }
26
27 List<UIVertex> verts = new List<UIVertex>();
28 using (var helper = new VertexHelper(mesh))
29 {
30 helper.GetUIVertexStream(verts);
31 }
32
33 Text foundtext = GetComponent<Text>();
34
35 float best_fit_adjustment = 1f;
36
37 if (foundtext && foundtext.resizeTextForBestFit)
38 {
39 best_fit_adjustment = (float)foundtext.cachedTextGenerator.fontSizeUsedForBestFit / (foundtext.resizeTextMaxSize-1); //max size seems to be exclusive
40 }
41
42 int start = 0;
43 int count = verts.Count;
44 base.ApplyShadowZeroAlloc(verts, base.effectColor, start, verts.Count, base.effectDistance.x*best_fit_adjustment, base.effectDistance.y*best_fit_adjustment);
45 start = count;
46 count = verts.Count;
47 base.ApplyShadowZeroAlloc(verts, base.effectColor, start, verts.Count, base.effectDistance.x*best_fit_adjustment, -base.effectDistance.y*best_fit_adjustment);
48 start = count;
49 count = verts.Count;
50 base.ApplyShadowZeroAlloc(verts, base.effectColor, start, verts.Count, -base.effectDistance.x*best_fit_adjustment, base.effectDistance.y*best_fit_adjustment);
51 start = count;
52 count = verts.Count;
53 base.ApplyShadowZeroAlloc(verts, base.effectColor, start, verts.Count, -base.effectDistance.x*best_fit_adjustment, -base.effectDistance.y*best_fit_adjustment);
54
55 using (var helper = new VertexHelper())
56 {
57 helper.AddUIVertexTriangleStream(verts);
58 helper.FillMesh(mesh);
59 }
60 }
61 }
62}
Credit Erdener Gonenc - @PixelEnvision.