/// <summary> /// Update the xMin, xMax, yMin, yMax /// and indicate where y=0 is only when yMin is less than 0 and yMAx is more than 0. /// </summary> private void UpdateText() { if (controller.SeriesCount > 0) { var minmax = controller.GetMinMaxOfAll(); yMaxText.text = minmax.yMax.ToString(controller.specifier); yMinText.text = minmax.yMin.ToString(controller.specifier); xMaxText.text = ChartUtils.SecondsToTime(minmax.xMax); xMinText.text = ChartUtils.SecondsToTime(minmax.xMin); if (minmax.yMin < 0 && minmax.yMax > 0) { yZero.SetActive(true); yZero.GetComponent <Text>().text = "0"; float totalY = minmax.yMax - minmax.yMin; float yPos = -minmax.yMin / totalY * axisHolder.rect.height; var transform = yZero.transform as RectTransform; transform.anchoredPosition = new Vector2(transform.anchoredPosition.x, yPos); } else { yZero.SetActive(false); } } }
private void UpdateValues() { var minmax = controller.GetMinMaxOfAll(); for (int i = 0; i < controller.values.Length; i++) { string name = ChartUtils.NameGenerator(valueChildString, i); GameObject obj = valuePanel.Find(name).gameObject; colorBlock.disabledColor = controller.seriesColors[i]; obj.GetComponent <Button>().colors = colorBlock; float value = controller.values[i]; obj.GetComponentInChildren <Text>().text = value.ToString(controller.specifier); RectTransform rt = obj.transform as RectTransform; float yPos = (value - minmax.yMin) / (minmax.yMax - minmax.yMin) * valuePanel.rect.height; yPos = Mathf.Clamp(yPos, 0, valuePanel.rect.height - rt.rect.height); rt.localPosition = new Vector3(-5, yPos); } }
/// <summary> /// Implementation to draw line chart based on the time-data series. /// Only draw if the count of time-data is at least 2. /// </summary> private void DrawLineChart() { for (int idx = 0; idx < controller.SeriesCount; idx++) { var dataCollection = controller.DataContainer.GetTimedDataCollection(idx); Vector3[] lines = ChartUtils.CreateLinesFromData(dataCollection, chartHolder, controller.GetMinMaxOfAll()); Mesh lineMesh = ChartUtils.GenerateLineMesh(lines, 1.5f); string name = ChartUtils.NameGenerator(chartChildString, idx); GameObject obj = chartHolder.Find(name).gameObject; CanvasRenderer renderer = obj.GetComponent <CanvasRenderer>(); renderer.Clear(); renderer.SetMaterial(controller.materials[idx], null); renderer.SetMesh(lineMesh); } }