#define Graph_And_Chart_PRO using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using UnityEngine.UI; namespace ChartAndGraph { /// /// a chart mesh that is used for canvas rendering /// class CanvasChartMesh : ChartMeshBase { VertexHelper mVHWrapAround; List mListWrapAround; UIVertex[] mTmpQuad = new UIVertex[4]; bool mTextOnly = false; public CanvasChartMesh(bool forText) { mTextOnly = forText; } public CanvasChartMesh(VertexHelper wrapAround) { mVHWrapAround = wrapAround; } public CanvasChartMesh(List wrapAround) { mListWrapAround = wrapAround; } public void WrapAround(VertexHelper wrapAround) { Clear(); mVHWrapAround = wrapAround; mListWrapAround = null; } public void WrapAround(List wrapAround) { Clear(); mVHWrapAround = null; mListWrapAround = wrapAround; } public override BillboardText AddText(AnyChart chart, MonoBehaviour prefab, Transform parentTransform, int fontSize,float fontScale, string text, float x, float y, float z,float angle, object userData) { if(mTextOnly) return base.AddText(chart, prefab, parentTransform, fontSize,fontScale, text, x, y, z,angle, userData); return null; } private UIVertex FloorVertex(UIVertex vertex) { Vector3 newPosition = new Vector3(Mathf.Floor(vertex.position.x), Mathf.Floor(vertex.position.y), Mathf.Floor(vertex.position.z)); vertex.position = newPosition; return vertex; } public override void AddQuad(UIVertex vLeftTop, UIVertex vRightTop, UIVertex vLeftBottom, UIVertex vRightBottom) { if (mListWrapAround != null) { mListWrapAround.Add(vLeftTop); mListWrapAround.Add(vRightTop); mListWrapAround.Add(vRightBottom); mListWrapAround.Add(vLeftBottom); return; } if (mVHWrapAround != null) { mTmpQuad[0] = vLeftTop; mTmpQuad[1] = vRightTop; mTmpQuad[2] = vRightBottom; mTmpQuad[3] = vLeftBottom; mVHWrapAround.AddUIVertexQuad(mTmpQuad); } } public override void AddXYRect(Rect rect, int subMeshGroup, float depth) { Vector2[] uvs = GetUvs(rect); UIVertex leftTop = ChartCommon.CreateVertex(new Vector3(rect.xMin, rect.yMin, depth), uvs[0]); UIVertex rightTop = ChartCommon.CreateVertex(new Vector3(rect.xMax, rect.yMin, depth), uvs[1]); UIVertex leftBottom = ChartCommon.CreateVertex(new Vector3(rect.xMin, rect.yMax, depth), uvs[2]); UIVertex rightBottom = ChartCommon.CreateVertex(new Vector3(rect.xMax, rect.yMax, depth), uvs[3]); AddQuad(leftTop, rightTop, leftBottom, rightBottom); } public override void AddXZRect(Rect rect, int subMeshGroup, float yPosition) { // this does nothing , canvas are 2d only } public override void AddYZRect(Rect rect, int subMeshGroup, float xPosition) { // this does nothing , canvas are 2d only } } }