diff options
author | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
commit | 766cdff5ffa72b65d7f106658d1603f47739b2ba (patch) | |
tree | 34d7799a94dfa9be182825577583c0fa6dc935f7 /GameCode/OnlyOneEdgeModifier.cs |
+ init
Diffstat (limited to 'GameCode/OnlyOneEdgeModifier.cs')
-rw-r--r-- | GameCode/OnlyOneEdgeModifier.cs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/GameCode/OnlyOneEdgeModifier.cs b/GameCode/OnlyOneEdgeModifier.cs new file mode 100644 index 0000000..080423c --- /dev/null +++ b/GameCode/OnlyOneEdgeModifier.cs @@ -0,0 +1,57 @@ +using UnityEngine; +using UnityEngine.UI.ProceduralImage; + +[ModifierID("Only One Edge")] +public class OnlyOneEdgeModifier : ProceduralImageModifier +{ + public enum ProceduralImageEdge + { + Top, + Bottom, + Left, + Right + } + + [SerializeField] + private float radius; + + [SerializeField] + private ProceduralImageEdge side; + + public float Radius + { + get + { + return radius; + } + set + { + radius = value; + base._Graphic.SetVerticesDirty(); + } + } + + public ProceduralImageEdge Side + { + get + { + return side; + } + set + { + side = value; + } + } + + public override Vector4 CalculateRadius(Rect imageRect) + { + return side switch + { + ProceduralImageEdge.Top => new Vector4(radius, radius, 0f, 0f), + ProceduralImageEdge.Right => new Vector4(0f, radius, radius, 0f), + ProceduralImageEdge.Bottom => new Vector4(0f, 0f, radius, radius), + ProceduralImageEdge.Left => new Vector4(radius, 0f, 0f, radius), + _ => new Vector4(0f, 0f, 0f, 0f), + }; + } +} |