private void updateSizes() { RectTransform rt = image.GetComponent <RectTransform>(); var mainTexture = image.mainTexture; rt.sizeDelta = pixelSize * new Vector2(mainTexture.width, mainTexture.height); rt = grid.GetComponent <RectTransform>().GetComponent <RectTransform>(); rt.sizeDelta = pixelSize * new Vector2(mainTexture.width, mainTexture.height); grid.GridColumns = mainTexture.width; grid.GridRows = mainTexture.height; }
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); } }