Esempio n. 1
0
    /* ---------- */
    /* BACKGROUND */
    /* ---------- */

    protected override void _drawPlotBackground(List <UIVertex> pVertexList)
    {
        if (mPlotBackgroundMesh == null)
        {
            NGraphUtils.AddMesh(mPlotBackgroundGo, out mPlotBackgroundMeshRenderer, out mPlotBackgroundMesh);
        }

        mPlotBackgroundMesh.Clear();
        mPlotBackgroundMeshRenderer.material = PlotBackgroundMaterial;
        mPlotBackgroundMeshRenderer.material.SetColor("_TintColor", PlotBackgroundColor);

        List <Vector3> pVertices  = new List <Vector3>();
        List <Vector2> pUvs       = new List <Vector2>();
        List <int>     pTriangles = new List <int>();

        UIVertex a = pVertexList [1];
        UIVertex b = pVertexList [2];
        UIVertex c = pVertexList [0];
        UIVertex d = pVertexList [3];

        pVertices.Add(c.position);
        pVertices.Add(a.position);
        pVertices.Add(b.position);
        pVertices.Add(d.position);
        pUvs.Add(c.uv0);
        pUvs.Add(a.uv0);
        pUvs.Add(b.uv0);
        pUvs.Add(d.uv0);

        /*
         * 1a       2b
         *
         *
         *
         * 0c       3d
         *
         */
        pTriangles.Add(0);
        pTriangles.Add(1);
        pTriangles.Add(2);

        pTriangles.Add(0);
        pTriangles.Add(2);
        pTriangles.Add(3);

        mPlotBackgroundMesh.vertices  = pVertices.ToArray();
        mPlotBackgroundMesh.uv        = pUvs.ToArray();
        mPlotBackgroundMesh.triangles = pTriangles.ToArray();
    }
Esempio n. 2
0
    protected override void _drawAxes(Rect xAxis, Rect yAxis)
    {
        if (mAxisMeshRendererX == null)
        {
            NGraphUtils.AddMesh(mXAxesGo, out mAxisMeshRendererX, out mXAxisMesh);
        }
        if (mAxisMeshRendererY == null)
        {
            NGraphUtils.AddMesh(mYAxesGo, out mAxisMeshRendererY, out mYAxisMesh);
        }

        mAxisMeshRendererX.material = AxisMaterial;
        mAxisMeshRendererX.material.SetColor("_TintColor", AxisColor);
        mAxisMeshRendererY.material = AxisMaterial;
        mAxisMeshRendererY.material.SetColor("_TintColor", AxisColor);
        NGraphUtils.DrawRect(xAxis, mXAxisMesh);
        NGraphUtils.DrawRect(yAxis, mYAxisMesh);
    }
Esempio n. 3
0
    protected override void _drawMajorGridLine(Axis axis, int index, float r, GameObject pGridLineGameObject)
    {
        MeshRenderer pMeshRenderer;
        Mesh         pMesh;

        NGraphUtils.AddMesh(pGridLineGameObject, out pMeshRenderer, out pMesh);
        mXAxisTicks.Add(pMeshRenderer);

        pMeshRenderer.material = AxisMaterial;
        pMeshRenderer.material.SetColor("_TintColor", GridLinesColorMajor);

        if (axis == Axis.X)
        {
            NGraphUtils.DrawRect(new Rect(adjustPointX(r) - (GridLinesThicknesMajor / 2f), adjustPointY(YRange.y), GridLinesThicknesMajor, adjustPointY(YRange.x) - adjustPointY(YRange.y)), pMesh);
        }
        else if (axis == Axis.Y)
        {
            NGraphUtils.DrawRect(new Rect(adjustPointX(XRange.x), adjustPointY(r) + (GridLinesThicknesMajor / 2f), adjustPointX(XRange.y) - adjustPointX(XRange.x), -GridLinesThicknesMajor), pMesh);
        }
    }
