82 lines
2.6 KiB
C#
82 lines
2.6 KiB
C#
#define Graph_And_Chart_PRO
|
|
using UnityEngine;
|
|
using ChartAndGraph;
|
|
using System.Collections.Generic;
|
|
using System;
|
|
|
|
public partial class LargeDataFeed
|
|
{
|
|
public int RealtimeDownSampleCount = 10;
|
|
int currentDownSampleCount = 0;
|
|
DoubleVector3 DownSampleSum = new DoubleVector3();
|
|
|
|
partial void OnDataLoaded()
|
|
{
|
|
RestartDownSampleCount();
|
|
}
|
|
|
|
public void AppendRealtimeWithDownSampling(double x, double y, double slideTime = 0f)
|
|
{
|
|
if (graph == null)
|
|
return;
|
|
bool show = graph.AutoScrollHorizontally;
|
|
if (mData.Count == 0)
|
|
show = true;
|
|
else
|
|
{
|
|
double viewX = mData[mData.Count - 1].x;
|
|
double pageStartThreshold = currentPagePosition - mCurrentPageSizeFactor;
|
|
double pageEndThreshold = currentPagePosition + mCurrentPageSizeFactor - graph.DataSource.HorizontalViewSize;
|
|
if (viewX >= pageStartThreshold && viewX <= pageEndThreshold)
|
|
show = true;
|
|
}
|
|
var v = new DoubleVector2(x, y);
|
|
mData.Add(v);
|
|
if (show)
|
|
{
|
|
if (currentDownSampleCount >= RealtimeDownSampleCount)
|
|
{
|
|
RestartDownSampleCount();
|
|
graph.DataSource.AddPointToCategoryRealtime(Category, x, y, slideTime);
|
|
}
|
|
DownSampleSum += v.ToDoubleVector3();
|
|
currentDownSampleCount++;
|
|
var avarage = DownSampleSum * 1.0 / (double)currentDownSampleCount;
|
|
if(currentDownSampleCount != 1)
|
|
graph.DataSource.UpdateLastPointInCategoryRealtime(Category, avarage.x, avarage.y, slideTime);
|
|
}
|
|
else
|
|
RestartDownSampleCount();
|
|
}
|
|
|
|
void RestartDownSampleCount()
|
|
{
|
|
currentDownSampleCount = 0;
|
|
DownSampleSum = new DoubleVector3();
|
|
}
|
|
|
|
public void AppendPointRealtime(double x, double y, double slideTime = 0f)
|
|
{
|
|
if (graph == null)
|
|
return;
|
|
bool show = graph.AutoScrollHorizontally;
|
|
if (mData.Count == 0)
|
|
show = true;
|
|
else
|
|
{
|
|
double viewX = mData[mData.Count - 1].x;
|
|
double pageStartThreshold = currentPagePosition - mCurrentPageSizeFactor;
|
|
double pageEndThreshold = currentPagePosition + mCurrentPageSizeFactor - graph.DataSource.HorizontalViewSize;
|
|
if (viewX >= pageStartThreshold && viewX <= pageEndThreshold)
|
|
show = true;
|
|
}
|
|
mData.Add(new DoubleVector2(x, y));
|
|
if (show)
|
|
{
|
|
mSlideEndThreshold = x;
|
|
graph.DataSource.AddPointToCategoryRealtime(Category, x, y, slideTime);
|
|
}
|
|
}
|
|
}
|
|
|