Template
51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
||
|
|
using UnityEngine;
|
||
|
|
|
||
|
|
public class LineFontMeshWriter : ProceduralMeshFilter {
|
||
|
|
public LineFontMeshWriter(IProceduralMeshFilter next):base(next)
|
||
|
|
{ }
|
||
|
|
|
||
|
|
public LineFontMeshWriter WriteText(string text)
|
||
|
|
{
|
||
|
|
float tabLength = 4 * LineFont.Chars[0].Width;
|
||
|
|
float lineSize = 32 + 2;
|
||
|
|
|
||
|
|
float x = 0.0f;
|
||
|
|
float y = 0.0f;
|
||
|
|
|
||
|
|
char firstChar = (char)32;
|
||
|
|
char lastChar = (char)(firstChar + LineFont.Chars.Count - 1);
|
||
|
|
|
||
|
|
for (int i = 0; i < text.Length; ++i)
|
||
|
|
{
|
||
|
|
char charID = text[i];
|
||
|
|
|
||
|
|
if (charID >= firstChar && charID <= lastChar) {
|
||
|
|
int p = charID - firstChar;
|
||
|
|
var vChar = LineFont.Chars[p];
|
||
|
|
for (int j = 0; j < vChar.Vertices.Count; j++) {
|
||
|
|
Next.Vertex(vChar.Vertices[j] + new Vector2(x, y));
|
||
|
|
//appendVertex(position, lineFont[p].vertices[i] + ScreenOffsetType(x, y));
|
||
|
|
}
|
||
|
|
x += vChar.Width;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
if (charID == '\n') {
|
||
|
|
x = 0;
|
||
|
|
y -= lineSize;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (charID == '\t') {
|
||
|
|
x += tabLength;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return this;
|
||
|
|
}
|
||
|
|
}
|