Esempio n. 4
0
    protected override void _drawAxisTick(Axis axis, int index, GameObject pTickGameObject)
    {
        MeshRenderer pMeshRenderer;
        Mesh         pMesh;

        NGraphUtils.AddMesh(pTickGameObject, out pMeshRenderer, out pMesh);
        mXAxisTicks.Add(pMeshRenderer);

        pMesh.Clear();
        pMeshRenderer.material = AxisMaterial;
        pMeshRenderer.material.SetColor("_TintColor", AxisColor);

        if (axis == Axis.X)
        {
            NGraphUtils.DrawRect(new Rect(-AxesThickness / 2, AxesThickness / 2 + 4, AxesThickness, -AxesThickness - 8), pMesh);
        }
        else if (axis == Axis.Y)
        {
            NGraphUtils.DrawRect(new Rect(-AxesThickness / 2 - 4, -AxesThickness / 2, AxesThickness + 8, AxesThickness), pMesh);
        }
    }
Esempio n. 5
0
    protected void drawMarker(Vector2 pDataPoint, int dataPointIndex)
    {
        Mesh           pMesh           = null;
        GameObject     pMarkerGo       = NGraphUtils.AddGameObject(mGameObject, NGraph.LEVEL_STEP, "Marker - " + dataPointIndex);
        CanvasRenderer pCanvasRenderer = null;

        if (mGraph.UnityGui)
        {
            pCanvasRenderer = NGraphUtils.AddCanvasRenderer(pMarkerGo);
            Material pMat = new Material(PlotMaterial);
            pMat.SetColor("_TintColor", mMarkerColor);
            pMat.SetVector("_Clipping", new Vector4(mClipping.x, mClipping.y, mClipping.z, mClipping.w));

            pCanvasRenderer.SetMaterial(pMat, null);
        }
        else
        {
            NGraphUtils.AddMesh(pMarkerGo, out mMeshRenderer, out pMesh);
            mMeshRenderer.material = PlotMaterial;
            mMeshRenderer.material.SetColor("_TintColor", mMarkerColor);
            mMeshRenderer.material.SetVector("_Clipping", new Vector4(mClipping.x, mClipping.y, mClipping.z, mClipping.w));
        }
        mMarkerGos.Add(pMarkerGo);

        List <Vector3> pVertices  = new List <Vector3>();
        List <Vector2> pUvs       = new List <Vector2>();
        List <int>     pTriangles = new List <int>();

        switch (MarkersStyle)
        {
        case MarkerStyle.Box:
        {
            /*
             * c      d
             *
             *
             * b      a
             */

            pVertices.Add(new Vector3(mMarkerWeight / 2 + pDataPoint.x, -mMarkerWeight / 2 + pDataPoint.y, 0));
            pVertices.Add(new Vector3(-mMarkerWeight / 2 + pDataPoint.x, -mMarkerWeight / 2 + pDataPoint.y, 0));
            pVertices.Add(new Vector3(-mMarkerWeight / 2 + pDataPoint.x, mMarkerWeight / 2 + pDataPoint.y, 0));
            pVertices.Add(new Vector3(mMarkerWeight / 2 + pDataPoint.x, mMarkerWeight / 2 + pDataPoint.y, 0));
            pUvs.Add(new Vector2(0, 0));
            pUvs.Add(new Vector2(1, 0));
            pUvs.Add(new Vector2(0, 1));
            pUvs.Add(new Vector2(1, 1));

            pTriangles.Add(0);
            pTriangles.Add(1);
            pTriangles.Add(2);

            pTriangles.Add(2);
            pTriangles.Add(3);
            pTriangles.Add(0);

            break;
        }

        case MarkerStyle.Triangle:
        {
            /*
             *    c
             *
             *
             * a      b
             */

            pVertices.Add(new Vector3(pDataPoint.x, pDataPoint.y + mMarkerWeight / 2, 0));
            pVertices.Add(new Vector3(mMarkerWeight / 2 + pDataPoint.x, -mMarkerWeight / 2 + pDataPoint.y, 0));
            pVertices.Add(new Vector3(-mMarkerWeight / 2 + pDataPoint.x, -mMarkerWeight / 2 + pDataPoint.y, 0));
            pUvs.Add(new Vector2(0, 0));
            pUvs.Add(new Vector2(1, 0));
            pUvs.Add(new Vector2(0.5f, 1));
            if (mGraph.UnityGui)
            {
                pVertices.Add(new Vector3(-mMarkerWeight / 2 + pDataPoint.x, -mMarkerWeight / 2 + pDataPoint.y, 0));
                pUvs.Add(new Vector2(0.5f, 1));
            }

            pTriangles.Add(0);
            pTriangles.Add(1);
            pTriangles.Add(2);

            break;
        }
        }

        if (mGraph.UnityGui)
        {
            List <UIVertex> vertices = new List <UIVertex>(pVertices.Count);
            for (int i = 0; i < pVertices.Count; i++)
            {
                UIVertex pVertex = new UIVertex();
                pVertex.position = pVertices[i];
                pVertex.uv0      = pUvs[i];
                vertices.Add(pVertex);
            }
            pCanvasRenderer.SetVertices(vertices);
        }
        else
        {
            pMesh.vertices  = pVertices.ToArray();
            pMesh.uv        = pUvs.ToArray();
            pMesh.triangles = pTriangles.ToArray();
        }
    }
