diff --git a/CHANGELOG.md b/CHANGELOG.md index 869d8e74..301499fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ ## master +* (2022.07.07) 优化`Axis`的`minMaxType`指定为`MinMax`时支持精确到小数 * (2022.07.05) 修复`Chart`里有多个坐标系时绘制异常的问题 (#210) * (2022.07.04) 增加`Settings`的`axisMaxSplitNumber`参数设置`Axis`的最大分隔段数 * (2022.07.04) 修复`Axis`在设置`offset`后`Tick`绘制位置异常的问题 (#209) diff --git a/Examples/Example_Dynamic.cs b/Examples/Example_Dynamic.cs index e2a2f94d..b6a09a0d 100644 --- a/Examples/Example_Dynamic.cs +++ b/Examples/Example_Dynamic.cs @@ -11,7 +11,7 @@ namespace XCharts.Example { public int maxCacheDataNumber = 100; public float initDataTime = 2; - public bool insertDataToHead = true; + public bool insertDataToHead = false; private BaseChart chart; private float updateTime; diff --git a/Runtime/Component/Axis/Axis.cs b/Runtime/Component/Axis/Axis.cs index 8b9f8ee0..b51f9461 100644 --- a/Runtime/Component/Axis/Axis.cs +++ b/Runtime/Component/Axis/Axis.cs @@ -89,7 +89,7 @@ namespace XCharts.Runtime [SerializeField] protected int m_MaxCache = 0; [SerializeField] protected float m_LogBase = 10; [SerializeField] protected bool m_LogBaseE = false; - [SerializeField] protected int m_CeilRate = 0; + [SerializeField] protected double m_CeilRate = 0; [SerializeField] protected bool m_Inverse = false; [SerializeField] private bool m_Clockwise = true; [SerializeField] private bool m_InsertDataToHead; @@ -257,7 +257,7 @@ namespace XCharts.Runtime /// The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated. /// |最大最小值向上取整的倍率。默认为0时自动计算。 /// - public int ceilRate + public double ceilRate { get { return m_CeilRate; } set { if (PropertyUtil.SetStruct(ref m_CeilRate, value < 0 ? 0 : value)) SetAllDirty(); } diff --git a/Runtime/Component/Axis/AxisHelper.cs b/Runtime/Component/Axis/AxisHelper.cs index 8a1d31e4..888e30cf 100644 --- a/Runtime/Component/Axis/AxisHelper.cs +++ b/Runtime/Component/Axis/AxisHelper.cs @@ -327,7 +327,7 @@ namespace XCharts.Runtime /// /// /// - public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, int ceilRate = 0) + public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, double ceilRate = 0) { if (axis.type == Axis.AxisType.Log) { diff --git a/Runtime/Component/Radar/RadarCoord.cs b/Runtime/Component/Radar/RadarCoord.cs index 6410f661..5b0cb039 100644 --- a/Runtime/Component/Radar/RadarCoord.cs +++ b/Runtime/Component/Radar/RadarCoord.cs @@ -103,7 +103,7 @@ namespace XCharts.Runtime [SerializeField] private bool m_Indicator = true; [SerializeField] private PositionType m_PositionType = PositionType.Vertice; [SerializeField] private float m_IndicatorGap = 10; - [SerializeField] private int m_CeilRate = 0; + [SerializeField] private double m_CeilRate = 0; [SerializeField] private bool m_IsAxisTooltip; [SerializeField] private Color32 m_OutRangeColor = Color.red; [SerializeField] private bool m_ConnectCenter = false; @@ -214,7 +214,7 @@ namespace XCharts.Runtime /// The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated. /// |最大最小值向上取整的倍率。默认为0时自动计算。 /// - public int ceilRate + public double ceilRate { get { return m_CeilRate; } set { if (PropertyUtil.SetStruct(ref m_CeilRate, value < 0 ? 0 : value)) SetAllDirty(); } diff --git a/Runtime/Internal/Utilities/ChartHelper.cs b/Runtime/Internal/Utilities/ChartHelper.cs index 0a60f646..abf9ad4f 100644 --- a/Runtime/Internal/Utilities/ChartHelper.cs +++ b/Runtime/Internal/Utilities/ChartHelper.cs @@ -356,20 +356,6 @@ namespace XCharts.Runtime var alignment = textStyle.GetAlignment(autoAlignment); UpdateAnchorAndPivotByTextAlignment(alignment, out anchorMin, out anchorMax, out pivot); var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta); - // TODO: 为了兼容旧版本,这里后面版本可以去掉 - #region temp code - var oldText = labelObj.GetComponent(); - if (oldText != null) - { - GameObject.DestroyImmediate(oldText); - } - var oldImage = labelObj.GetComponent(); - if (oldImage != null) - { - GameObject.DestroyImmediate(oldImage); - } - #endregion - var label = GetOrAddComponent(labelObj); label.text = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, sizeDelta, textStyle, theme, autoColor, autoAlignment, label.text); @@ -624,7 +610,7 @@ namespace XCharts.Runtime return (Color32) color; } - public static double GetMaxDivisibleValue(double max, int ceilRate) + public static double GetMaxDivisibleValue(double max, double ceilRate) { if (max == 0) return 0; if (max > -1 && max < 1) @@ -666,7 +652,7 @@ namespace XCharts.Runtime } } - public static double GetMinDivisibleValue(double min, int ceilRate) + public static double GetMinDivisibleValue(double min, double ceilRate) { if (min == 0) return 0; if (min > -1 && min < 1) diff --git a/Runtime/Serie/Line/LineHandler.GridCoord.cs b/Runtime/Serie/Line/LineHandler.GridCoord.cs index 410e3e2b..7c24bf37 100644 --- a/Runtime/Serie/Line/LineHandler.GridCoord.cs +++ b/Runtime/Serie/Line/LineHandler.GridCoord.cs @@ -148,7 +148,7 @@ namespace XCharts.Runtime Axis axis; Axis relativedAxis; - var isY = chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis); + chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis); for (int i = 0; i < count; i++) { diff --git a/Runtime/Serie/Serie.cs b/Runtime/Serie/Serie.cs index 89b3b6e3..245b8dca 100644 --- a/Runtime/Serie/Serie.cs +++ b/Runtime/Serie/Serie.cs @@ -852,8 +852,11 @@ namespace XCharts.Runtime public override void ClearVerticesDirty() { base.ClearVerticesDirty(); - foreach (var serieData in m_Data) - serieData.ClearVerticesDirty(); + if (!IsPerformanceMode()) + { + foreach (var serieData in m_Data) + serieData.ClearVerticesDirty(); + } symbol.ClearVerticesDirty(); lineStyle.ClearVerticesDirty(); itemStyle.ClearVerticesDirty(); @@ -872,8 +875,11 @@ namespace XCharts.Runtime public override void ClearComponentDirty() { base.ClearComponentDirty(); - foreach (var serieData in m_Data) - serieData.ClearComponentDirty(); + if (!IsPerformanceMode()) + { + foreach (var serieData in m_Data) + serieData.ClearComponentDirty(); + } symbol.ClearComponentDirty(); lineStyle.ClearComponentDirty(); itemStyle.ClearComponentDirty(); @@ -900,6 +906,8 @@ namespace XCharts.Runtime private bool AnySerieDataVerticesDirty() { + if (IsPerformanceMode()) + return false; if (this is ISimplifiedSerie) return false; foreach (var serieData in m_Data) @@ -909,6 +917,8 @@ namespace XCharts.Runtime private bool AnySerieDataComponentDirty() { + if (IsPerformanceMode()) + return false; if (this is ISimplifiedSerie) return false; foreach (var serieData in m_Data) @@ -1650,7 +1660,7 @@ namespace XCharts.Runtime /// public bool IsPerformanceMode() { - return m_Large && m_Data.Count > m_LargeThreshold; + return m_Large && m_Data.Count >= m_LargeThreshold; } public bool IsLegendName(string legendName) diff --git a/Runtime/Serie/SerieHelper.cs b/Runtime/Serie/SerieHelper.cs index 74875936..c611f9c1 100644 --- a/Runtime/Serie/SerieHelper.cs +++ b/Runtime/Serie/SerieHelper.cs @@ -573,7 +573,7 @@ namespace XCharts.Runtime /// /// /// - public static void UpdateMinMaxData(Serie serie, int dimension, int ceilRate = 0, DataZoom dataZoom = null) + public static void UpdateMinMaxData(Serie serie, int dimension, double ceilRate = 0, DataZoom dataZoom = null) { double min = 0, max = 0; GetMinMaxData(serie, dimension, out min, out max, dataZoom); @@ -589,7 +589,7 @@ namespace XCharts.Runtime } } - public static void GetAllMinMaxData(Serie serie, int ceilRate = 0, DataZoom dataZoom = null) + public static void GetAllMinMaxData(Serie serie, double ceilRate = 0, DataZoom dataZoom = null) { double min = 0, max = 0; GetMinMaxData(serie, out min, out max, dataZoom);