修复Scatter动态添加数据时图表不及时刷新的问题

This commit is contained in:
monitor1394
2023-08-22 08:16:12 +08:00
parent d9e1c1211c
commit 3476c56eb6
4 changed files with 6 additions and 20 deletions

View File

@@ -34,13 +34,13 @@ namespace XCharts.Runtime
SetValue(ref needInteract, value);
}
public void SetValue(ref bool needInteract, float value)
public void SetValue(ref bool needInteract, float value, bool previousValueZero = false)
{
if (m_TargetValue != value)
{
needInteract = true;
if (!m_ValueEnable)
m_PreviousValue = value;
m_PreviousValue = previousValueZero ? 0 : value;
else
m_PreviousValue = m_CurrentValue;
UpdateStart();
@@ -52,19 +52,6 @@ namespace XCharts.Runtime
}
}
public void SetValue(float value)
{
if (m_TargetValue != value)
{
if (!m_ValueEnable)
m_PreviousValue = value;
else
m_PreviousValue = m_CurrentValue;
UpdateStart();
m_TargetValue = value;
}
}
public void SetPosition(ref bool needInteract, Vector3 pos)
{
if (m_TargetPosition != pos)

View File

@@ -180,7 +180,8 @@ namespace XCharts.Runtime
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration))
{
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme.serie.scatterSymbolSize, state);
serieData.interact.SetValue(ref interacting, symbolSize);
serieData.interact.SetValue(ref interacting, symbolSize, true);
serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration);
}
symbolSize *= rate;
@@ -198,7 +199,6 @@ namespace XCharts.Runtime
}
else
{
if (symbolSize > 100) symbolSize = 100;
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
color, toColor, emptyColor, borderColor, symbol.gap, cornerRadius);
}

View File

@@ -143,7 +143,6 @@ namespace XCharts.Runtime
if (serie.vertsDirty)
{
chart.RefreshPainter(serie);
serie.ResetInteract();
serie.ClearVerticesDirty();
}
if (serie.interactDirty)

View File

@@ -673,7 +673,7 @@ namespace XCharts.Runtime
}
}
public static float GetSysmbolSize(Serie serie, SerieData serieData, float defaultSize, SerieState state = SerieState.Auto)
public static float GetSysmbolSize(Serie serie, SerieData serieData, float defaultSize, SerieState state = SerieState.Auto, bool checkAnimation = false)
{
if (serie == null) return defaultSize;
if (state == SerieState.Auto)
@@ -699,7 +699,7 @@ namespace XCharts.Runtime
var symbol = stateStyle.symbol;
size = symbol.GetSize(serieData == null ? null : serieData.data, defaultSize);
}
if (serieData != null)
if (serieData != null && checkAnimation)
{
size = (float)serieData.GetAddAnimationData(0, size, serie.animation.GetAdditionDuration());
}