graph优化

This commit is contained in:
lishuo 2022-06-06 18:54:04 +08:00
parent c6d0f7ac13
commit 383fed4966
3 changed files with 74 additions and 26 deletions

View File

@ -7,7 +7,7 @@ using UnityEngine;
namespace ChartAndGraph namespace ChartAndGraph
{ {
[Serializable ] [Serializable]
public struct DoubleVector2 public struct DoubleVector2
{ {
public double x, y; public double x, y;

View File

@ -89,6 +89,8 @@ public class RowerHomeScript : PFUIPanel
} }
GameObject btnStart; GameObject btnStart;
Transform left, bottom, mid,rmydata; Transform left, bottom, mid,rmydata;
Image leftImage;
Image rightImage;
float timer = 1.0f; float timer = 1.0f;
List<DoubleVector2> pullList, historyPullList; List<DoubleVector2> pullList, historyPullList;
public Dictionary<object, Sprite> spriteDict,spriteDict2; public Dictionary<object, Sprite> spriteDict,spriteDict2;
@ -584,8 +586,10 @@ public class RowerHomeScript : PFUIPanel
btnStart.tag = "Start"; btnStart.tag = "Start";
btnStart.GetComponent<Image>().sprite = spriteDict["Start"]; btnStart.GetComponent<Image>().sprite = spriteDict["Start"];
left.Find("Rower").GetComponent<Image>().sprite = spriteDict[0]; left.Find("Rower").GetComponent<Image>().sprite = spriteDict[0];
left.Find("LeftImage/Value").GetComponent<Image>().fillAmount = 0; leftImage = left.Find("LeftImage/Value").GetComponent<Image>();
left.Find("RightImage/Value").GetComponent<Image>().fillAmount = 0; rightImage = left.Find("RightImage/Value").GetComponent<Image>();
leftImage.fillAmount = 0;
rightImage.fillAmount = 0;
TimesText.text = "---"; TimesText.text = "---";
Caloriestext.text = "---"; Caloriestext.text = "---";
rmyCaloriestext.text = "---"; rmyCaloriestext.text = "---";
@ -1006,15 +1010,10 @@ public class RowerHomeScript : PFUIPanel
PaintPullCurve(ftms.PullValue); PaintPullCurve(ftms.PullValue);
} }
bool isPlay = false; bool isPlay = false;
float preTime = 0f; int pointCount = 0;
float curTime = 0f;
void PaintPullCurve(ushort y) void PaintPullCurve(ushort y)
{ {
if (curTime-preTime < 0.1f)
{
return;
}
preTime = curTime;
Debug.Log("收到拉力" + y + ","+ DateTime.Now.Ticks); Debug.Log("收到拉力" + y + ","+ DateTime.Now.Ticks);
//#if !UNITY_EDITOR //#if !UNITY_EDITOR
// if (!openTimer) // if (!openTimer)
@ -1031,29 +1030,39 @@ public class RowerHomeScript : PFUIPanel
//#endif //#endif
//if (y > 1200) y = 1200; //if (y > 1200) y = 1200;
//拉力条 //拉力条
var rate = ((float)y) * 2 / 120; var rate = ((float)y) * 2 / 120;
if (rate > 1) rate = 1f; if (rate > 1) rate = 1f;
left.Find("LeftImage/Value").GetComponent<Image>().fillAmount = rate; leftImage.fillAmount = rate;
left.Find("RightImage/Value").GetComponent<Image>().fillAmount = rate; rightImage.fillAmount = rate;
//动画 //动画
//left.Find("Rower").GetComponent<Image>().sprite = spriteDict[y / 67]; //left.Find("Rower").GetComponent<Image>().sprite = spriteDict[y / 67];
//曲线 //曲线
if (y == 0) if (y == 0)
{ {
if (pullList.Count == 0) //if (pullList.Count == 0)
if(pointCount == 0)
{ {
isPlay = true; isPlay = true;
x = 0.1; x = 0.1;
pointCount++;
pullList.Add(new DoubleVector2(x, y)); pullList.Add(new DoubleVector2(x, y));
SetChartData(pullList, historyPullList); //SetChartData(pullList, historyPullList);
SetChartData(x, y);
} }
else if (pullList.Count > 1) //else if (pullList.Count > 1)
else if(pointCount > 1)
{ {
x += 0.1; x += 0.1;
pointCount++;
pullList.Add(new DoubleVector2(x, y)); pullList.Add(new DoubleVector2(x, y));
SetChartData(pullList, historyPullList); SetChartData(x, y);
historyPullList = pullList.Select(x => x).ToList(); //SetChartData(pullList, historyPullList);
//historyPullList = pullList.Select(x => x).ToList();
pullList.Clear(); pullList.Clear();
pointCount = 0;
ClearChart();
x = 0.1; x = 0.1;
isPlay = true; isPlay = true;
pullList.Add(new DoubleVector2(x, y)); pullList.Add(new DoubleVector2(x, y));
@ -1063,21 +1072,25 @@ public class RowerHomeScript : PFUIPanel
//只有0并且两秒没拉曲线消失 //只有0并且两秒没拉曲线消失
if (stopSeconds == 1) if (stopSeconds == 1)
{ {
SetChartData(new List<DoubleVector2>(), new List<DoubleVector2>()); ClearChart();
//SetChartData(new List<DoubleVector2>(), new List<DoubleVector2>());
} }
} }
} }
else else
{ {
x += 0.1; x += 0.1;
pointCount++;
pullList.Add(new DoubleVector2(x, y)); pullList.Add(new DoubleVector2(x, y));
if (pullList.Count > 5 && isPlay) //if (pullList.Count > 5 && isPlay)
if (pointCount > 5 && isPlay)
{ {
Debug.Log("开始动画"); Debug.Log("开始动画");
isPlay = false; isPlay = false;
//left.Find("Rower").GetComponent<RowerAnimation>().StartAnimation(); //left.Find("Rower").GetComponent<RowerAnimation>().StartAnimation();
} }
SetChartData(pullList, historyPullList); //SetChartData(pullList, historyPullList);
SetChartData(x, y);
} }
//Debug.Log($"{x},{y}"); //Debug.Log($"{x},{y}");
//transform.Find("Mid/GraphChart").GetComponent<RowerGraphChartFeed>().SetData(pullList); //transform.Find("Mid/GraphChart").GetComponent<RowerGraphChartFeed>().SetData(pullList);
@ -1092,8 +1105,30 @@ public class RowerHomeScript : PFUIPanel
// x += 0.1f; // x += 0.1f;
//} //}
} }
void ClearChart()
{
rowerGraphChartFeed.ClearChart();
graphChartFeed.ClearChart();
}
double preX, preY;
void SetChartData(double x, double y)
{
if (M1.localPosition.x == 0)
{
rowerGraphChartFeed.SetCurrentPoint(x, y);
var index = pullList.Count - 1 < 0 ? 0 : pullList.Count - 1;
var pre = pullList[index];
rowerGraphChartFeed.SetPrePoint(pre.x, pre.y);
}
else
{
graphChartFeed.SetCurrentPoint(x, y);
}
}
void SetChartData(List<DoubleVector2> v1, List<DoubleVector2> v2) void SetChartData(List<DoubleVector2> v1, List<DoubleVector2> v2)
{ {
//graph.DataSource.AddPointToCategoryRealtime("Player 2", item.x, item.y);
if (M1.localPosition.x == 0) if (M1.localPosition.x == 0)
{ {
rowerGraphChartFeed.SetData(v1, v2); rowerGraphChartFeed.SetData(v1, v2);
@ -1108,7 +1143,6 @@ public class RowerHomeScript : PFUIPanel
int ticks { get; set; } = 0; int ticks { get; set; } = 0;
void Update() void Update()
{ {
curTime += Time.deltaTime;
#if UNITY_EDITOR #if UNITY_EDITOR
if (openTimer || true) if (openTimer || true)
#else #else

View File

@ -7,10 +7,12 @@ using System.Collections.Generic;
public class RowerGraphChartFeed : MonoBehaviour public class RowerGraphChartFeed : MonoBehaviour
{ {
GraphChartBase graph { get; set; } GraphChartBase graph { get; set; }
GraphData dataSource { get; set; }
void Start () void Start ()
{ {
graph = GetComponent<GraphChartBase>(); graph = GetComponent<GraphChartBase>();
dataSource = graph.DataSource;
//GraphChartBase graph = GetComponent<GraphChartBase>(); //GraphChartBase graph = GetComponent<GraphChartBase>();
//if (graph != null) //if (graph != null)
//{ //{
@ -34,7 +36,20 @@ public class RowerGraphChartFeed : MonoBehaviour
//} //}
// StartCoroutine(ClearAll()); // StartCoroutine(ClearAll());
} }
public void SetPrePoint(double x, double y)
{
dataSource?.AddPointToCategoryRealtime("Player 1", x, y);
}
public void SetCurrentPoint(double x,double y)
{
dataSource?.AddPointToCategoryRealtime("Player 2", x, y);
}
public void ClearChart()
{
dataSource?.ClearCategory("Player 1");
dataSource?.ClearCategory("Player 2");
}
public void SetData(List<DoubleVector2> list,List<DoubleVector2> list2 = null) public void SetData(List<DoubleVector2> list,List<DoubleVector2> list2 = null)
{ {
if (graph != null) if (graph != null)
@ -42,10 +57,9 @@ public class RowerGraphChartFeed : MonoBehaviour
graph.Scrollable = false; graph.Scrollable = false;
//graph.HorizontalValueToStringMap[0.0] = "Zero"; // example of how to set custom axis strings //graph.HorizontalValueToStringMap[0.0] = "Zero"; // example of how to set custom axis strings
//graph.DataSource.StartBatch(); //graph.DataSource.StartBatch();
graph.DataSource.ClearCategory("Player 1"); //graph.DataSource.ClearCategory("Player 1");
graph.DataSource.ClearCategory("Player 2"); //graph.DataSource.ClearCategory("Player 2");
graph.ClearCache(); //graph.ClearCache();
for (int i = 0; i < list.Count; i++) for (int i = 0; i < list.Count; i++)
{ {
var item = list[i]; var item = list[i];