public void Start() { graphs.Add(this); uiLineRenderer = new GameObject("Graph Line Renderer").AddComponent <UILineRenderer>(); uiLineRenderer.RelativeSize = true; uiLineRenderer.transform.SetParent(transform, false); uiLineRenderer.LineThickness = 3; RectTransform rT = uiLineRenderer.rectTransform; rT.anchorMax = new Vector2(1, 1); rT.anchorMin = new Vector2(0, 0); rT.anchoredPosition = new Vector2(0, 0); rT.pivot = new Vector2(0.5f, 0.5f); rT.offsetMax = new Vector2(1, 1); rT.offsetMin = new Vector2(0, 0); gridRenderer = gameObject.AddComponent <UIGridRenderer>(); gridRenderer.color = new Color(0.5f, 0.5f, 0.5f); rectTransform = GetComponent <RectTransform>(); // dotImage = new GameObject("Dot Image").AddComponent<Image>(); // dotImage.transform.SetParent(transform, false); // dotImage.sprite = dotSprite; // dotImage.color = color; // dotImage.useSpriteMesh = true; // dotImage.rectTransform.sizeDelta = new Vector2(10,10); // mFilter = new GameObject("Area Mesh").AddComponent<MeshFilter>(); // mFilter.transform.SetParent(transform, false); // mRenderer = mFilter.gameObject.AddComponent<MeshRenderer>(); // mesh = new Mesh(); // mFilter.mesh = mesh; // Create the X axis Max label xAxisMaxLabel = new GameObject("X Axis Max Label").AddComponent <TextMeshProUGUI>(); xAxisMaxLabel.rectTransform.SetParent(transform, false); xAxisMaxLabel.rectTransform.pivot = new Vector2(1f, 1f); xAxisMaxLabel.rectTransform.anchorMax = new Vector2(1f, 0f); xAxisMaxLabel.rectTransform.anchorMin = new Vector2(1f, 0f); xAxisMaxLabel.rectTransform.anchoredPosition = new Vector2(0f, 0f); xAxisMaxLabel.rectTransform.sizeDelta = new Vector2(50, 25); xAxisMaxLabel.font = defaultTextFont; xAxisMaxLabel.fontSize = 15; xAxisMaxLabel.text = "Hello!"; xAxisMaxLabel.alignment = TextAlignmentOptions.MidlineRight; // Create the X axis Min label xAxisMinLabel = new GameObject("X Axis Min Label").AddComponent <TextMeshProUGUI>(); xAxisMinLabel.rectTransform.SetParent(transform, false); xAxisMinLabel.rectTransform.pivot = new Vector2(0f, 1f); xAxisMinLabel.rectTransform.anchorMax = new Vector2(0f, 0f); xAxisMinLabel.rectTransform.anchorMin = new Vector2(0f, 0f); xAxisMinLabel.rectTransform.anchoredPosition = new Vector2(0f, 0f); xAxisMinLabel.rectTransform.sizeDelta = new Vector2(50, 25); xAxisMinLabel.font = defaultTextFont; xAxisMinLabel.fontSize = 15; xAxisMinLabel.alignment = TextAlignmentOptions.MidlineLeft; xAxisMinLabel.text = "0"; // Create the Y axis Min label yAxisMinLabel = new GameObject("Y Axis Min Label").AddComponent <TextMeshProUGUI>(); yAxisMinLabel.rectTransform.SetParent(transform, false); yAxisMinLabel.rectTransform.pivot = new Vector2(1f, 0f); yAxisMinLabel.rectTransform.anchorMax = new Vector2(0f, 0f); yAxisMinLabel.rectTransform.anchorMin = new Vector2(0f, 0f); yAxisMinLabel.rectTransform.anchoredPosition = new Vector2(-10f, 0f); yAxisMinLabel.rectTransform.sizeDelta = new Vector2(50, 25); yAxisMinLabel.font = defaultTextFont; yAxisMinLabel.fontSize = 15; yAxisMinLabel.alignment = TextAlignmentOptions.BottomRight; yAxisMinLabel.text = "0"; // Create the Y axis Max label yAxisMaxLabel = new GameObject("Y Axis Max Label").AddComponent <TextMeshProUGUI>(); yAxisMaxLabel.rectTransform.SetParent(transform, false); yAxisMaxLabel.rectTransform.pivot = new Vector2(1f, 1f); yAxisMaxLabel.rectTransform.anchorMax = new Vector2(0f, 1f); yAxisMaxLabel.rectTransform.anchorMin = new Vector2(0f, 1f); yAxisMaxLabel.rectTransform.anchoredPosition = new Vector2(-10f, 0f); yAxisMaxLabel.rectTransform.sizeDelta = new Vector2(50, 25); yAxisMaxLabel.font = defaultTextFont; yAxisMaxLabel.fontSize = 15; yAxisMaxLabel.alignment = TextAlignmentOptions.TopRight; yAxisMaxLabel.text = "?"; // Create the Y axis label yAxisLabel = new GameObject("Y Axis Label").AddComponent <TextMeshProUGUI>(); yAxisLabel.rectTransform.SetParent(transform, false); yAxisLabel.rectTransform.pivot = new Vector2(0.5f, 0f); yAxisLabel.rectTransform.anchorMax = new Vector2(0f, 0.5f); yAxisLabel.rectTransform.anchorMin = new Vector2(0f, 0.5f); yAxisLabel.rectTransform.anchoredPosition = new Vector2(-10f, 0f); yAxisLabel.rectTransform.sizeDelta = new Vector2(100, 25); yAxisLabel.rectTransform.localEulerAngles = new Vector3(0f, 0f, 90f); yAxisLabel.font = defaultTextFont; yAxisLabel.fontSize = 15; yAxisLabel.alignment = TextAlignmentOptions.Center; yAxisLabel.text = "Y Axis"; // Create the X axis label xAxisLabel = new GameObject("X Axis Label").AddComponent <TextMeshProUGUI>(); xAxisLabel.rectTransform.SetParent(transform, false); xAxisLabel.rectTransform.pivot = new Vector2(0.5f, 1f); xAxisLabel.rectTransform.anchorMax = new Vector2(0.5f, 0f); xAxisLabel.rectTransform.anchorMin = new Vector2(0.5f, 0f); xAxisLabel.rectTransform.anchoredPosition = new Vector2(0f, 0f); xAxisLabel.rectTransform.sizeDelta = new Vector2(100, 25); xAxisLabel.font = defaultTextFont; xAxisLabel.fontSize = 15; xAxisLabel.alignment = TextAlignmentOptions.Center; xAxisLabel.text = "X Axis"; // AddPoint(1, 1); // AddPoint(2, 3); // AddPoint(3, 5); // AddPoint(4, 6); // AddPoint(5, 7); // AddPoint(6, 8); // AddPoint(7, 10); // AddPoint(8, 12); // AddPoint(9, 13); // AddPoint(10, 15); // AddPoint(11, 17); // AddPoint(12, 19); // AddPoint(13, 16); // AddPoint(14, 20); // AddPoint(15, 24); // AddPoint(16, 27); // AddPoint(17, 30); // AddPoint(18, 34); // ResetLineRenderer(); //SetLineColor(); //GenerateMesh(); }
void Start() { rectTransform = GetComponent <RectTransform>(); // Create container for line renderers RectTransform lineRendererContainer = new GameObject("Line Renderer Container").AddComponent <RectTransform>(); lineRendererContainer.SetParent(transform, false); lineRendererContainer.anchorMin = new Vector2(0, 0); lineRendererContainer.anchorMax = new Vector2(1, 1); lineRendererContainer.sizeDelta = new Vector2(1, 1); lineRendererContainer.anchoredPosition = Vector2.zero; lineRendererContainer.gameObject.AddComponent <Mask>(); Image a = lineRendererContainer.gameObject.AddComponent <Image>(); a.SetAlpha(0.01f); // Create the line renderer foreach (DataSet d in dataSets) { d.lineRenderer = new GameObject("DataSet Line Renderer").AddComponent <UILineRenderer>(); d.lineRenderer.transform.SetParent(lineRendererContainer.transform, false); d.lineRenderer.GetComponent <RectTransform>().StretchToFill(); d.lineRenderer.color = d.mainColor; d.lineRenderer.RelativeSize = true; //d.lineRenderer.BezierMode = d.useBezier ? UILineRenderer.BezierType.Quick : UILineRenderer.BezierType.None; } // TODO: create the grid background gridRenderer = new GameObject("Grid Renderer").AddComponent <UIGridRenderer>(); gridRenderer.transform.SetParent(transform, false); gridRenderer.transform.SetAsFirstSibling(); gridRenderer.GetComponent <RectTransform>().StretchToFill(); Vector2 intervals = GetTickInterval(); // gridRenderer.GridColumns = Mathf.FloorToInt(intervals.x); gridRenderer.GridRows = Mathf.FloorToInt(intervals.y); // Create ticks on x axis float xAxisDistancePerTick = (xBounds.y - xBounds.x) / xAxisLines; gridRenderer.GridColumns = xAxisLines; for (int i = 0; i <= xAxisLines; i++) { TextMeshProUGUI newLabel = new GameObject("X Axis Tick Label").AddComponent <TextMeshProUGUI>(); RectTransform newLabelRectTransform = newLabel.GetComponent <RectTransform>(); newLabelRectTransform.SetParent(rectTransform, false); Vector2 anchorVec = new Vector2((float)i / (float)xAxisLines, 0); newLabelRectTransform.anchorMin = anchorVec; newLabelRectTransform.anchorMax = anchorVec; newLabelRectTransform.pivot = new Vector2(0.5f, 1f); newLabelRectTransform.anchoredPosition = new Vector2(0f, -5f); newLabelRectTransform.sizeDelta = new Vector2(50, 20); switch (xLabelType) { case AxisGraphLabelType.Percent: newLabel.text = ((xBounds.x + (xAxisDistancePerTick) * i) * 100).ToString() + "%"; break; case AxisGraphLabelType.Time: break; case AxisGraphLabelType.TimeRelativeToNow: if (i == xAxisLines) { newLabel.text = "Now"; } else { int secondsAgo = (int)(xBounds.y - (xBounds.x + (xAxisDistancePerTick) * i)); //int minutesAgo = secondsAgo % 60; newLabel.text = string.Format("{0}s", secondsAgo); } break; default: newLabel.text = (xBounds.x + (xAxisDistancePerTick) * i).ToString(); break; } newLabel.alignment = TextAlignmentOptions.Top; newLabel.enableWordWrapping = false; xAxisLabels.Add(newLabel); } // Create ticks on y axis float yAxisDistancePerTick = (yBounds.y - yBounds.x) / yAxisLines; gridRenderer.GridRows = yAxisLines; for (int i = 0; i <= yAxisLines; i++) { TextMeshProUGUI newLabel = new GameObject("Y Axis Tick Label").AddComponent <TextMeshProUGUI>(); RectTransform newLabelRectTransform = newLabel.GetComponent <RectTransform>(); newLabelRectTransform.SetParent(rectTransform, false); Vector2 anchorVec = new Vector2(0, (float)i / (float)yAxisLines); newLabelRectTransform.anchorMin = anchorVec; newLabelRectTransform.anchorMax = anchorVec; newLabelRectTransform.pivot = new Vector2(1f, 0.5f); newLabelRectTransform.anchoredPosition = new Vector2(-5f, 0f); newLabelRectTransform.sizeDelta = new Vector2(50, 20); switch (yLabelType) { case AxisGraphLabelType.Percent: newLabel.text = ((yBounds.x + (yAxisDistancePerTick) * i) * 100).ToString() + "%"; break; case AxisGraphLabelType.Time: break; case AxisGraphLabelType.TimeRelativeToNow: if (i == yAxisLines) { newLabel.text = "Now"; } else { int secondsAgo = (int)(yBounds.y - (yBounds.x + (yAxisDistancePerTick) * i)); //int minutesAgo = secondsAgo % 60; newLabel.text = string.Format("{0}s", secondsAgo); } break; default: newLabel.text = (yBounds.x + (yAxisDistancePerTick) * i).ToString(); break; } newLabel.alignment = TextAlignmentOptions.Right; newLabel.enableWordWrapping = false; yAxisLabels.Add(newLabel); } }