Esempio n. 6
0
    public override void DrawSeries()
    {
        if (mGameObject == null || mData == null)
        {
            return;
        }

        base.DrawSeries();
        clearMarkers();
        int meshCount = mData.Count;

        if (mPlotStyle == Style.Line)
        {
            meshCount = 1;
        }
        clearMeshes(meshCount);
        clearCanvasRenderers(meshCount);

        List <Vector3> pVertices  = new List <Vector3>();
        List <Vector2> pUvs       = new List <Vector2>();
        List <int>     pTriangles = new List <int>();

        Mesh           pMesh;
        CanvasRenderer pCanvasRenderer;

        if (!mGraph.UnityGui && mMeshes == null)
        {
            mMeshes = new List <KeyValuePair <GameObject, Mesh> >();
        }
        else if (mGraph.UnityGui && mCanvasRenderers == null)
        {
            mCanvasRenderers = new List <KeyValuePair <GameObject, CanvasRenderer> >();
        }

        Vector2 pZero = mGraph.adjustPoint(Vector2.zero);

        for (int i = 0; i < mData.Count; ++i)
        {
            Vector2 pDataPoint = mData[i];
            pDataPoint = mGraph.adjustPoint(pDataPoint);

            if (MarkersStyle != MarkerStyle.None)
            {
                drawMarker(pDataPoint, i);
            }

            if (mPlotStyle == Style.Line && i == 0)
            {
                continue;
            }

            if (mPlotStyle == Style.Line)
            {
                Vector2 pPrevDataPoint = mData[i - 1];
                NGraphUtils.addSegment(mGraph.adjustPoint(pPrevDataPoint), pDataPoint, PlotThickness, pVertices, pUvs, pTriangles, mGraph.UnityGui);
            }
            else if (mPlotStyle == Style.Bar)
            {
                if (mGraph.UnityGui)
                {
                    if (i >= mCanvasRenderers.Count)
                    {
                        GameObject pChildBarGo = NGraphUtils.AddGameObject(mGameObject, 0, "Bar - " + i);
                        pCanvasRenderer = NGraphUtils.AddCanvasRenderer(pChildBarGo);
                        mCanvasRenderers.Add(new KeyValuePair <GameObject, CanvasRenderer>(pChildBarGo, pCanvasRenderer));
                    }
                    else
                    {
                        pCanvasRenderer = mCanvasRenderers[i].Value;
                    }

                    Material pMat = new Material(PlotMaterial);
                    pMat.SetColor("_TintColor", PlotColor);
                    pMat.SetVector("_Clipping", new Vector4(mClipping.x, mClipping.y, mClipping.z, mClipping.w));

                    pCanvasRenderer.SetMaterial(pMat, null);

                    float h   = pDataPoint.y - pZero.y;
                    float top = pZero.y;
                    NGraphUtils.DrawRect(new Rect(-mPlotThickness / 2 + pDataPoint.x, top, mPlotThickness, h), pCanvasRenderer);
                }
                else
                {
                    if (i >= mMeshes.Count)
                    {
                        GameObject pChildBarGo = NGraphUtils.AddGameObject(mGameObject, 0, "Bar - " + i);
                        NGraphUtils.AddMesh(pChildBarGo, out mMeshRenderer, out pMesh);
                        mMeshes.Add(new KeyValuePair <GameObject, Mesh>(pChildBarGo, pMesh));
                        mMeshRenderer.material = new Material(PlotMaterial);
                        mMeshRenderer.material.SetColor("_TintColor", PlotColor);
                        mMeshRenderer.material.SetVector("_Clipping", new Vector4(mClipping.x, mClipping.y, mClipping.z, mClipping.w));
                    }
                    else
                    {
                        pMesh = mMeshes[i].Value;
                    }

                    pMesh.Clear();
                    NGraphUtils.DrawRect(new Rect(-mPlotThickness / 2 + pDataPoint.x, pZero.y, mPlotThickness, pDataPoint.y - pZero.y), pMesh);
                }
            }
        }

        if (mPlotStyle == Style.Line)
        {
            if (mGraph.UnityGui)
            {
                if (mCanvasRenderers.Count == 0)
                {
                    GameObject pChildBarGo = NGraphUtils.AddGameObject(mGameObject, 0, "Line");
                    pCanvasRenderer = NGraphUtils.AddCanvasRenderer(pChildBarGo);
                    mCanvasRenderers.Add(new KeyValuePair <GameObject, CanvasRenderer>(pChildBarGo, pCanvasRenderer));
                }
                else
                {
                    pCanvasRenderer = mCanvasRenderers[0].Value;
                }

                Vector3[] e = new Vector3[4];
                mGraph.GetComponent <RectTransform>().GetWorldCorners(e);

                Material pMat = new Material(PlotMaterial);
                pMat.SetColor("_TintColor", PlotColor);
                pMat.SetVector("_Clipping", new Vector4(mClipping.x, mClipping.y, mClipping.z, mClipping.w));

                pCanvasRenderer.SetMaterial(pMat, null);
                List <UIVertex> vertices = new List <UIVertex>(pVertices.Count);
                for (int i = 0; i < pVertices.Count; i++)
                {
                    UIVertex pVertex = new UIVertex();
                    pVertex.position = pVertices[i];
                    pVertex.uv0      = pUvs[i];
                    vertices.Add(pVertex);
                }
                pCanvasRenderer.SetVertices(vertices);
            }
            else
            {
                if (mMeshes.Count == 0)
                {
                    GameObject pChildBarGo = NGraphUtils.AddGameObject(mGameObject, 0, "Line");
                    NGraphUtils.AddMesh(pChildBarGo, out mMeshRenderer, out pMesh);
                    mMeshes.Add(new KeyValuePair <GameObject, Mesh>(pChildBarGo, pMesh));
                    mMeshRenderer.material = new Material(PlotMaterial);
                    mMeshRenderer.material.SetColor("_TintColor", PlotColor);
                    mMeshRenderer.material.SetVector("_Clipping", new Vector4(mClipping.x, mClipping.y, mClipping.z, mClipping.w));
                }
                else
                {
                    pMesh = mMeshes[0].Value;
                }

                pMesh.Clear();
                pMesh.vertices  = pVertices.ToArray();
                pMesh.uv        = pUvs.ToArray();
                pMesh.triangles = pTriangles.ToArray();
            }
        }

        // Draw data labels if available
        foreach (dataLabelStruct labelInfo in mDataLabels)
        {
            drawDataLabel(labelInfo);
        }
    }
