修复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); 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) if (m_TargetValue != value)
{ {
needInteract = true; needInteract = true;
if (!m_ValueEnable) if (!m_ValueEnable)
m_PreviousValue = value; m_PreviousValue = previousValueZero ? 0 : value;
else else
m_PreviousValue = m_CurrentValue; m_PreviousValue = m_CurrentValue;
UpdateStart(); 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) public void SetPosition(ref bool needInteract, Vector3 pos)
{ {
if (m_TargetPosition != pos) if (m_TargetPosition != pos)

View File

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

View File

@@ -143,7 +143,6 @@ namespace XCharts.Runtime
if (serie.vertsDirty) if (serie.vertsDirty)
{ {
chart.RefreshPainter(serie); chart.RefreshPainter(serie);
serie.ResetInteract();
serie.ClearVerticesDirty(); serie.ClearVerticesDirty();
} }
if (serie.interactDirty) 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 (serie == null) return defaultSize;
if (state == SerieState.Auto) if (state == SerieState.Auto)
@@ -699,7 +699,7 @@ namespace XCharts.Runtime
var symbol = stateStyle.symbol; var symbol = stateStyle.symbol;
size = symbol.GetSize(serieData == null ? null : serieData.data, defaultSize); 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()); size = (float)serieData.GetAddAnimationData(0, size, serie.animation.GetAdditionDuration());
} }