using System; using UnityEngine; namespace XCharts.Runtime { /// /// Split line of axis in grid area. /// |坐标轴在 grid 区域中的分隔线。 /// [Serializable] public class AxisSplitLine : BaseLine { [SerializeField] private int m_Interval; [SerializeField] private float m_Distance; [SerializeField] private bool m_AutoColor; [SerializeField][Since("v3.3.0")] private bool m_ShowStartLine = true; [SerializeField][Since("v3.3.0")] private bool m_ShowEndLine = true; /// /// The distance between the split line and axis line. /// |刻度线与轴线的距离。 /// public float distance { get { return m_Distance; } set { m_Distance = value; } } /// /// auto color. /// |自动设置颜色。 /// public bool autoColor { get { return m_AutoColor; } set { m_AutoColor = value; } } /// /// Interval of Axis splitLine. /// |坐标轴分隔线的显示间隔。 /// public int interval { get { return m_Interval; } set { if (PropertyUtil.SetStruct(ref m_Interval, value)) SetVerticesDirty(); } } /// /// Whether to show the first split line. /// |是否显示第一条分割线。 /// public bool showStartLine { get { return m_ShowStartLine; } set { if (PropertyUtil.SetStruct(ref m_ShowStartLine, value)) SetVerticesDirty(); } } /// /// Whether to show the last split line. /// |是否显示最后一条分割线。 /// public bool showEndLine { get { return m_ShowEndLine; } set { if (PropertyUtil.SetStruct(ref m_ShowEndLine, value)) SetVerticesDirty(); } } public override bool vertsDirty { get { return m_VertsDirty || m_LineStyle.anyDirty; } } public override void ClearVerticesDirty() { base.ClearVerticesDirty(); m_LineStyle.ClearVerticesDirty(); } public static AxisSplitLine defaultSplitLine { get { return new AxisSplitLine() { m_Show = false, }; } } public AxisSplitLine Clone() { var axisSplitLine = new AxisSplitLine(); axisSplitLine.show = show; axisSplitLine.interval = interval; axisSplitLine.showStartLine = showStartLine; axisSplitLine.showEndLine = showEndLine; axisSplitLine.lineStyle = lineStyle.Clone(); return axisSplitLine; } public void Copy(AxisSplitLine splitLine) { base.Copy(splitLine); interval = splitLine.interval; showStartLine = splitLine.showStartLine; showEndLine = splitLine.showEndLine; } internal bool NeedShow(int index, int total) { if (!show) return false; if (interval != 0 && index % (interval + 1) != 0) return false; if (!showStartLine && index == 0) return false; if (!showEndLine && index == total - 1) return false; return true; } } }