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();
    }
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);
            }
        }