Esempio n. 7
0
    protected override void _drawAxisBackground(List <UIVertex> pVertexList)
    {
        if (mAxisBackgroundMesh == null)
        {
            NGraphUtils.AddMesh(mAxesBackgroundGo, out mAxisBackgroundMeshRenderer, out mAxisBackgroundMesh);
        }

        mAxisBackgroundMesh.Clear();

        /*
         * a  b&m       n&i j
         *    p          o
         *
         *
         *
         *               l  k
         *     e            f
         * c  d&g           h
         *
         */

        List <Vector3> pVertices  = new List <Vector3>();
        List <Vector2> pUvs       = new List <Vector2>();
        List <int>     pTriangles = new List <int>();

        int      idx = 0;
        UIVertex a   = pVertexList[idx++];
        UIVertex b   = pVertexList[idx++];
        UIVertex c   = pVertexList[idx++];
        UIVertex d   = pVertexList[idx++];
        UIVertex e   = pVertexList[idx++];
        UIVertex f   = pVertexList[idx++];
        UIVertex g   = pVertexList[idx++];
        UIVertex h   = pVertexList[idx++];
        UIVertex i   = pVertexList[idx++];
        UIVertex j   = pVertexList[idx++];
        UIVertex k   = pVertexList[idx++];
        UIVertex l   = pVertexList[idx++];
        UIVertex m   = pVertexList[idx++];
        UIVertex n   = pVertexList[idx++];
        UIVertex o   = pVertexList[idx++];
        UIVertex p   = pVertexList[idx++];

        //Left
        pVertices.Add(d.position);
        pVertices.Add(c.position);
        pVertices.Add(a.position);
        pVertices.Add(b.position);
        //Bottom
        pVertices.Add(h.position);
        pVertices.Add(g.position);
        pVertices.Add(e.position);
        pVertices.Add(f.position);
        //Right
        pVertices.Add(l.position);
        pVertices.Add(k.position);
        pVertices.Add(i.position);
        pVertices.Add(j.position);
        //Top
        pVertices.Add(p.position);
        pVertices.Add(o.position);
        pVertices.Add(m.position);
        pVertices.Add(n.position);

        //Left
        pUvs.Add(c.uv0);
        pUvs.Add(d.uv0);
        pUvs.Add(a.uv0);
        pUvs.Add(b.uv0);
        //Bottom
        pUvs.Add(e.uv0);
        pUvs.Add(f.uv0);
        pUvs.Add(g.uv0);
        pUvs.Add(h.uv0);
        //Right
        pUvs.Add(l.uv0);
        pUvs.Add(k.uv0);
        pUvs.Add(i.uv0);
        pUvs.Add(j.uv0);
        //Right
        pUvs.Add(m.uv0);
        pUvs.Add(n.uv0);
        pUvs.Add(p.uv0);
        pUvs.Add(o.uv0);

        //Left
        int offset = 0;

        pTriangles.Add(offset + 0);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 1);

        pTriangles.Add(offset + 1);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 3);

        //Bottom
        offset += 4;
        pTriangles.Add(offset + 0);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 1);

        pTriangles.Add(offset + 1);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 3);

        //Right
        offset += 4;
        pTriangles.Add(offset + 0);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 1);

        pTriangles.Add(offset + 1);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 3);

        //Top
        offset += 4;
        pTriangles.Add(offset + 0);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 1);

        pTriangles.Add(offset + 1);
        pTriangles.Add(offset + 2);
        pTriangles.Add(offset + 3);


        mAxisBackgroundMesh.vertices  = pVertices.ToArray();
        mAxisBackgroundMesh.uv        = pUvs.ToArray();
        mAxisBackgroundMesh.triangles = pTriangles.ToArray();

        mAxisBackgroundMeshRenderer.material = AxisMaterial;
        mAxisBackgroundMeshRenderer.material.SetColor("_TintColor", MarginBackgroundColor);
    }