Exemple #1
0
    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;
    }
Exemple #2
0
        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);
            }
        }