AirControl  1.3.0
Open Source, Modular, and Extensible Flight Simulator For Deep Learning Research
SerieSymbol.cs
1 /************************************************/
2 /* */
3 /* Copyright (c) 2018 - 2021 monitor1394 */
4 /* https://github.com/monitor1394 */
5 /* */
6 /************************************************/
7 
8 using System.Collections.Generic;
9 using UnityEngine;
10 using UnityEngine.UI;
11 
12 namespace XCharts
13 {
18  public enum SerieSymbolType
19  {
27  Circle,
31  Rect,
35  Triangle,
39  Diamond,
43  None,
47  Arrow,
51  Custom,
52  EmptyRect,
53  EmptyTriangle,
54  EmptyDiamond
55  }
56 
61  public enum SerieSymbolSizeType
62  {
67  Custom,
72  FromData,
77  Callback,
78  }
79 
85  public delegate float SymbolSizeCallback(List<double> data);
86 
90  [System.Serializable]
91  public class SerieSymbol : SubComponent
92  {
93  [SerializeField] private bool m_Show = true;
94  [SerializeField] private SerieSymbolType m_Type = SerieSymbolType.EmptyCircle;
95  [SerializeField] private SerieSymbolSizeType m_SizeType = SerieSymbolSizeType.Custom;
96  [SerializeField] private float m_Size = 0f;
97  [SerializeField] private float m_SelectedSize = 0f;
98  [SerializeField] private int m_DataIndex = 1;
99  [SerializeField] private float m_DataScale = 1;
100  [SerializeField] private float m_SelectedDataScale = 1.5f;
101  [SerializeField] private SymbolSizeCallback m_SizeCallback;
102  [SerializeField] private SymbolSizeCallback m_SelectedSizeCallback;
103  [SerializeField] private int m_StartIndex;
104  [SerializeField] private int m_Interval;
105  [SerializeField] private bool m_ForceShowLast = false;
106  [SerializeField] private float m_Gap = 0;
107  [SerializeField] private float m_Width = 0f;
108  [SerializeField] private float m_Height = 0f;
109  [SerializeField] private bool m_Repeat = false;
110  [SerializeField] private Vector2 m_Offset = Vector2.zero;
111  [SerializeField] private Sprite m_Image;
112  [SerializeField] private Image.Type m_ImageType;
113 
114  public void Reset()
115  {
116  m_Show = false;
117  m_Type = SerieSymbolType.EmptyCircle;
118  m_SizeType = SerieSymbolSizeType.Custom;
119  m_Size = 0f;
120  m_SelectedSize = 0f;
121  m_DataIndex = 1;
122  m_DataScale = 1;
123  m_SelectedDataScale = 1.5f;
124  m_SizeCallback = null;
125  m_SelectedSizeCallback = null;
126  m_StartIndex = 0;
127  m_Interval = 0;
128  m_ForceShowLast = false;
129  m_Gap = 0;
130  m_Width = 0f;
131  m_Height = 0f;
132  m_Repeat = false;
133  m_Offset = Vector2.zero;
134  m_Image = null;
135  m_ImageType = Image.Type.Simple;
136  }
137 
142  public bool show
143  {
144  get { return m_Show; }
145  set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetAllDirty(); }
146  }
151  public SerieSymbolType type
152  {
153  get { return m_Type; }
154  set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); }
155  }
161  {
162  get { return m_SizeType; }
163  set { if (PropertyUtil.SetStruct(ref m_SizeType, value)) SetVerticesDirty(); }
164  }
169  public float size
170  {
171  get { return m_Size; }
172  set { if (PropertyUtil.SetStruct(ref m_Size, value)) SetVerticesDirty(); }
173  }
178  public float selectedSize
179  {
180  get { return m_SelectedSize; }
181  set { if (PropertyUtil.SetStruct(ref m_SelectedSize, value)) SetVerticesDirty(); }
182  }
187  public int dataIndex
188  {
189  get { return m_DataIndex; }
190  set { if (PropertyUtil.SetStruct(ref m_DataIndex, value)) SetVerticesDirty(); }
191  }
196  public float dataScale
197  {
198  get { return m_DataScale; }
199  set { if (PropertyUtil.SetStruct(ref m_DataScale, value)) SetVerticesDirty(); }
200  }
205  public float selectedDataScale
206  {
207  get { return m_SelectedDataScale; }
208  set { if (PropertyUtil.SetStruct(ref m_SelectedDataScale, value)) SetVerticesDirty(); }
209  }
215  {
216  get { return m_SizeCallback; }
217  set { if (PropertyUtil.SetClass(ref m_SizeCallback, value)) SetVerticesDirty(); }
218  }
224  {
225  get { return m_SelectedSizeCallback; }
226  set { if (PropertyUtil.SetClass(ref m_SelectedSizeCallback, value)) SetVerticesDirty(); }
227  }
232  public int startIndex
233  {
234  get { return m_StartIndex; }
235  set { if (PropertyUtil.SetStruct(ref m_StartIndex, value)) SetVerticesDirty(); }
236  }
241  public int interval
242  {
243  get { return m_Interval; }
244  set { if (PropertyUtil.SetStruct(ref m_Interval, value)) SetVerticesDirty(); }
245  }
250  public bool forceShowLast
251  {
252  get { return m_ForceShowLast; }
253  set { if (PropertyUtil.SetStruct(ref m_ForceShowLast, value)) SetVerticesDirty(); }
254  }
259  public float gap
260  {
261  get { return m_Gap; }
262  set { if (PropertyUtil.SetStruct(ref m_Gap, value)) SetVerticesDirty(); }
263  }
267  public float width
268  {
269  get { return m_Width; }
270  set { if (PropertyUtil.SetStruct(ref m_Width, value)) SetAllDirty(); }
271  }
275  public float height
276  {
277  get { return m_Height; }
278  set { if (PropertyUtil.SetStruct(ref m_Height, value)) SetAllDirty(); }
279  }
283  public bool repeat
284  {
285  get { return m_Repeat; }
286  set { if (PropertyUtil.SetStruct(ref m_Repeat, value)) SetAllDirty(); }
287  }
291  public Sprite image
292  {
293  get { return m_Image; }
294  set { if (PropertyUtil.SetClass(ref m_Image, value)) SetAllDirty(); }
295  }
296  public Image.Type imageType
297  {
298  get { return m_ImageType; }
299  set { if (PropertyUtil.SetStruct(ref m_ImageType, value)) SetAllDirty(); }
300  }
304  public Vector2 offset
305  {
306  get { return m_Offset; }
307  set { if (PropertyUtil.SetStruct(ref m_Offset, value)) SetAllDirty(); }
308  }
309  public Vector3 offset3 { get { return new Vector3(m_Offset.x, m_Offset.y, 0); } }
310  private List<float> m_AnimationSize = new List<float>() { 0, 5, 10 };
315  public List<float> animationSize { get { return m_AnimationSize; } }
316 
322  public float GetSize(List<double> data, float themeSize)
323  {
324  switch (m_SizeType)
325  {
326  case SerieSymbolSizeType.Custom:
327  return size == 0 ? themeSize : size;
328  case SerieSymbolSizeType.FromData:
329  if (data != null && dataIndex >= 0 && dataIndex < data.Count)
330  {
331  return (float)data[dataIndex] * m_DataScale;
332  }
333  else
334  {
335  return size == 0 ? themeSize : size;
336  }
337  case SerieSymbolSizeType.Callback:
338  if (data != null && sizeCallback != null) return sizeCallback(data);
339  else return size == 0 ? themeSize : size;
340  default: return size == 0 ? themeSize : size;
341  }
342  }
343 
349  public float GetSelectedSize(List<double> data, float themeSelectedSize)
350  {
351  switch (m_SizeType)
352  {
353  case SerieSymbolSizeType.Custom:
354  return selectedSize == 0 ? themeSelectedSize : selectedSize;
355  case SerieSymbolSizeType.FromData:
356  if (data != null && dataIndex >= 0 && dataIndex < data.Count)
357  {
358  return (float)data[dataIndex] * m_SelectedDataScale;
359  }
360  else
361  {
362  return selectedSize == 0 ? themeSelectedSize : selectedSize;
363  }
364  case SerieSymbolSizeType.Callback:
365  if (data != null && selectedSizeCallback != null) return selectedSizeCallback(data);
366  else return selectedSize == 0 ? themeSelectedSize : selectedSize;
367  default: return selectedSize == 0 ? themeSelectedSize : selectedSize;
368  }
369  }
370 
371  public bool ShowSymbol(int dataIndex, int dataCount)
372  {
373  if (!show) return false;
374  if (dataIndex < startIndex) return false;
375  if (m_Interval <= 0) return true;
376  if (m_ForceShowLast && dataIndex == dataCount - 1) return true;
377  return (dataIndex - startIndex) % (m_Interval + 1) == 0;
378  }
379  }
380 }
XCharts.SerieType.Custom
@ Custom
自定义。
XCharts.SerieSymbolSizeType.FromData
@ FromData
Specify the dataIndex and dataScale to calculate symbol size. 通过 dataIndex 从数据中获取,再乘以一个比例系数 dataScale...
XCharts.SerieSymbolSizeType.Callback
@ Callback
Specify callback function for symbol size. 通过回调函数获取。
XCharts.SerieSymbol.sizeCallback
SymbolSizeCallback sizeCallback
the callback of size when sizeType assined as Callback. 当sizeType指定为Callback时,指定的回调函数。
Definition: SerieSymbol.cs:215
XCharts.SerieSymbolType.Circle
@ Circle
圆形。
XCharts.SymbolSizeCallback
delegate float SymbolSizeCallback(List< double > data)
获取标记大小的回调。
XCharts.SerieSymbol.selectedSizeCallback
SymbolSizeCallback selectedSizeCallback
the callback of size when sizeType assined as Callback. 当sizeType指定为Callback时,指定的高亮回调函数。
Definition: SerieSymbol.cs:224
XCharts.RoseType.None
@ None
Don't show as Nightingale chart.不展示成南丁格尔玫瑰图
XCharts.SerieSymbol.repeat
bool repeat
图形是否重复。
Definition: SerieSymbol.cs:284
XCharts.SubComponent
Definition: ChartComponent.cs:71
XCharts
Definition: RewardChart.cs:14
XCharts.SerieSymbol.gap
float gap
the gap of symbol and line segment. 图形标记和线条的间隙距离。
Definition: SerieSymbol.cs:260
XCharts.SerieSymbol.forceShowLast
bool forceShowLast
whether to show the last symbol. 是否强制显示最后一个图形标记。
Definition: SerieSymbol.cs:251
XCharts.SerieSymbolType.Diamond
@ Diamond
菱形。
XCharts.SerieSymbol.height
float height
图形的高。
Definition: SerieSymbol.cs:276
XCharts.SerieSymbol.dataIndex
int dataIndex
whitch data index is when the sizeType assined as FromData. 当sizeType指定为FromData时,指定的数据源索引。
Definition: SerieSymbol.cs:188
XCharts.Arrow
Definition: Arrow.cs:16
XCharts.SerieSymbol.selectedSize
float selectedSize
the size of selected symbol. 被选中的标记的大小。
Definition: SerieSymbol.cs:179
XCharts.SerieSymbol.startIndex
int startIndex
the index start to show symbol. 开始显示图形标记的索引。
Definition: SerieSymbol.cs:233
XCharts.SerieSymbol.animationSize
List< float > animationSize
the setting for effect scatter. 带有涟漪特效动画的散点图的动画参数。
Definition: SerieSymbol.cs:315
XCharts.SerieSymbol.GetSize
float GetSize(List< double > data, float themeSize)
根据指定的sizeType获得标记的大小
Definition: SerieSymbol.cs:322
XCharts.SerieSymbolType
SerieSymbolType
the type of symbol. 标记图形的类型。
Definition: SerieSymbol.cs:18
XCharts.SerieSymbolType.Triangle
@ Triangle
三角形。
XCharts.SerieSymbol.type
SerieSymbolType type
the type of symbol. 标记类型。
Definition: SerieSymbol.cs:152
XCharts.SerieSymbol.interval
int interval
the interval of show symbol. 显示图形标记的间隔。0表示显示所有标签,1表示隔一个隔显示一个标签,以此类推。
Definition: SerieSymbol.cs:242
XCharts.SerieSymbol.sizeType
SerieSymbolSizeType sizeType
the type of symbol size. 标记图形的大小获取方式。
Definition: SerieSymbol.cs:161
XCharts.SerieSymbolType.Rect
@ Rect
正方形。可通过设置itemStyle的cornerRadius变成圆角矩形。
XCharts.SerieSymbol.selectedDataScale
float selectedDataScale
the scale of selected data when sizeType assined as FromData. 当sizeType指定为FromData时,指定的高亮倍数系数。
Definition: SerieSymbol.cs:206
XCharts.SerieSymbol.show
bool show
Whether the symbol is showed. 是否显示标记。
Definition: SerieSymbol.cs:143
XCharts.SerieSymbolSizeType
SerieSymbolSizeType
The way to get serie symbol size. 获取标记图形大小的方式。
Definition: SerieSymbol.cs:61
XCharts.SerieSymbolType.EmptyCircle
@ EmptyCircle
空心圆。
XCharts.SerieSymbol.offset
Vector2 offset
图形的偏移。
Definition: SerieSymbol.cs:305
XCharts.SerieSymbol.size
float size
the size of symbol. 标记的大小。
Definition: SerieSymbol.cs:170
XCharts.SerieSymbol.image
Sprite image
自定义的标记图形。
Definition: SerieSymbol.cs:292
XCharts.SerieSymbol.dataScale
float dataScale
the scale of data when sizeType assined as FromData. 当sizeType指定为FromData时,指定的倍数系数。
Definition: SerieSymbol.cs:197
XCharts.SerieSymbol.width
float width
图形的宽。
Definition: SerieSymbol.cs:268
XCharts.SerieSymbol.GetSelectedSize
float GetSelectedSize(List< double > data, float themeSelectedSize)
根据sizeType获得高亮时的标记大小
Definition: SerieSymbol.cs:349
XCharts.SerieSymbol
系列数据项的标记的图形
Definition: SerieSymbol.cs:91