XCharts 2.0

This commit is contained in:
monitor1394
2021-01-17 10:16:30 +08:00
parent ed8e47588f
commit 7e4e046672
8 changed files with 34 additions and 55 deletions

View File

@@ -41,16 +41,16 @@ A powerful, easy-to-use, configurable charting and data visualization library fo
## Screenshot ## Screenshot
<img src="https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-line.png" width="550" height="auto"/> ![linechart](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-line.png)
<img src="https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-bar.png" width="550" height="auto"/> ![barchart](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-bar.png)
<img src="https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-pie.png" width="550" height="auto"/> ![piechart](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-pie.png)
<img src="https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-radar.png" width="550" height="auto"/> ![radarchart](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-radar.png)
<img src="https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-scatter.png" width="550" height="auto"/> ![scatterchart](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-scatter.png)
<img src="https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-heatmap.png" width="550" height="auto"/> ![heatmapchart](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-heatmap.png)
## Cheat Sheet ## Cheat Sheet
<img src="https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-cheatsheet.gif" /> ![cheatsheet](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/screenshot/xcharts-cheatsheet.gif)
`XCharts` consist of components and data. Different components and data can be combined into different types of charts. The component is divided into main component and sub component. The main component contains the sub components. `XCharts` consist of components and data. Different components and data can be combined into different types of charts. The component is divided into main component and sub component. The main component contains the sub components.

View File

