diff options
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), + }; + } +} |