/// <summary> /// 通过函数获得结果的坐标点 /// </summary> /// <param name="x"></param> /// <param name="type"></param> /// <returns></returns> private Vector3 GetResult(float x, FunctionType type) { switch (type) { case FunctionType.SinFun: return(CacheUnit.SetVector(x, Mathf.Sin(x * Mathf.Deg2Rad) * 100) * BaseUnit); case FunctionType.CosFun: return(CacheUnit.SetVector(x, Mathf.Cos(x * Mathf.Deg2Rad) * 100) * BaseUnit); case FunctionType.LinearFun: //y=(-Ax-C)/B return(CacheUnit.SetVector(x, (-linearFun.A * x - linearFun.C) / linearFun.B) * BaseUnit); case FunctionType.InverseFun: return(CacheUnit.SetVector(x, inverseFun.K / x) * BaseUnit); case FunctionType.CustomFun: //exp = new Expression(); exp.SetFormula(customFun.formula); return(CacheUnit.SetVector(x, exp.GetReslut(x)) * BaseUnit); default: return(default(Vector3)); } }
/// <summary> /// 获得需要绘制的四边形属性 /// </summary> /// <param name="startPos"></param> /// <param name="endPos"></param> /// <param name="color0"></param> /// <param name="lineWidth"></param> /// <returns></returns> private DrawAttribute GetQuad(Vector3 startPos, Vector3 endPos, Color color0, float lineWidth = 2.0f) { var dis = Vector2.Distance(startPos, endPos); if (dis == 0) { dis = 0.001f; } var y = lineWidth * 0.5f * (endPos.x - startPos.x) / dis; var x = lineWidth * 0.5f * (endPos.y - startPos.y) / dis; if (y <= 0) { y = -y; } else { x = -x; } drawAttribute.SetPosition( CacheUnit.SetVector(startPos.x + x, startPos.y + y), CacheUnit.SetVector(endPos.x + x, endPos.y + y), CacheUnit.SetVector(endPos.x - x, endPos.y - y), CacheUnit.SetVector(startPos.x - x, startPos.y - y) ); drawAttribute.SetColor(color0, color0, color0, color0); return(drawAttribute); }
private void ModifyVertices(VertexHelper vh) { tempVertexTriangleStream.Clear(); vh.GetUIVertexStream(tempVertexTriangleStream); vh.Clear(); float[] result = ChartUntils.GetKeyArrayMaxxAndMaxy(keyPos); float maxx = result[0], maxy = result[1]; for (int i = 0; i < keyPos.Count - 1; i++) { drawAttribute.SetPosition( CacheUnit.SetVector(keyPos[i].x, keyPos[i].y), CacheUnit.SetVector(keyPos[i + 1].x, keyPos[i + 1].y), CacheUnit.SetVector(keyPos[i + 1].x, 0), CacheUnit.SetVector(keyPos[i].x, 0)); drawAttribute.SetColor(//平滑插值颜色 ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, keyPos[i].y / height)), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, keyPos[i + 1].y / height)), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, 0 / height)), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, 0 / height)) ); drawAttribute.SetUV( CacheUnit.SetVector(keyPos[i].x / maxx, keyPos[i].y / maxy), CacheUnit.SetVector(keyPos[i + 1].x / maxx, keyPos[i + 1].y / maxy), CacheUnit.SetVector(keyPos[i + 1].x / maxx, 0), CacheUnit.SetVector(keyPos[i].x / maxx, 0) ); DrawSimpleQuad(vh, drawAttribute); } }
private void ModifyVertices(VertexHelper vh) { vh.Clear(); float delta = 0; int count = ColorList.Count; if (isShowBorder) { DrawSimpleRectBorder(vh, CacheUnit.SetVector(centerX, centerY), CacheUnit.SetVector(centerX, centerY + height), CacheUnit.SetVector(centerX + width, centerY + height), CacheUnit.SetVector(centerX + width, centerY) ); } for (int i = 0; i < count - 1; i++) { if (DirType == ChartDirType.Horizontal) { drawAttribute.SetPosition( CacheUnit.SetVector(centerX + delta, centerY), CacheUnit.SetVector(centerX + delta, centerY + height), CacheUnit.SetVector(centerX + delta + (width) / (float)(count - 1), centerY + height), CacheUnit.SetVector(centerX + delta + (width) / (float)(count - 1), centerY) ); drawAttribute.SetColor(m_colorList[i], m_colorList[i], m_colorList[i + 1], m_colorList[i + 1]); DrawSimpleQuad(vh, drawAttribute); delta += (width) / (float)(count - 1); } else { drawAttribute.SetPosition( CacheUnit.SetVector(centerX, centerY + delta), CacheUnit.SetVector(centerX, centerY + delta + (height) / (float)(count - 1)), CacheUnit.SetVector(centerX + width, centerY + delta + (height) / (float)(count - 1)), CacheUnit.SetVector(centerX + width, centerY + delta) ); drawAttribute.SetColor(m_colorList[i], m_colorList[i + 1], m_colorList[i + 1], m_colorList[i]); DrawSimpleQuad(vh, drawAttribute); delta += (height) / (float)(count - 1); } } }
private void ModifyVertices(VertexHelper vh) { vh.Clear(); float i = 0; float ratioX = (Kx - InnerRaio * Kx); float ratioY = (Ky - InnerRaio * Ky); for (int j = 0; j < pieInfoList.Count; j++) { float value = pieInfoList[j].value; float delta = value * 0.05f;//节约mesh资源,,,数值越大越节省,同时效果也越差.简易数值最好为整数,否则效果出错 if (value < 5) { delta = 1; } float count = 0; float preRadian = i; float nextRadian = i + 0.0628f * delta * (value / delta); Vector3 preV = new Vector3(Mathf.Cos(preRadian), Mathf.Sin(preRadian)); Vector3 nextV = new Vector3(Mathf.Cos(nextRadian), Mathf.Sin(nextRadian)); Vector3 separationVector = (preV + nextV).normalized * 0.5f; while (count < value) { float cos = Mathf.Cos(i), sin = Mathf.Sin(i); float nextCos = Mathf.Cos(i + 0.0628f * delta), nextSin = Mathf.Sin(i + 0.0628f * delta); drawAttribute.SetPosition( CacheUnit.SetVector(nextCos * ratioX, nextSin * ratioY) + separationVector * separationDegree, CacheUnit.SetVector(nextCos * (Kx), nextSin * (Ky)) + separationVector * separationDegree, CacheUnit.SetVector(cos * (Kx), sin * (Ky)) + separationVector * separationDegree, CacheUnit.SetVector(cos * ratioX, sin * ratioY) + separationVector * separationDegree); drawAttribute.SetColor( pieInfoList[j].color, pieInfoList[j].color, pieInfoList[j].color, pieInfoList[j].color); DrawSimpleQuad(vh, drawAttribute); i += 0.0628f * delta; count += delta; } } }
void DrawCosFunChart(VertexHelper vh, FunctionType type) { float startX = -width / 2.0f; var startPos = SetCullingArea(ref startX, type) * cosFun.A; for (var x = startX; x < width / 2.0f; x += m_lineSmooth) { var endPos = GetResult(x, type) * cosFun.A; if (GetCullingArea(endPos)) { continue; } DrawSimpleQuad(vh, GetQuad(startPos + CacheUnit.SetVector(0, cosFun.B), endPos + CacheUnit.SetVector(0, cosFun.B), m_lineColor, m_lineWidth)); startPos = endPos; } }
/* * v2-------v3 * | | * | | * v1-------v4 */ protected void DrawSimpleRectBorder(VertexHelper vh, Vector2 v1, Vector2 v2, Vector2 v3, Vector2 v4) { //draw up border drawAttribute.SetPosition( CacheUnit.SetVector(v2.x, v2.y + borderWidth), CacheUnit.SetVector(v3.x, v3.y + borderWidth), CacheUnit.SetVector(v3.x, v3.y), CacheUnit.SetVector(v2.x, v2.y) ); drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor); DrawSimpleQuad(vh, drawAttribute); //draw right border drawAttribute.SetPosition( CacheUnit.SetVector(v3.x + borderWidth, v3.y + borderWidth), CacheUnit.SetVector(v4.x + borderWidth, v4.y - borderWidth), CacheUnit.SetVector(v4.x, v4.y - borderWidth), CacheUnit.SetVector(v3.x, v3.y + borderWidth) ); drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor); DrawSimpleQuad(vh, drawAttribute); //draw buttom border drawAttribute.SetPosition( CacheUnit.SetVector(v1.x, v1.y - borderWidth), CacheUnit.SetVector(v4.x, v4.y - borderWidth), CacheUnit.SetVector(v4.x, v4.y), CacheUnit.SetVector(v1.x, v1.y) ); drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor); DrawSimpleQuad(vh, drawAttribute); //draw left border drawAttribute.SetPosition( CacheUnit.SetVector(v2.x - borderWidth, v2.y + borderWidth), CacheUnit.SetVector(v1.x - borderWidth, v1.y - borderWidth), CacheUnit.SetVector(v1.x, v1.y - borderWidth), CacheUnit.SetVector(v2.x, v2.y + borderWidth) ); drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor); DrawSimpleQuad(vh, drawAttribute); }
private void ModifyVertices(VertexHelper vh) { vh.Clear(); if (IsShowXAxis) { //draw x drawAttribute.SetPosition( CacheUnit.SetVector(0 + centerX, -LineWidth), CacheUnit.SetVector(0 + centerX, 0), CacheUnit.SetVector(width + centerX, 0), CacheUnit.SetVector(width + centerX, -LineWidth)); drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor); DrawSimpleQuad(vh, drawAttribute); } if (IsShowArrow) { //draw x arrow drawAttribute.SetPosition( CacheUnit.SetVector(width + centerX, LineWidth + ArrowSize - LineWidth / 2f), CacheUnit.SetVector(width + centerX + 2 * ArrowSize, -LineWidth / 2f), CacheUnit.SetVector(width + centerX + 2 * ArrowSize, -LineWidth / 2f), CacheUnit.SetVector(width + centerX, -LineWidth - ArrowSize - LineWidth / 2f)); drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor); DrawSimpleQuad(vh, drawAttribute); //draw y arrow drawAttribute.SetPosition( CacheUnit.SetVector(-ArrowSize - LineWidth / 2 - LineWidth, height + centerY), CacheUnit.SetVector(-LineWidth / 2, height + centerY + ArrowSize * 2), CacheUnit.SetVector(-LineWidth / 2, height + centerY + ArrowSize * 2), CacheUnit.SetVector(ArrowSize + LineWidth / 2, height + centerY)); drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor); DrawSimpleQuad(vh, drawAttribute); } if (IsShowYAxis) { //draw y axis drawAttribute.SetPosition( CacheUnit.SetVector(-LineWidth, -LineWidth + centerY), CacheUnit.SetVector(-LineWidth, height + centerY), CacheUnit.SetVector(0, height + centerY), CacheUnit.SetVector(0, -LineWidth + centerY)); drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor); DrawSimpleQuad(vh, drawAttribute); } if (IsShowScale) { //draw x sacle for (int i = BaseUnit; i <= xLength; i += BaseUnit) { drawAttribute.SetPosition( CacheUnit.SetVector(i - LineWidth / 2f, 0), CacheUnit.SetVector(i - LineWidth / 2f, 10), CacheUnit.SetVector(i + LineWidth / 2f, 10), CacheUnit.SetVector(i + LineWidth / 2f, 0)); drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor); DrawSimpleQuad(vh, drawAttribute); } //draw y scale for (int i = BaseUnit; i < yLength; i += BaseUnit) { drawAttribute.SetPosition( CacheUnit.SetVector(0, i + LineWidth / 2f), CacheUnit.SetVector(10, i + LineWidth / 2f), CacheUnit.SetVector(10, i - LineWidth / 2f), CacheUnit.SetVector(0, i - LineWidth / 2f)); drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor); DrawSimpleQuad(vh, drawAttribute); } } //draw grid if (IsShowYGrid) { //draw x grid for (int i = BaseUnit; i < yLength - centerY; i += BaseUnit) { drawAttribute.SetPosition( CacheUnit.SetVector(0 + centerX, i + LineWidth / 2f + centerY), CacheUnit.SetVector(width + centerX, i + LineWidth / 2f + centerY), CacheUnit.SetVector(width + centerX, i - LineWidth / 2f + centerY), CacheUnit.SetVector(0 + centerX, i - LineWidth / 2f + centerY)); drawAttribute.SetColor(GridColor, GridColor, GridColor, GridColor); DrawSimpleQuad(vh, drawAttribute); } } if (IsShowXGrid) { //draw y grid for (int i = BaseUnit; i <= xLength - centerX; i += BaseUnit) { drawAttribute.SetPosition( CacheUnit.SetVector(i - LineWidth / 2f + centerX, 0 + centerY), CacheUnit.SetVector(i - LineWidth / 2f + centerX, height + centerY), CacheUnit.SetVector(i + LineWidth / 2f + centerX, height + centerY), CacheUnit.SetVector(i + LineWidth / 2f + centerX, 0 + centerY)); drawAttribute.SetColor(GridColor, GridColor, GridColor, GridColor); DrawSimpleQuad(vh, drawAttribute); } } }
private void ModifyVertices(VertexHelper vh) { vh.Clear(); float angle = 360f / parametersCount; //判断是否需要缓存 if (tmpCount != parametersCount) { CacheUnit.CacheItemAsAngle(parametersCount, angle); } tmpCount = parametersCount; float innerX = (Kx - LineCurde * Kx), innerY = (Ky - LineCurde * Ky); float outerX = Kx, outerY = Ky; for (int z = 0; z < circleCount; z++) { float delta = lineDleta * z; for (int j = 0; j < parametersCount; j++) { //设置颜色模式 int sequence = -1; if (colorMode == ColorMode.Single) { sequence = z; } else { sequence = j; } float cos = CacheUnit.cacheCosList[j]; float sin = CacheUnit.cacheSinList[j]; float nextCos = CacheUnit.cacheCosList[j + 1]; float nextSin = CacheUnit.cacheSinList[j + 1]; //上边 顺序:左下角 左上角 右上角 右下角 drawAttribute.SetPosition(CacheUnit.SetVector(nextCos * (innerX - delta), nextSin * (innerY - delta)), CacheUnit.SetVector(nextCos * (outerX - delta), nextSin * (outerY - delta)), CacheUnit.SetVector(cos * (outerX - delta), sin * (outerY - delta)), CacheUnit.SetVector(cos * (innerX - delta), sin * (innerY - delta))); drawAttribute.SetColor(bgInfoList[sequence].upBorderColor, bgInfoList[sequence].buttomBorderColor, bgInfoList[sequence].buttomBorderColor, bgInfoList[sequence].upBorderColor); DrawSimpleQuad(vh, drawAttribute); } } //绘制辅助线 for (int j = 0; j < parametersCount; j++) { float cos = CacheUnit.cacheCosList[j]; float sin = CacheUnit.cacheSinList[j]; float K = (sin * (Ky)) / (cos * (outerX));//计算斜率,增加线条宽度 K = Mathf.Abs(K); if (K > 500f)//看做无限大 垂直 { drawAttribute.SetPosition(CacheUnit.SetVector(-guideLineWidth, guideLineWidth), CacheUnit.SetVector(cos * (outerX) - guideLineWidth, sin * (Ky) + guideLineWidth), CacheUnit.SetVector(cos * (outerX) + guideLineWidth, sin * (outerY) - guideLineWidth), CacheUnit.SetVector(guideLineWidth, -guideLineWidth)); drawAttribute.SetColor(lineColor, lineColor, lineColor, lineColor); DrawSimpleQuad(vh, drawAttribute); continue; } drawAttribute.SetPosition(CacheUnit.SetVector(-guideLineWidth, guideLineWidth + K), CacheUnit.SetVector(cos * (outerX) + guideLineWidth, sin * (Ky) + guideLineWidth + K), CacheUnit.SetVector(cos * (outerX) + guideLineWidth, sin * (outerY) - guideLineWidth - K), CacheUnit.SetVector(-guideLineWidth, -guideLineWidth - K)); drawAttribute.SetColor(lineColor, lineColor, lineColor, lineColor); DrawSimpleQuad(vh, drawAttribute); } }
private void ModifyVertices(VertexHelper vh) { vh.Clear(); float groupDelta = 0; Color tmpColor = new Color(); for (int i = 0; i < BarInfoList.Count; i++) { float itemDelta = 0; for (int j = 0; j < BarInfoList[i].groupCount; j++) { PieInfo tmpInfo = BarInfoList[i].attributeInfoList[j]; if (BarColorMode == ColorMode.Single) { tmpColor = BarInfoList[i].attributeInfoList[0].color; } else if (BarColorMode == ColorMode.Sector) { tmpColor = tmpInfo.color; } if (m_chartRandererType == ChartRandererType.BarGroup) { if (barDirType == ChartDirType.Horizontal) { if (isShowBorder) { DrawSimpleRectBorder(vh, CacheUnit.SetVector(groupDelta + itemDelta + centerX, 0 + centerY), CacheUnit.SetVector(groupDelta + itemDelta + centerX, tmpInfo.value + centerY), CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, tmpInfo.value + centerY), CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, 0 + centerY) ); } drawAttribute.SetPosition( CacheUnit.SetVector(groupDelta + itemDelta + centerX, 0 + centerY), CacheUnit.SetVector(groupDelta + itemDelta + centerX, tmpInfo.value + centerY), CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, tmpInfo.value + centerY), CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, 0 + centerY) ); } else if (barDirType == ChartDirType.Vertical) { if (isShowBorder) { DrawSimpleRectBorder(vh, CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + centerY), CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + centerY) ); } drawAttribute.SetPosition( CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + centerY), CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + centerY) ); } drawAttribute.SetColor(tmpColor, tmpColor, tmpColor, tmpColor); DrawSimpleQuad(vh, drawAttribute); itemDelta += m_barItemDelta + BarWidth; } else if (m_chartRandererType == ChartRandererType.SingleBar)//单条显示 { m_colorMode = ColorMode.Sector; if (barDirType == ChartDirType.Horizontal) { if (isShowBorder) { DrawSimpleRectBorder(vh, CacheUnit.SetVector(groupDelta + centerX, 0 + centerY + itemDelta), CacheUnit.SetVector(groupDelta + centerX, tmpInfo.value + centerY + itemDelta), CacheUnit.SetVector(groupDelta + BarWidth + centerX, tmpInfo.value + centerY + itemDelta), CacheUnit.SetVector(groupDelta + BarWidth + centerX, 0 + centerY + itemDelta)); } drawAttribute.SetPosition( CacheUnit.SetVector(groupDelta + centerX, 0 + centerY + itemDelta), CacheUnit.SetVector(groupDelta + centerX, tmpInfo.value + centerY + itemDelta), CacheUnit.SetVector(groupDelta + BarWidth + centerX, tmpInfo.value + centerY + itemDelta), CacheUnit.SetVector(groupDelta + BarWidth + centerX, 0 + centerY + itemDelta) ); } else if (barDirType == ChartDirType.Vertical) { if (isShowBorder) { DrawSimpleRectBorder(vh, CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + centerY), CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + centerY)); } drawAttribute.SetPosition( CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + centerY), CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + BarWidth + centerY), CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + centerY) ); } drawAttribute.SetColor(tmpColor, tmpColor, tmpColor, tmpColor); DrawSimpleQuad(vh, drawAttribute); itemDelta += tmpInfo.value; } } groupDelta += BarWidth + m_groupDelta;//设置组间距 } }
private void ModifyVertices(VertexHelper vh) { tempVertexTriangleStream.Clear(); vh.GetUIVertexStream(tempVertexTriangleStream); vh.Clear(); float len = 0; for (int i = 0; i < keyPos.Count - 1; i++) { drawAttribute.SetPosition( CacheUnit.SetVector(keyPos[i].x, keyPos[i].y), CacheUnit.SetVector(keyPos[i + 1].x, keyPos[i + 1].y), CacheUnit.SetVector(keyPos[i + 1].x, keyPos[i + 1].y - LineWidth), CacheUnit.SetVector(keyPos[i].x, keyPos[i].y - LineWidth)); drawAttribute.SetColor( ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor)); DrawSimpleQuad(vh, drawAttribute); } switch (ItemMode) { case PointItemMode.Square: len = lineWidth; //画点 for (int i = 0; i < keyPos.Count; i++) { drawAttribute.SetPosition( CacheUnit.SetVector(-len, +len) + keyPos[i], CacheUnit.SetVector(+len, +len) + keyPos[i], CacheUnit.SetVector(+len, -len) + keyPos[i], CacheUnit.SetVector(-len, -len) + keyPos[i] ); drawAttribute.SetColor( ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor)); DrawSimpleQuad(vh, drawAttribute); } break; case PointItemMode.Triangle: len = lineWidth * 3; for (int i = 0; i < keyPos.Count; i++) { //模拟一个等边三角形 drawAttribute.SetPosition( CacheUnit.SetVector(0, (1.732f - 1) * len * 0.5f) + keyPos[i], CacheUnit.SetVector(0, (1.732f - 1) * len * 0.5f) + keyPos[i], CacheUnit.SetVector(len / 2, (-1.732f + 1) * len * 0.5f) + keyPos[i], CacheUnit.SetVector(-len / 2, (-1.732f + 1) * len * 0.5f) + keyPos[i] ); drawAttribute.SetColor( ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor)); DrawSimpleQuad(vh, drawAttribute); } break; case PointItemMode.Diamond: len = lineWidth * 1.5f; for (int i = 0; i < keyPos.Count; i++) { drawAttribute.SetPosition( CacheUnit.SetVector(len, 0) + keyPos[i], CacheUnit.SetVector(0, -len) + keyPos[i], CacheUnit.SetVector(-len, 0) + keyPos[i], CacheUnit.SetVector(0, len) + keyPos[i] ); drawAttribute.SetColor( ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor)); DrawSimpleQuad(vh, drawAttribute); } break; case PointItemMode.Star: len = lineWidth * 2f; float width = len * Mathf.Cos(54 * Mathf.Deg2Rad); float y = width * Mathf.Tan(36 * Mathf.Deg2Rad); float buttomHeight = len * Mathf.Sin(54 * Mathf.Deg2Rad); for (int i = 0; i < keyPos.Count; i++) { drawAttribute.SetPosition( CacheUnit.SetVector(len * Mathf.Cos(90 * Mathf.Deg2Rad), len * Mathf.Sin(90 * Mathf.Deg2Rad)) + keyPos[i], CacheUnit.SetVector(len * Mathf.Cos(306 * Mathf.Deg2Rad), len * Mathf.Sin(306 * Mathf.Deg2Rad)) + keyPos[i], CacheUnit.SetVector(0, -(buttomHeight - y)) + keyPos[i], CacheUnit.SetVector(len * Mathf.Cos(234 * Mathf.Deg2Rad), len * Mathf.Sin(234 * Mathf.Deg2Rad)) + keyPos[i] ); drawAttribute.SetColor( ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor)); DrawSimpleQuad(vh, drawAttribute); drawAttribute.SetPosition( CacheUnit.SetVector(len * Mathf.Cos(18 * Mathf.Deg2Rad), len * Mathf.Sin(18 * Mathf.Deg2Rad)) + keyPos[i], CacheUnit.SetVector(0, -(buttomHeight - y)) + keyPos[i], CacheUnit.SetVector(0, -(buttomHeight - y)) + keyPos[i], CacheUnit.SetVector(len * Mathf.Cos(162 * Mathf.Deg2Rad), len * Mathf.Sin(162 * Mathf.Deg2Rad)) + keyPos[i] ); drawAttribute.SetColor( ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor)); DrawSimpleQuad(vh, drawAttribute); } break; case PointItemMode.Circle: for (int i = 0; i < keyPos.Count; i++) { for (int j = 0; j < 24; j++) { float cos = Mathf.Cos(j) * lineWidth, sin = Mathf.Sin(j) * lineWidth; float nextCos = Mathf.Cos(j + 0.0628f * 15f) * lineWidth, nextSin = Mathf.Sin(j + 0.0628f * 15f) * lineWidth; drawAttribute.SetPosition( CacheUnit.SetVector(0, 0) + keyPos[i], CacheUnit.SetVector(nextCos, nextSin) + keyPos[i], CacheUnit.SetVector(cos, sin) + keyPos[i], CacheUnit.SetVector(0, 0) + keyPos[i] ); drawAttribute.SetColor( ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor), ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor)); DrawSimpleQuad(vh, drawAttribute); } } break; case PointItemMode.None: break; default: break; } }
public void Clear() { Pos[0] = Pos[1] = Pos[2] = Pos[3] = CacheUnit.SetVector(0, 0, 0); UV[0] = UV[1] = UV[2] = UV[3] = CacheUnit.SetVector(0, 0, 0); Color[0] = Color[1] = Color[2] = Color[3] = UnityEngine.Color.white; }