增加GridLayout网格布局组件

This commit is contained in:
monitor1394
2023-08-29 18:30:11 +08:00
parent e0f6b8c2dc
commit e4fbe5670f
31 changed files with 399 additions and 51 deletions

View File

@@ -189,8 +189,7 @@ namespace XCharts.Runtime
serie.context.dataMax = serie.yMax;
serie.context.startAngle = GetStartAngle(serie);
var runtimePieDataTotal = serie.yTotal;
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
SerieHelper.UpdateCenter(serie, chart);
float startDegree = serie.context.startAngle;
float totalDegree = 0;
float zeroReplaceValue = 0;

View File

@@ -193,7 +193,7 @@ namespace XCharts.Runtime
private void UpdateRuntimeData()
{
var data = serie.data;
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
SerieHelper.UpdateCenter(serie, chart);
var ringWidth = serie.context.outsideRadius - serie.context.insideRadius;
for (int j = 0; j < data.Count; j++)
{

View File

@@ -246,6 +246,7 @@ namespace XCharts.Runtime
[SerializeField] private int m_PolarIndex = 0;
[SerializeField] private int m_SingleAxisIndex = 0;
[SerializeField] private int m_ParallelIndex = 0;
[SerializeField][Since("v3.8.0")] private int m_GridIndex = -1;
[SerializeField] protected int m_MinShow;
[SerializeField] protected int m_MaxShow;
[SerializeField] protected int m_MaxCache;
@@ -477,6 +478,15 @@ namespace XCharts.Runtime
set { if (PropertyUtil.SetStruct(ref m_ParallelIndex, value)) SetAllDirty(); }
}
/// <summary>
/// Index of layout component that serie uses.
/// |所使用的 layout 组件的 index。 默认为-1不指定index, 当为大于或等于0时, 为第一个layout组件的第index个格子。
/// </summary>
public int gridIndex
{
get { return m_GridIndex; }
set { if (PropertyUtil.SetStruct(ref m_GridIndex, value)) SetAllDirty(); }
}
/// <summary>
/// The min number of data to show in chart.
/// |系列所显示数据的最小索引
/// </summary>

View File

@@ -310,7 +310,7 @@ namespace XCharts.Runtime
m_SerieLabelRoot.hideFlags = chart.chartHideFlags;
SerieLabelPool.ReleaseAll(m_SerieLabelRoot.transform);
int count = 0;
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
SerieHelper.UpdateCenter(serie, chart);
for (int j = 0; j < serie.data.Count; j++)
{
var serieData = serie.data[j];
@@ -402,7 +402,7 @@ namespace XCharts.Runtime
SerieLabelPool.ReleaseAll(serieTitleRoot.transform);
ChartHelper.RemoveComponent<Text>(serieTitleRoot);
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
SerieHelper.UpdateCenter(serie, chart);
if (serie.titleJustForSerie)
{

View File

@@ -213,9 +213,22 @@ namespace XCharts.Runtime
/// </summary>
/// <param name="chartWidth"></param>
/// <param name="chartHeight"></param>
public static void UpdateCenter(Serie serie, Vector3 chartPosition, float chartWidth, float chartHeight)
public static void UpdateCenter(Serie serie, BaseChart chart)
{
if (serie.center.Length < 2) return;
var chartPosition = chart.chartPosition;
var chartWidth = chart.chartWidth;
var chartHeight = chart.chartHeight;
if (serie.gridIndex >= 0)
{
var grid = chart.GetChartComponent<GridCoord>(serie.gridIndex);
if (grid != null)
{
chartPosition = grid.context.position;
chartWidth = grid.context.width;
chartHeight = grid.context.height;
}
}
var centerX = serie.center[0] <= 1 ? chartWidth * serie.center[0] : serie.center[0];
var centerY = serie.center[1] <= 1 ? chartHeight * serie.center[1] : serie.center[1];
serie.context.center = chartPosition + new Vector3(centerX, centerY);
@@ -820,7 +833,7 @@ namespace XCharts.Runtime
serie.m_FilterMinShow = dataZoom.minShowNum;
serie.m_NeedUpdateFilterData = false;
if(ReferenceEquals(serie.m_FilterData,data))
if (ReferenceEquals(serie.m_FilterData, data))
{
serie.m_FilterData = new List<SerieData>();
}