@@ -308,24 +308,19 @@ namespace XCharts
base.InitPainter(); base.InitPainter();
m_PainterList.Clear(); m_PainterList.Clear();
if (settings == null) return; if (settings == null) return;
var sizeDelta = new Vector2(m_GraphWidth, m_GraphHeight);
for (int i = 0; i < settings.maxPainter; i++) for (int i = 0; i < settings.maxPainter; i++)
{ {
var painterObj = ChartHelper.AddObject("painter_" + i, transform, m_GraphMinAnchor, m_GraphMaxAnchor, var painter = ChartHelper.AddPainterObject("painter_" + i, transform, m_GraphMinAnchor,
m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight)); m_GraphMaxAnchor, m_GraphPivot, sizeDelta, chartHideFlags, 2 + i);
painterObj.hideFlags = chartHideFlags;
painterObj.transform.SetSiblingIndex(2 + i);
var painter = ChartHelper.GetOrAddComponent<Painter>(painterObj);
painter.index = m_PainterList.Count; painter.index = m_PainterList.Count;
painter.type = Painter.Type.Serie; painter.type = Painter.Type.Serie;
painter.onPopulateMesh = OnDrawPainterSerie; painter.onPopulateMesh = OnDrawPainterSerie;
painter.SetActive(false, m_DebugMode); painter.SetActive(false, m_DebugMode);
m_PainterList.Add(painter); m_PainterList.Add(painter);
} }
var painterTopObj = ChartHelper.AddObject("painter_t", transform, m_GraphMinAnchor, m_GraphMaxAnchor, m_PainterTop = ChartHelper.AddPainterObject("painter_t", transform, m_GraphMinAnchor,
m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight)); m_GraphMaxAnchor, m_GraphPivot, sizeDelta, chartHideFlags, 2 + settings.maxPainter);
painterTopObj.hideFlags = chartHideFlags;
painterTopObj.transform.SetSiblingIndex(2 + settings.maxPainter);
m_PainterTop = ChartHelper.GetOrAddComponent<Painter>(painterTopObj);
m_PainterTop.type = Painter.Type.Top; m_PainterTop.type = Painter.Type.Top;
m_PainterTop.onPopulateMesh = OnDrawPainterTop; m_PainterTop.onPopulateMesh = OnDrawPainterTop;
m_PainterTop.SetActive(true, m_DebugMode); m_PainterTop.SetActive(true, m_DebugMode);
@@ -684,8 +679,6 @@ namespace XCharts
m_Painter.Refresh(); m_Painter.Refresh();
foreach (var painter in m_PainterList) painter.Refresh(); foreach (var painter in m_PainterList) painter.Refresh();
m_PainterTop.Refresh(); m_PainterTop.Refresh();
//SetAllDirty();
//SetVerticesDirty();
m_RefreshChart = false; m_RefreshChart = false;
} }
} }
@@ -826,7 +819,6 @@ namespace XCharts
protected override void OnDrawPainterBase(VertexHelper vh, Painter painter) protected override void OnDrawPainterBase(VertexHelper vh, Painter painter)
{ {
//Debug.LogError("OnDrawPainterBase:" + Time.frameCount + "," + painter.name);
vh.Clear(); vh.Clear();
DrawBackground(vh); DrawBackground(vh);
DrawPainterBase(vh); DrawPainterBase(vh);
@@ -835,7 +827,6 @@ namespace XCharts
protected virtual void OnDrawPainterSerie(VertexHelper vh, Painter painter) protected virtual void OnDrawPainterSerie(VertexHelper vh, Painter painter)
{ {
//Debug.LogError("OnDrawPainterSerie:" + Time.frameCount + "," + painter.name);
vh.Clear(); vh.Clear();
var maxPainter = settings.maxPainter; var maxPainter = settings.maxPainter;
var maxSeries = m_Series.Count; var maxSeries = m_Series.Count;
@@ -851,7 +842,6 @@ namespace XCharts
protected virtual void OnDrawPainterTop(VertexHelper vh, Painter painter) protected virtual void OnDrawPainterTop(VertexHelper vh, Painter painter)
{ {
//Debug.LogError("OnDrawPainterTop:" + Time.frameCount + "," + painter.name);
vh.Clear(); vh.Clear();
if (m_OnCustomDrawCallback != null) if (m_OnCustomDrawCallback != null)
{ {

View File

@@ -219,11 +219,8 @@ namespace XCharts
protected virtual void InitPainter() protected virtual void InitPainter()
{ {
var painterObj = ChartHelper.AddObject("painter_b", transform, m_GraphMinAnchor, m_GraphMaxAnchor, m_Painter = ChartHelper.AddPainterObject("painter_b", transform, m_GraphMinAnchor,
m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight)); m_GraphMaxAnchor, m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight), chartHideFlags, 1);
painterObj.transform.SetSiblingIndex(1);
painterObj.hideFlags = chartHideFlags;
m_Painter = ChartHelper.GetOrAddComponent<Painter>(painterObj);
m_Painter.type = Painter.Type.Base; m_Painter.type = Painter.Type.Base;
m_Painter.onPopulateMesh = OnDrawPainterBase; m_Painter.onPopulateMesh = OnDrawPainterBase;
} }
@@ -339,7 +336,6 @@ namespace XCharts
protected virtual void OnDrawPainterBase(VertexHelper vh, Painter painter) protected virtual void OnDrawPainterBase(VertexHelper vh, Painter painter)
{ {
Debug.LogError("OnDrawPainterBase:" + Time.frameCount + "," + painter.name);
DrawBackground(vh); DrawBackground(vh);
DrawPainterBase(vh); DrawPainterBase(vh);
} }

View File

@@ -6,7 +6,6 @@
/************************************************/ /************************************************/
using System; using System;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
namespace XCharts namespace XCharts
@@ -38,12 +37,10 @@ namespace XCharts
{ {
if (visualMap.enable && (visualMap.min != min || visualMap.max != max)) if (visualMap.enable && (visualMap.min != min || visualMap.max != max))
{ {
//Debug.LogError("minmax:"+min+","+max);
if (max >= min) if (max >= min)
{ {
visualMap.min = min; visualMap.min = min;
visualMap.max = max; visualMap.max = max;
//Debug.LogError("minmax2222:"+visualMap.min+","+visualMap.max);
} }
else else
{ {

View File

@@ -11,7 +11,8 @@ using System;
namespace XCharts namespace XCharts
{ {
public partial class Painter : MaskableGraphic [RequireComponent(typeof(CanvasRenderer))]
public class Painter : MaskableGraphic
{ {
public enum Type public enum Type
{ {
@@ -32,7 +33,6 @@ namespace XCharts
if (gameObject == null) return; if (gameObject == null) return;
if (!gameObject.activeSelf) return; if (!gameObject.activeSelf) return;
m_Refresh = true; m_Refresh = true;
//Debug.LogError("refresh painter:"+name);
} }
public void Init() public void Init()

View File

@@ -365,6 +365,15 @@ namespace XCharts
return tooltipObj; return tooltipObj;
} }
internal static Painter AddPainterObject(string name, Transform parent, Vector2 anchorMin, Vector2 anchorMax,
Vector2 pivot, Vector2 sizeDelta, HideFlags hideFlags, int siblingIndex)
{
var painterObj = ChartHelper.AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);
painterObj.hideFlags = hideFlags;
painterObj.transform.SetSiblingIndex(siblingIndex);
return ChartHelper.GetOrAddComponent<Painter>(painterObj);
}
public static GameObject AddIcon(string name, Transform parent, float width, float height) public static GameObject AddIcon(string name, Transform parent, float width, float height)
{ {
var anchorMax = new Vector2(0.5f, 0.5f); var anchorMax = new Vector2(0.5f, 0.5f);

View File

@@ -163,7 +163,7 @@ namespace XCharts
private void CheckVersionWebRequest(UnityWebRequest web) private void CheckVersionWebRequest(UnityWebRequest web)
{ {
if (IsNetworkError(web)) if (IsWebRequestError(web))
{ {
isNetworkError = true; isNetworkError = true;
networkError = web.error; networkError = web.error;
@@ -240,29 +240,18 @@ namespace XCharts
changeLog = sb.ToString(); changeLog = sb.ToString();
} }
#if UNITY_5 || UNITY_2017_1 public bool IsWebRequestError(UnityWebRequest request)
public bool IsNetworkError(UnityWebRequest request)
{ {
return request.isError && !IsHttpError(request);
}
#else
public bool IsNetworkError(UnityWebRequest request)
{
return request.isNetworkError;
}
#endif
#if UNITY_5 #if UNITY_5
public bool IsHttpError(UnityWebRequest request) return request.isError && ! request.responseCode >= 400;
{ #elif UNITY_2017_1
return request.responseCode >= 400; return request.isError && ! request.isHttpError;
} #elif UNITY_2020_2
return (int)request.result > 1;
#else #else
public bool IsHttpError(UnityWebRequest request) return request.isNetworkError;
{
return request.isHttpError;
}
#endif #endif
}
void OnEnable() void OnEnable()
{ {

View File

@@ -39,7 +39,6 @@ namespace XCharts
AssetDatabase.importPackageCompleted += ImportCallback; AssetDatabase.importPackageCompleted += ImportCallback;
string packageFullPath = GetPackageFullPath(); string packageFullPath = GetPackageFullPath();
Debug.LogError("packageFullPath:" + packageFullPath);
AssetDatabase.ImportPackage(packageFullPath + "/Package Resources/XCharts Essential Resources.unitypackage", false); AssetDatabase.ImportPackage(packageFullPath + "/Package Resources/XCharts Essential Resources.unitypackage", false);
} }
GUILayout.Space(5f); GUILayout.Space(5f);
@@ -110,7 +109,6 @@ namespace XCharts
} }
packagePath = Path.GetFullPath("Assets/.."); packagePath = Path.GetFullPath("Assets/..");
Debug.LogError("packagePath:" + packagePath + ":" + Directory.Exists(packagePath));
if (Directory.Exists(packagePath)) if (Directory.Exists(packagePath))
{ {
// Search default location for development package // Search default location for development package