using System.Collections.Generic;
using UnityEngine;
namespace XCharts.Runtime
{
public struct PointInfo
{
public Vector3 position;
public bool isIgnoreBreak;
public double xValue;
public double yValue;
public double zValue;
// public PointInfo(Vector3 pos, bool ignore)
// {
// this.position = pos;
// this.isIgnoreBreak = ignore;
// }
public PointInfo(Vector3 pos, bool ignore, double x = 0, double y = 0, double z = 0)
{
this.position = pos;
this.isIgnoreBreak = ignore;
this.xValue = x;
this.yValue = y;
this.zValue = z;
}
}
public class SerieContext
{
[System.NonSerialized] internal double[] cachedMin = new double[3] { double.MaxValue, double.MaxValue, double.MaxValue };
[System.NonSerialized] internal double[] cachedMax = new double[3] { double.MinValue, double.MinValue, double.MinValue };
[System.NonSerialized] internal bool[] cacheValid = new bool[3] { false, false, false };
internal void InvalidateMinMaxCache()
{
for (int i = 0; i < cacheValid.Length; i++)
cacheValid[i] = false;
cachedMin[0] = cachedMin[1] = cachedMin[2] = double.MaxValue;
cachedMax[0] = cachedMax[1] = cachedMax[2] = double.MinValue;
}
internal bool TryGetCachedMinMax(int dimension, out double minValue, out double maxValue)
{
minValue = 0; maxValue = 0;
if (dimension < 0 || dimension > 2) return false;
if (cacheValid[dimension])
{
minValue = cachedMin[dimension];
maxValue = cachedMax[dimension];
return true;
}
return false;
}
internal void SetCachedMinMax(int dimension, double minValue, double maxValue)
{
if (dimension < 0 || dimension > 2) return;
cachedMin[dimension] = minValue;
cachedMax[dimension] = maxValue;
cacheValid[dimension] = true;
}
///
/// 鼠标是否进入serie
///
public bool pointerEnter;
///
/// 鼠标当前指示的数据项索引(单个)
///
public int pointerItemDataIndex = -1;
///
/// 鼠标当前指示的数据项维度
///
public int pointerItemDataDimension = 1;
///
/// 鼠标所在轴线上的数据项索引(可能有多个)
///
public List pointerAxisDataIndexs = new List();
public bool isTriggerByAxis = false;
public int dataZoomStartIndex = 0;
public int dataZoomStartIndexOffset = 0;
///
/// 中心点
///
public Vector3 center;
///
/// 线段终点
///
public Vector3 lineEndPostion;
public double lineEndValueX;
public double lineEndValueY;
public double lineEndValueZ;
///
/// 内半径
///
public float insideRadius;
///
/// 外半径
///
public float outsideRadius;
public float startAngle;
///
/// 最大值
///
public double dataMax;
///
/// 最小值
///
public double dataMin;
public double checkValue;
///
/// 左下角坐标X
///
public float x;
///
/// 左下角坐标Y
///
public float y;
///
/// 宽
///
public float width;
///
/// 高
///
public float height;
///
/// 矩形区域
///
public Rect rect;
///
/// 绘制顶点数
///
public int vertCount;
///
/// theme的颜色索引
///
public int colorIndex;
///
/// 数据对应的位置坐标。
///
public List dataPoints = new List();
///
/// 数据对应的位置坐标是否忽略(忽略时连线是透明的),dataIgnore 和 dataPoints 一一对应。
///
public List dataIgnores = new List();
///
/// 数据对应的index索引。dataIndexs 和 dataPoints 一一对应。
///
public List dataIndexs = new List();
///
/// 排序后的数据
///
public List sortedData = new List();
public List rootData = new List();
///
/// 绘制点
///
public List drawPoints = new List();
public SerieParams param = new SerieParams();
public ChartLabel titleObject { get; set; }
public Tooltip.Type tooltipType;
public Tooltip.Trigger tooltipTrigger;
public int totalDataIndex;
public int clickTotalDataIndex;
///
/// 水平方向的
///
public bool isHorizontal;
}
}