|
@@ -4,72 +4,7 @@ using UnityEngine.UI;
|
|
|
using System.Linq;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
-
|
|
|
-public class LineInfo
|
|
|
-{
|
|
|
- public int Count;
|
|
|
- public int EndIndex;
|
|
|
- public int StartIndex;
|
|
|
-
|
|
|
- public LineInfo(int startIndex, int endIndex)
|
|
|
- {
|
|
|
- EndIndex = endIndex;
|
|
|
- StartIndex = startIndex;
|
|
|
-
|
|
|
- Count = EndIndex - StartIndex + 1;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-public class RenderInfo
|
|
|
-{
|
|
|
- public LineInfo LineInfo
|
|
|
- {
|
|
|
- get { return LineInfo_; }
|
|
|
- set
|
|
|
- {
|
|
|
- LineInfo_ = value;
|
|
|
-
|
|
|
- EndIndex = LineInfo_.EndIndex;
|
|
|
- StartIndex = LineInfo_.StartIndex;
|
|
|
- LineCount = LineInfo_.Count;
|
|
|
- }
|
|
|
- }
|
|
|
- public SpriteInfo SpriteInfo
|
|
|
- {
|
|
|
- get { return SpriteInfo_; }
|
|
|
- set
|
|
|
- {
|
|
|
- SpriteInfo_ = value;
|
|
|
-
|
|
|
- UvList = SpriteInfo_.UvList;
|
|
|
- RawWidth = SpriteInfo_.Width;
|
|
|
- RawHeight = SpriteInfo_.Height;
|
|
|
-
|
|
|
- RenderCount = RightIndex - LeftIndex + 1;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private LineInfo LineInfo_;
|
|
|
- private SpriteInfo SpriteInfo_;
|
|
|
-
|
|
|
- public int LineCount;
|
|
|
- public int RenderCount;
|
|
|
-
|
|
|
- public int LeftIndex;
|
|
|
- public int RightIndex;
|
|
|
-
|
|
|
- public int EndIndex;
|
|
|
- public int StartIndex;
|
|
|
-
|
|
|
- public float Width;
|
|
|
- public float Height;
|
|
|
-
|
|
|
- public float RawWidth;
|
|
|
- public float RawHeight;
|
|
|
-
|
|
|
- public List<Vector2> UvList;
|
|
|
-}
|
|
|
-
|
|
|
+using System.Text;
|
|
|
|
|
|
public class ImageInfo
|
|
|
{
|
|
@@ -107,13 +42,17 @@ public class TextPlus : Text
|
|
|
|
|
|
private ImagePlus ImagePlus_;
|
|
|
|
|
|
- public bool Draw;
|
|
|
- public RenderInfo RenderInfo;
|
|
|
|
|
|
- public List<LineInfo> LineInfoList;
|
|
|
+ public bool Draw;
|
|
|
+ public float LineHeight;
|
|
|
+ public VertexHelper ToFill;
|
|
|
|
|
|
+ public List<int> RemovePos = new List<int>();
|
|
|
+ public List<int> ImageIndex = new List<int>();
|
|
|
+ public List<int> RemoveIndex = new List<int>();
|
|
|
+ public List<int> NewTextIndex = new List<int>();
|
|
|
|
|
|
- public VertexHelper ToFill;
|
|
|
+ public List<Vector3> NewTextPos = new List<Vector3>();
|
|
|
|
|
|
public List<UIVertex> TextVertex = new List<UIVertex>();
|
|
|
public List<UIVertex> ImageVertex = new List<UIVertex>();
|
|
@@ -139,326 +78,293 @@ public class TextPlus : Text
|
|
|
{
|
|
|
Draw = false;
|
|
|
|
|
|
- toFill.GetUIVertexStream(TextVertex);
|
|
|
+ ToFill = toFill;
|
|
|
+
|
|
|
+ Initialize();
|
|
|
|
|
|
for (int i = 0; i < imageList.Count; i++)
|
|
|
{
|
|
|
-
|
|
|
- }
|
|
|
+ for (int j = imageList[i].Left; j <= imageList[i].Right; j++)
|
|
|
+ {
|
|
|
+ ClearChar(j);
|
|
|
+ }
|
|
|
|
|
|
- return;
|
|
|
- RenderInfo.Height = preferredHeight / cachedTextGenerator.lineCount;
|
|
|
- RenderInfo.Width = (RenderInfo.Height / RenderInfo.RawHeight) * RenderInfo.RawWidth;
|
|
|
+ RemoveChar(imageList[i]);
|
|
|
|
|
|
- GetRenderLine();
|
|
|
+ CreateImage(imageList[i]);
|
|
|
+ }
|
|
|
|
|
|
- //RenderLine(imageVertex, textVertex, toFill);
|
|
|
+ for (int i = 0; i < RemovePos.Count; i++)
|
|
|
+ {
|
|
|
+ NewTextPos.RemoveAt(RemovePos[i] - i);
|
|
|
+ }
|
|
|
|
|
|
- //ImagePlus.UpdateStatus(true, new VertexHelper(), imageVertex);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ImagePlus.UpdateStatus(false, new VertexHelper(), null);
|
|
|
- }
|
|
|
- }
|
|
|
+ for (int i = 0; i < RemoveIndex.Count; i++)
|
|
|
+ {
|
|
|
+ NewTextIndex.RemoveAt(RemoveIndex[i] - i);
|
|
|
+ }
|
|
|
|
|
|
+ #region 调试
|
|
|
|
|
|
- protected void RenderLine(List<UIVertex> vertexImage, List<UIVertex> vertexStream, VertexHelper vertexHelper)
|
|
|
- {
|
|
|
- UIVertex[] vertices = new UIVertex[4];
|
|
|
+ //for (int i = 0; i < NewTextPos.Count; i+=6)
|
|
|
+ //{
|
|
|
+ // Debug.Log(NewTextPos[i] + " " + NewTextPos[i + 1] + " " + NewTextPos[i + 2] + " " + NewTextPos[i + 3] + " " + NewTextPos[i + 4] + " " + NewTextPos[i + 5]);
|
|
|
+ //}
|
|
|
|
|
|
- vertices[0].color = Color.white;
|
|
|
- vertices[1].color = Color.white;
|
|
|
- vertices[2].color = Color.white;
|
|
|
- vertices[3].color = Color.white;
|
|
|
+ //for (int i = 0; i < NewTextIndex.Count; i++)
|
|
|
+ //{
|
|
|
+ // Debug.Log(NewTextIndex[i]);
|
|
|
+ //}
|
|
|
|
|
|
- vertices[0].uv0 = RenderInfo.UvList[0];
|
|
|
- vertices[1].uv0 = RenderInfo.UvList[1];
|
|
|
- vertices[2].uv0 = RenderInfo.UvList[2];
|
|
|
- vertices[3].uv0 = RenderInfo.UvList[3];
|
|
|
+ //for (int i = 0; i < ImageIndex.Count; i++)
|
|
|
+ //{
|
|
|
+ // Debug.Log(ImageIndex[i]);
|
|
|
+ //}
|
|
|
|
|
|
- if (RenderInfo.LineCount == RenderInfo.RenderCount)
|
|
|
- {
|
|
|
- #region MyRegion
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ Retract();
|
|
|
|
|
|
- if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.UpperCenter)
|
|
|
+ for (int i = 0; i < ImageIndex.Count; i++)
|
|
|
{
|
|
|
- #region MyRegion
|
|
|
-
|
|
|
- Vector3 center = new Vector3(0, (vertexStream[RenderInfo.StartIndex * 6].position.y + vertexStream[RenderInfo.StartIndex * 6 + 4].position.y) / 2, 0);
|
|
|
-
|
|
|
- vertices[0].position = center + new Vector3(-RenderInfo.Width / 2, RenderInfo.Height / 2, 0);
|
|
|
- vertices[1].position = center + new Vector3(RenderInfo.Width / 2, RenderInfo.Height / 2, 0);
|
|
|
- vertices[2].position = center + new Vector3(RenderInfo.Width / 2, -RenderInfo.Height / 2, 0);
|
|
|
- vertices[3].position = center + new Vector3(-RenderInfo.Width / 2, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- #endregion
|
|
|
+ UIVertex v0 = ImageVertex[0 + i*4];
|
|
|
+ UIVertex v1 = ImageVertex[1 + i*4];
|
|
|
+ UIVertex v2 = ImageVertex[2 + i*4];
|
|
|
+ UIVertex v3 = ImageVertex[3 + i*4];
|
|
|
+
|
|
|
+ v0.position = NewTextPos[0 + (ImageIndex[i] - i)*6];
|
|
|
+ v1.position = NewTextPos[1 + (ImageIndex[i] - i)*6];
|
|
|
+ v2.position = NewTextPos[2 + (ImageIndex[i] - i)*6];
|
|
|
+ v3.position = NewTextPos[4 + (ImageIndex[i] - i)*6];
|
|
|
+
|
|
|
+ ImageVertex[0 + i*4] = v0;
|
|
|
+ ImageVertex[1 + i*4] = v1;
|
|
|
+ ImageVertex[2 + i*4] = v2;
|
|
|
+ ImageVertex[3 + i*4] = v3;
|
|
|
+
|
|
|
+ NewTextPos.RemoveAt(0 + (ImageIndex[i] - i)*6);
|
|
|
+ NewTextPos.RemoveAt(0 + (ImageIndex[i] - i)*6);
|
|
|
+ NewTextPos.RemoveAt(0 + (ImageIndex[i] - i)*6);
|
|
|
+ NewTextPos.RemoveAt(0 + (ImageIndex[i] - i)*6);
|
|
|
+ NewTextPos.RemoveAt(0 + (ImageIndex[i] - i)*6);
|
|
|
+ NewTextPos.RemoveAt(0 + (ImageIndex[i] - i)*6);
|
|
|
+
|
|
|
+ NewTextIndex.RemoveAt(ImageIndex[i] - i);
|
|
|
}
|
|
|
- else if (alignment == TextAnchor.LowerRight || alignment == TextAnchor.MiddleRight || alignment == TextAnchor.UpperRight)
|
|
|
- {
|
|
|
- #region MyRegion
|
|
|
-
|
|
|
- Vector3 centerRight = (vertexStream[RenderInfo.RightIndex * 6 + 1].position + vertexStream[RenderInfo.RightIndex * 6 + 2].position) / 2;
|
|
|
-
|
|
|
- vertices[0].position = centerRight + new Vector3(-RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- vertices[1].position = centerRight + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- vertices[2].position = centerRight + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
- vertices[3].position = centerRight + new Vector3(-RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
|
|
|
- #endregion
|
|
|
- }
|
|
|
- else if (alignment == TextAnchor.LowerLeft || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.UpperLeft)
|
|
|
+ for (int i = 0; i < NewTextIndex.Count; i++)
|
|
|
{
|
|
|
- #region MyRegion
|
|
|
-
|
|
|
- Vector3 centerLeft = (vertexStream[0].position + vertexStream[4].position) / 2;
|
|
|
-
|
|
|
- vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
- vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- #endregion
|
|
|
+ int index0 = 0 + NewTextIndex[i]*6;
|
|
|
+ int index1 = 1 + NewTextIndex[i]*6;
|
|
|
+ int index2 = 2 + NewTextIndex[i]*6;
|
|
|
+ int index3 = 4 + NewTextIndex[i]*6;
|
|
|
+
|
|
|
+ UIVertex v0 = TextVertex[index0];
|
|
|
+ UIVertex v1 = TextVertex[index1];
|
|
|
+ UIVertex v2 = TextVertex[index2];
|
|
|
+ UIVertex v3 = TextVertex[index3];
|
|
|
+
|
|
|
+ v0.position = NewTextPos[0 + i*6];
|
|
|
+ v1.position = NewTextPos[1 + i*6];
|
|
|
+ v2.position = NewTextPos[2 + i*6];
|
|
|
+ v3.position = NewTextPos[4 + i*6];
|
|
|
+
|
|
|
+ toFill.SetUIVertex(v0, 0 + NewTextIndex[i]*4);
|
|
|
+ toFill.SetUIVertex(v1, 1 + NewTextIndex[i]*4);
|
|
|
+ toFill.SetUIVertex(v2, 2 + NewTextIndex[i]*4);
|
|
|
+ toFill.SetUIVertex(v3, 3 + NewTextIndex[i]*4);
|
|
|
}
|
|
|
|
|
|
- #endregion
|
|
|
+ ImagePlus.UpdateStatus(true, new VertexHelper(), ImageVertex);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- #region MyRegion
|
|
|
+ ImagePlus.UpdateStatus(false, new VertexHelper(), null);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.UpperCenter)
|
|
|
- {
|
|
|
- #region MyRegion
|
|
|
|
|
|
- Vector3 centerLeft = new Vector3();
|
|
|
+ protected void Initialize()
|
|
|
+ {
|
|
|
+ LineHeight = preferredHeight / cachedTextGenerator.lineCount;
|
|
|
|
|
|
- if (RenderInfo.LeftIndex == RenderInfo.StartIndex)
|
|
|
- {
|
|
|
- centerLeft = (vertexStream[RenderInfo.LeftIndex * 6].position + vertexStream[RenderInfo.LeftIndex * 6 + 4].position) / 2;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- centerLeft = (vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position + vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 2].position) / 2;
|
|
|
- }
|
|
|
+ ImageIndex = new List<int>();
|
|
|
+ RemovePos = new List<int>();
|
|
|
+ RemoveIndex = new List<int>();
|
|
|
+ NewTextIndex = new List<int>();
|
|
|
|
|
|
- vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
- vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
+ NewTextPos = new List<Vector3>();
|
|
|
+ ImageVertex = new List<UIVertex>();
|
|
|
+
|
|
|
+ ToFill.GetUIVertexStream(TextVertex);
|
|
|
|
|
|
- if ((RenderInfo.RightIndex) != RenderInfo.EndIndex)
|
|
|
- {
|
|
|
- float offsetX1 = vertexStream[(RenderInfo.RightIndex + 1) * 6].position.x - vertices[1].position.x;
|
|
|
- float offsetX2 = (vertexStream[RenderInfo.EndIndex * 6 + 1].position.x + vertexStream[RenderInfo.StartIndex * 6].position.x - offsetX1) / 2;
|
|
|
+ for (int i = 0; i < text.Length; i++)
|
|
|
+ {
|
|
|
+ NewTextIndex.Add(i);
|
|
|
+ }
|
|
|
|
|
|
- UIVertex newVertex;
|
|
|
+ for (int i = 0; i < TextVertex.Count; i++)
|
|
|
+ {
|
|
|
+ NewTextPos.Add(TextVertex[i].position);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- for (int i = RenderInfo.RightIndex + 1; i < RenderInfo.EndIndex + 1; i++)
|
|
|
- {
|
|
|
- newVertex = vertexStream[i * 6];
|
|
|
- newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 1];
|
|
|
- newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
+ protected void Move(int index1, int index2, float x, float y)
|
|
|
+ {
|
|
|
+ Vector3 offset = new Vector3(x, y, 0);
|
|
|
+
|
|
|
+ for (int i = index1; i <= index2; i++)
|
|
|
+ {
|
|
|
+ NewTextPos[0 + i * 6] += offset;
|
|
|
+ NewTextPos[1 + i * 6] += offset;
|
|
|
+ NewTextPos[2 + i * 6] += offset;
|
|
|
+ NewTextPos[3 + i * 6] += offset;
|
|
|
+ NewTextPos[4 + i * 6] += offset;
|
|
|
+ NewTextPos[5 + i * 6] += offset;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 2];
|
|
|
- newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
+ protected void Retract()
|
|
|
+ {
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 4];
|
|
|
- newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- }
|
|
|
+ for (int i = 0; i < NewTextIndex.Count; i++)
|
|
|
+ {
|
|
|
+ sb.Append(text[NewTextIndex[i]]);
|
|
|
+ }
|
|
|
|
|
|
- for (int i = RenderInfo.StartIndex; i < RenderInfo.LeftIndex; i++)
|
|
|
- {
|
|
|
- newVertex = vertexStream[i * 6];
|
|
|
- newVertex.position.x -= offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
+ string newText = sb.ToString();
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 1];
|
|
|
- newVertex.position.x -= offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 2];
|
|
|
- newVertex.position.x -= offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
+ List<int> endIndex = new List<int>();
|
|
|
+ List<int> startIndex = new List<int>();
|
|
|
+ List<List<int>> imageGroup = new List<List<int>>();
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 4];
|
|
|
- newVertex.position.x -= offsetX2;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- }
|
|
|
+ imageGroup.Add(new List<int>());
|
|
|
|
|
|
- vertices[0].position.x -= offsetX2;
|
|
|
- vertices[1].position.x -= offsetX2;
|
|
|
- vertices[2].position.x -= offsetX2;
|
|
|
- vertices[3].position.x -= offsetX2;
|
|
|
- }
|
|
|
+ startIndex.Add(0);
|
|
|
|
|
|
- #endregion
|
|
|
- }
|
|
|
- else if (alignment == TextAnchor.LowerRight || alignment == TextAnchor.MiddleRight || alignment == TextAnchor.UpperRight)
|
|
|
+ for (int i = 0; i < newText.Length; i++)
|
|
|
+ {
|
|
|
+ if (newText[i] == '\n')
|
|
|
{
|
|
|
- #region MyRegion
|
|
|
+ endIndex.Add(i);
|
|
|
+ startIndex.Add(i + 1);
|
|
|
|
|
|
- Vector3 centerRight = new Vector3();
|
|
|
-
|
|
|
- if ((RenderInfo.RightIndex) == RenderInfo.EndIndex)
|
|
|
- {
|
|
|
- centerRight = (vertexStream[RenderInfo.EndIndex * 6 + 1].position + vertexStream[RenderInfo.EndIndex * 6 + 2].position) / 2;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- centerRight = (vertexStream[(RenderInfo.RightIndex) * 6 + 1].position + vertexStream[(RenderInfo.RightIndex) * 6 + 2].position) / 2;
|
|
|
- }
|
|
|
+ imageGroup.Add(new List<int>());
|
|
|
+ }
|
|
|
+ else if (newText[i] == '<')
|
|
|
+ {
|
|
|
+ ImageIndex.Add(i);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- vertices[0].position = centerRight + new Vector3(-RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- vertices[1].position = centerRight + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- vertices[2].position = centerRight + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
- vertices[3].position = centerRight + new Vector3(-RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
+ endIndex.Add(-1);
|
|
|
|
|
|
- if (RenderInfo.LeftIndex != RenderInfo.StartIndex)
|
|
|
+ for (int i = 0; i < ImageIndex.Count; i++)
|
|
|
+ {
|
|
|
+ for (int j = 0; j < endIndex.Count; j++)
|
|
|
+ {
|
|
|
+ if (ImageIndex[i] < endIndex[j])
|
|
|
{
|
|
|
- float offsetX1 = vertices[0].position.x - vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position.x;
|
|
|
-
|
|
|
- UIVertex newVertex;
|
|
|
-
|
|
|
- for (int i = RenderInfo.StartIndex; i < RenderInfo.LeftIndex; i++)
|
|
|
- {
|
|
|
- newVertex = vertexStream[i * 6];
|
|
|
- newVertex.position.x += offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
+ imageGroup[j].Add(ImageIndex[i]);
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 1];
|
|
|
- newVertex.position.x += offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
-
|
|
|
- newVertex = vertexStream[i * 6 + 2];
|
|
|
- newVertex.position.x += offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
-
|
|
|
- newVertex = vertexStream[i * 6 + 4];
|
|
|
- newVertex.position.x += offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- }
|
|
|
+ i++;
|
|
|
+ j = 0;
|
|
|
}
|
|
|
-
|
|
|
- #endregion
|
|
|
}
|
|
|
- else if (alignment == TextAnchor.LowerLeft || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.UpperLeft)
|
|
|
- {
|
|
|
- #region MyRegion
|
|
|
-
|
|
|
- Vector3 centerLeft = new Vector3();
|
|
|
|
|
|
- if (RenderInfo.LeftIndex == RenderInfo.StartIndex)
|
|
|
- {
|
|
|
- centerLeft = (vertexStream[RenderInfo.LeftIndex * 6].position + vertexStream[RenderInfo.LeftIndex * 6 + 4].position) / 2;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- centerLeft = (vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position + vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 2].position) / 2;
|
|
|
- }
|
|
|
+ imageGroup.Last(0).Add(ImageIndex[i]);
|
|
|
+ }
|
|
|
|
|
|
- vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
- vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
+ for (int i = 0; i < imageGroup.Count; i++)
|
|
|
+ {
|
|
|
+ RetractLine(endIndex[i], imageGroup[i]);
|
|
|
+ }
|
|
|
|
|
|
- if ((RenderInfo.RightIndex) != RenderInfo.EndIndex)
|
|
|
- {
|
|
|
- float offsetX1 = vertexStream[(RenderInfo.RightIndex + 1) * 6].position.x - vertices[1].position.x;
|
|
|
|
|
|
- UIVertex newVertex;
|
|
|
+ float offset;
|
|
|
|
|
|
- for (int i = RenderInfo.RightIndex + 1; i < RenderInfo.EndIndex + 1; i++)
|
|
|
- {
|
|
|
- newVertex = vertexStream[i * 6];
|
|
|
- newVertex.position.x -= offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
+ if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.UpperCenter)
|
|
|
+ {
|
|
|
+ //for (int i = 0; i < UPPER; i++)
|
|
|
+ //{
|
|
|
+
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ else if (alignment == TextAnchor.LowerRight || alignment == TextAnchor.MiddleRight || alignment == TextAnchor.UpperRight)
|
|
|
+ {
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 1];
|
|
|
- newVertex.position.x -= offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
+ }
|
|
|
+ else if (alignment == TextAnchor.LowerLeft || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.UpperLeft)
|
|
|
+ {
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 2];
|
|
|
- newVertex.position.x -= offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
+ }
|
|
|
|
|
|
- newVertex = vertexStream[i * 6 + 4];
|
|
|
- newVertex.position.x -= offsetX1;
|
|
|
- vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- #endregion
|
|
|
- }
|
|
|
+ if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.LowerLeft || alignment == TextAnchor.LowerRight)
|
|
|
+ {
|
|
|
|
|
|
- #endregion
|
|
|
}
|
|
|
+ else if (alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.MiddleRight)
|
|
|
+ {
|
|
|
|
|
|
- vertexImage.AddRange(vertices);
|
|
|
-
|
|
|
- UIVertex vertex = new UIVertex();
|
|
|
-
|
|
|
- for (int i = RenderInfo.LeftIndex; i < RenderInfo.RightIndex + 1; i++)
|
|
|
+ }
|
|
|
+ else if (alignment == TextAnchor.UpperCenter || alignment == TextAnchor.UpperLeft || alignment == TextAnchor.UpperRight)
|
|
|
{
|
|
|
- vertexHelper.SetUIVertex(vertex, i * 4);
|
|
|
- vertexHelper.SetUIVertex(vertex, i * 4 + 1);
|
|
|
- vertexHelper.SetUIVertex(vertex, i * 4 + 2);
|
|
|
- vertexHelper.SetUIVertex(vertex, i * 4 + 3);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- protected List<LineInfo> GetLineInfo()
|
|
|
+ protected void RetractLine(int endIndex, List<int> imageIndex)
|
|
|
{
|
|
|
- int startIndex = 0;
|
|
|
+ if (imageIndex.Count == 0)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- List<LineInfo> lineInfoList = new List<LineInfo>();
|
|
|
+ int rear;
|
|
|
+ int front;
|
|
|
|
|
|
- if (cachedTextGenerator.lineCount > 1)
|
|
|
+ if (imageIndex.Count == 1)
|
|
|
{
|
|
|
- for (int i = 0; i < text.Length; i++)
|
|
|
+ rear = endIndex - 1;
|
|
|
+ front = imageIndex[0] + 1;
|
|
|
+
|
|
|
+ if (endIndex == -1)
|
|
|
{
|
|
|
- if (text[i] == '\n')
|
|
|
- {
|
|
|
- if (text[startIndex] != '\n')
|
|
|
- {
|
|
|
- lineInfoList.Add(new LineInfo(startIndex, i));
|
|
|
- }
|
|
|
+ rear = NewTextIndex.Count - 1;
|
|
|
+ }
|
|
|
|
|
|
- if (i + 1 == text.Length)
|
|
|
- {
|
|
|
- return lineInfoList;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- startIndex = i + 1;
|
|
|
- }
|
|
|
- }
|
|
|
+ if (rear <= front)
|
|
|
+ {
|
|
|
+ return;
|
|
|
}
|
|
|
+
|
|
|
+ Move(front, rear, -GetSpan(imageIndex[0], front), 0);
|
|
|
}
|
|
|
-
|
|
|
- lineInfoList.Add(new LineInfo(startIndex, text.Length - 1));
|
|
|
-
|
|
|
- return lineInfoList;
|
|
|
- }
|
|
|
-
|
|
|
- protected void GetRenderLine()
|
|
|
- {
|
|
|
- List<LineInfo> lineInfoList = GetLineInfo();
|
|
|
-
|
|
|
- for (int i = 0; i < lineInfoList.Count; i++)
|
|
|
+ else
|
|
|
{
|
|
|
- if (RenderInfo.LeftIndex >= lineInfoList[i].StartIndex && RenderInfo.LeftIndex < lineInfoList[i].EndIndex)
|
|
|
+ for (int i = 0; i < imageIndex.Count; i++)
|
|
|
{
|
|
|
- RenderInfo.LineInfo = lineInfoList[i];
|
|
|
+ if (endIndex == -1)
|
|
|
+ {
|
|
|
+ rear = NewTextIndex.Count - 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ rear = endIndex - 1;
|
|
|
+ }
|
|
|
|
|
|
- break;
|
|
|
+ front = imageIndex.Last(i) + 1;
|
|
|
+
|
|
|
+ if (rear <= front)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ Move(front, rear, -GetSpan(imageIndex.Last(i), front), 0);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -482,6 +388,113 @@ public class TextPlus : Text
|
|
|
ToFill.SetUIVertex(v3, 3 + index * 4);
|
|
|
}
|
|
|
|
|
|
+ protected void RemoveChar(ImageInfo imageInfo)
|
|
|
+ {
|
|
|
+ for (int i = imageInfo.Left + 1; i <= imageInfo.Right; i++)
|
|
|
+ {
|
|
|
+ RemoveIndex.Add(i);
|
|
|
+
|
|
|
+ RemovePos.Add(0 + i*6);
|
|
|
+ RemovePos.Add(1 + i*6);
|
|
|
+ RemovePos.Add(2 + i*6);
|
|
|
+ RemovePos.Add(3 + i*6);
|
|
|
+ RemovePos.Add(4 + i*6);
|
|
|
+ RemovePos.Add(5 + i*6);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void CreateImage(ImageInfo imageInfo)
|
|
|
+ {
|
|
|
+ float height = LineHeight;
|
|
|
+ float width = (height/imageInfo.SpriteInfo.Height)*imageInfo.SpriteInfo.Width;
|
|
|
+
|
|
|
+ bool first = false;
|
|
|
+
|
|
|
+ if (imageInfo.Left == 0)
|
|
|
+ {
|
|
|
+ first = true;
|
|
|
+ }
|
|
|
+ else if (!SameLine(imageInfo.Left, imageInfo.Right))
|
|
|
+ {
|
|
|
+ first = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ UIVertex v0 = new UIVertex();
|
|
|
+ UIVertex v1 = new UIVertex();
|
|
|
+ UIVertex v2 = new UIVertex();
|
|
|
+ UIVertex v3 = new UIVertex();
|
|
|
+
|
|
|
+ v0.color = Color.white;
|
|
|
+ v1.color = Color.white;
|
|
|
+ v2.color = Color.white;
|
|
|
+ v3.color = Color.white;
|
|
|
+
|
|
|
+ v0.uv0 = imageInfo.SpriteInfo.UvList[0];
|
|
|
+ v1.uv0 = imageInfo.SpriteInfo.UvList[1];
|
|
|
+ v2.uv0 = imageInfo.SpriteInfo.UvList[2];
|
|
|
+ v3.uv0 = imageInfo.SpriteInfo.UvList[3];
|
|
|
+
|
|
|
+ if (first)
|
|
|
+ {
|
|
|
+ Vector3 middleLeft = (TextVertex[0 + imageInfo.Left*6].position + TextVertex[4 + imageInfo.Left*6].position)/2;
|
|
|
+
|
|
|
+ v0.position = middleLeft + new Vector3(0, height/2);
|
|
|
+ v1.position = middleLeft + new Vector3(width, height / 2);
|
|
|
+ v2.position = middleLeft + new Vector3(width, -height / 2);
|
|
|
+ v3.position = middleLeft + new Vector3(0, -height / 2);
|
|
|
+
|
|
|
+ ImageVertex.Add(v0);
|
|
|
+ ImageVertex.Add(v1);
|
|
|
+ ImageVertex.Add(v2);
|
|
|
+ ImageVertex.Add(v3);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Vector3 middleRight = (TextVertex[1 + (imageInfo.Left - 1) * 6].position + TextVertex[2 + (imageInfo.Left - 1) * 6].position) / 2;
|
|
|
+
|
|
|
+ v0.position = middleRight + new Vector3(0, height / 2);
|
|
|
+ v1.position = middleRight + new Vector3(width, height / 2);
|
|
|
+ v2.position = middleRight + new Vector3(width, -height / 2);
|
|
|
+ v3.position = middleRight + new Vector3(0, -height / 2);
|
|
|
+
|
|
|
+ ImageVertex.Add(v0);
|
|
|
+ ImageVertex.Add(v1);
|
|
|
+ ImageVertex.Add(v2);
|
|
|
+ ImageVertex.Add(v3);
|
|
|
+ }
|
|
|
+
|
|
|
+ NewTextPos[0 + imageInfo.Left*6] = v0.position;
|
|
|
+ NewTextPos[1 + imageInfo.Left*6] = v1.position;
|
|
|
+ NewTextPos[2 + imageInfo.Left*6] = v2.position;
|
|
|
+ NewTextPos[3 + imageInfo.Left*6] = v2.position;
|
|
|
+ NewTextPos[4 + imageInfo.Left*6] = v3.position;
|
|
|
+ NewTextPos[5 + imageInfo.Left*6] = v0.position;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected bool SameLine(int index1, int index2)
|
|
|
+ {
|
|
|
+ if (Mathf.Abs(GetCenter(index1).y - GetCenter(index2).y) < LineHeight/4)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected float GetSpan(int index1, int index2)
|
|
|
+ {
|
|
|
+ return (NewTextPos[0 + index2*6].x - NewTextPos[1 + index1*6].x);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected Vector3 GetCenter(int index)
|
|
|
+ {
|
|
|
+ return (TextVertex[0 + index*6].position + TextVertex[3 + index*6].position)/2;
|
|
|
+ }
|
|
|
+
|
|
|
protected List<ImageInfo> GetImageList()
|
|
|
{
|
|
|
List<ImageInfo> imageList = new List<ImageInfo>();
|
|
@@ -523,366 +536,4 @@ public class TextPlus : Text
|
|
|
|
|
|
return imageList;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- //protected override void OnPopulateMesh(VertexHelper toFill)
|
|
|
- //{
|
|
|
- // base.OnPopulateMesh(toFill);
|
|
|
-
|
|
|
- // int leftIndex = text.IndexOf("<(");
|
|
|
- // int rightIndex = text.IndexOf(")>");
|
|
|
-
|
|
|
- // if (leftIndex == -1 || rightIndex == -1)
|
|
|
- // {
|
|
|
- // Draw = false;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // rightIndex++;
|
|
|
-
|
|
|
- // string spriteName = text.Between(leftIndex + 2, rightIndex - 2);
|
|
|
-
|
|
|
- // SpriteInfo spriteInfo;
|
|
|
-
|
|
|
- // if (SpriteAsset.SpriteInfoDic.TryGetValue(spriteName, out spriteInfo))
|
|
|
- // {
|
|
|
- // Draw = true;
|
|
|
-
|
|
|
- // RenderInfo = new RenderInfo();
|
|
|
-
|
|
|
- // RenderInfo.LeftIndex = leftIndex;
|
|
|
- // RenderInfo.RightIndex = rightIndex;
|
|
|
-
|
|
|
- // RenderInfo.SpriteInfo = spriteInfo;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // Draw = false;
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // if (Draw)
|
|
|
- // {
|
|
|
- // Draw = false;
|
|
|
-
|
|
|
- // List<UIVertex> textVertex = new List<UIVertex>();
|
|
|
- // List<UIVertex> imageVertex = new List<UIVertex>();
|
|
|
-
|
|
|
- // toFill.GetUIVertexStream(textVertex);
|
|
|
-
|
|
|
- // RenderInfo.Height = preferredHeight / cachedTextGenerator.lineCount;
|
|
|
- // RenderInfo.Width = (RenderInfo.Height / RenderInfo.RawHeight) * RenderInfo.RawWidth;
|
|
|
-
|
|
|
- // GetRenderLine();
|
|
|
-
|
|
|
- // RenderLine(imageVertex, textVertex, toFill);
|
|
|
-
|
|
|
- // ImagePlus.UpdateStatus(true, new VertexHelper(), imageVertex);
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // ImagePlus.UpdateStatus(false, new VertexHelper(), null);
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
-
|
|
|
- //protected void RenderLine(List<UIVertex> vertexImage, List<UIVertex> vertexStream, VertexHelper vertexHelper)
|
|
|
- //{
|
|
|
- // UIVertex[] vertices = new UIVertex[4];
|
|
|
-
|
|
|
- // vertices[0].color = Color.white;
|
|
|
- // vertices[1].color = Color.white;
|
|
|
- // vertices[2].color = Color.white;
|
|
|
- // vertices[3].color = Color.white;
|
|
|
-
|
|
|
- // vertices[0].uv0 = RenderInfo.UvList[0];
|
|
|
- // vertices[1].uv0 = RenderInfo.UvList[1];
|
|
|
- // vertices[2].uv0 = RenderInfo.UvList[2];
|
|
|
- // vertices[3].uv0 = RenderInfo.UvList[3];
|
|
|
-
|
|
|
- // if (RenderInfo.LineCount == RenderInfo.RenderCount)
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.UpperCenter)
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // Vector3 center = new Vector3(0, (vertexStream[RenderInfo.StartIndex * 6].position.y + vertexStream[RenderInfo.StartIndex * 6 + 4].position.y) / 2, 0);
|
|
|
-
|
|
|
- // vertices[0].position = center + new Vector3(-RenderInfo.Width / 2, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[1].position = center + new Vector3(RenderInfo.Width / 2, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[2].position = center + new Vector3(RenderInfo.Width / 2, -RenderInfo.Height / 2, 0);
|
|
|
- // vertices[3].position = center + new Vector3(-RenderInfo.Width / 2, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
- // else if (alignment == TextAnchor.LowerRight || alignment == TextAnchor.MiddleRight || alignment == TextAnchor.UpperRight)
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // Vector3 centerRight = (vertexStream[RenderInfo.RightIndex * 6 + 1].position + vertexStream[RenderInfo.RightIndex * 6 + 2].position) / 2;
|
|
|
-
|
|
|
- // vertices[0].position = centerRight + new Vector3(-RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[1].position = centerRight + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[2].position = centerRight + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
- // vertices[3].position = centerRight + new Vector3(-RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
- // else if (alignment == TextAnchor.LowerLeft || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.UpperLeft)
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // Vector3 centerLeft = (vertexStream[0].position + vertexStream[4].position) / 2;
|
|
|
-
|
|
|
- // vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
- // vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.UpperCenter)
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // Vector3 centerLeft = new Vector3();
|
|
|
-
|
|
|
- // if (RenderInfo.LeftIndex == RenderInfo.StartIndex)
|
|
|
- // {
|
|
|
- // centerLeft = (vertexStream[RenderInfo.LeftIndex * 6].position + vertexStream[RenderInfo.LeftIndex * 6 + 4].position) / 2;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // centerLeft = (vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position + vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 2].position) / 2;
|
|
|
- // }
|
|
|
-
|
|
|
- // vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
- // vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- // if ((RenderInfo.RightIndex) != RenderInfo.EndIndex)
|
|
|
- // {
|
|
|
- // float offsetX1 = vertexStream[(RenderInfo.RightIndex + 1) * 6].position.x - vertices[1].position.x;
|
|
|
- // float offsetX2 = (vertexStream[RenderInfo.EndIndex * 6 + 1].position.x + vertexStream[RenderInfo.StartIndex * 6].position.x - offsetX1) / 2;
|
|
|
-
|
|
|
- // UIVertex newVertex;
|
|
|
-
|
|
|
- // for (int i = RenderInfo.RightIndex + 1; i < RenderInfo.EndIndex + 1; i++)
|
|
|
- // {
|
|
|
- // newVertex = vertexStream[i * 6];
|
|
|
- // newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 1];
|
|
|
- // newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 2];
|
|
|
- // newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 4];
|
|
|
- // newVertex.position.x -= offsetX1 + offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- // }
|
|
|
-
|
|
|
- // for (int i = RenderInfo.StartIndex; i < RenderInfo.LeftIndex; i++)
|
|
|
- // {
|
|
|
- // newVertex = vertexStream[i * 6];
|
|
|
- // newVertex.position.x -= offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 1];
|
|
|
- // newVertex.position.x -= offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 2];
|
|
|
- // newVertex.position.x -= offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 4];
|
|
|
- // newVertex.position.x -= offsetX2;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- // }
|
|
|
-
|
|
|
- // vertices[0].position.x -= offsetX2;
|
|
|
- // vertices[1].position.x -= offsetX2;
|
|
|
- // vertices[2].position.x -= offsetX2;
|
|
|
- // vertices[3].position.x -= offsetX2;
|
|
|
- // }
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
- // else if (alignment == TextAnchor.LowerRight || alignment == TextAnchor.MiddleRight || alignment == TextAnchor.UpperRight)
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // Vector3 centerRight = new Vector3();
|
|
|
-
|
|
|
- // if ((RenderInfo.RightIndex) == RenderInfo.EndIndex)
|
|
|
- // {
|
|
|
- // centerRight = (vertexStream[RenderInfo.EndIndex * 6 + 1].position + vertexStream[RenderInfo.EndIndex * 6 + 2].position) / 2;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // centerRight = (vertexStream[(RenderInfo.RightIndex) * 6 + 1].position + vertexStream[(RenderInfo.RightIndex) * 6 + 2].position) / 2;
|
|
|
- // }
|
|
|
-
|
|
|
- // vertices[0].position = centerRight + new Vector3(-RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[1].position = centerRight + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[2].position = centerRight + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
- // vertices[3].position = centerRight + new Vector3(-RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- // if (RenderInfo.LeftIndex != RenderInfo.StartIndex)
|
|
|
- // {
|
|
|
- // float offsetX1 = vertices[0].position.x - vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position.x;
|
|
|
-
|
|
|
- // UIVertex newVertex;
|
|
|
-
|
|
|
- // for (int i = RenderInfo.StartIndex; i < RenderInfo.LeftIndex; i++)
|
|
|
- // {
|
|
|
- // newVertex = vertexStream[i * 6];
|
|
|
- // newVertex.position.x += offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 1];
|
|
|
- // newVertex.position.x += offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 2];
|
|
|
- // newVertex.position.x += offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 4];
|
|
|
- // newVertex.position.x += offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
- // else if (alignment == TextAnchor.LowerLeft || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.UpperLeft)
|
|
|
- // {
|
|
|
- // #region MyRegion
|
|
|
-
|
|
|
- // Vector3 centerLeft = new Vector3();
|
|
|
-
|
|
|
- // if (RenderInfo.LeftIndex == RenderInfo.StartIndex)
|
|
|
- // {
|
|
|
- // centerLeft = (vertexStream[RenderInfo.LeftIndex * 6].position + vertexStream[RenderInfo.LeftIndex * 6 + 4].position) / 2;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // centerLeft = (vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position + vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 2].position) / 2;
|
|
|
- // }
|
|
|
-
|
|
|
- // vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
|
|
|
- // vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
|
|
|
- // vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
|
|
|
-
|
|
|
- // if ((RenderInfo.RightIndex) != RenderInfo.EndIndex)
|
|
|
- // {
|
|
|
- // float offsetX1 = vertexStream[(RenderInfo.RightIndex + 1) * 6].position.x - vertices[1].position.x;
|
|
|
-
|
|
|
- // UIVertex newVertex;
|
|
|
-
|
|
|
- // for (int i = RenderInfo.RightIndex + 1; i < RenderInfo.EndIndex + 1; i++)
|
|
|
- // {
|
|
|
- // newVertex = vertexStream[i * 6];
|
|
|
- // newVertex.position.x -= offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 1];
|
|
|
- // newVertex.position.x -= offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 2];
|
|
|
- // newVertex.position.x -= offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
|
|
|
-
|
|
|
- // newVertex = vertexStream[i * 6 + 4];
|
|
|
- // newVertex.position.x -= offsetX1;
|
|
|
- // vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
-
|
|
|
- // #endregion
|
|
|
- // }
|
|
|
-
|
|
|
- // vertexImage.AddRange(vertices);
|
|
|
-
|
|
|
- // UIVertex vertex = new UIVertex();
|
|
|
-
|
|
|
- // for (int i = RenderInfo.LeftIndex; i < RenderInfo.RightIndex + 1; i++)
|
|
|
- // {
|
|
|
- // vertexHelper.SetUIVertex(vertex, i * 4);
|
|
|
- // vertexHelper.SetUIVertex(vertex, i * 4 + 1);
|
|
|
- // vertexHelper.SetUIVertex(vertex, i * 4 + 2);
|
|
|
- // vertexHelper.SetUIVertex(vertex, i * 4 + 3);
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
-
|
|
|
- //protected List<LineInfo> GetLineInfo()
|
|
|
- //{
|
|
|
- // int startIndex = 0;
|
|
|
-
|
|
|
- // List<LineInfo> lineInfoList = new List<LineInfo>();
|
|
|
-
|
|
|
- // if (cachedTextGenerator.lineCount > 1)
|
|
|
- // {
|
|
|
- // for (int i = 0; i < text.Length; i++)
|
|
|
- // {
|
|
|
- // if (text[i] == '\n')
|
|
|
- // {
|
|
|
- // if (text[startIndex] != '\n')
|
|
|
- // {
|
|
|
- // lineInfoList.Add(new LineInfo(startIndex, i));
|
|
|
- // }
|
|
|
-
|
|
|
- // if (i + 1 == text.Length)
|
|
|
- // {
|
|
|
- // return lineInfoList;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // startIndex = i + 1;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // lineInfoList.Add(new LineInfo(startIndex, text.Length - 1));
|
|
|
-
|
|
|
- // return lineInfoList;
|
|
|
- //}
|
|
|
-
|
|
|
- //protected void GetRenderLine()
|
|
|
- //{
|
|
|
- // List<LineInfo> lineInfoList = GetLineInfo();
|
|
|
-
|
|
|
- // for (int i = 0; i < lineInfoList.Count; i++)
|
|
|
- // {
|
|
|
- // if (RenderInfo.LeftIndex >= lineInfoList[i].StartIndex && RenderInfo.LeftIndex < lineInfoList[i].EndIndex)
|
|
|
- // {
|
|
|
- // RenderInfo.LineInfo = lineInfoList[i];
|
|
|
-
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // }
|
|
|
- //}
|
|
|
}
|