This commit is contained in:
2025-05-13 03:10:33 +03:00
parent 5f03062f42
commit e5e3172b0f
80 changed files with 9655 additions and 0 deletions
Binary file not shown.
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: db652713c229a9f4eb22bdeaebf66ee0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1b44823674f0f024e96dfcbb6c2ba395
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eab96370ae1f9ee4e8bf7adb3bff193e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,42 @@
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Reflection;
//using System;
[CustomPropertyDrawer (typeof (InspectorButton))]
public class InspectorButtonDrawer : PropertyDrawer {
public override void OnGUI (Rect pos, SerializedProperty prop, GUIContent label) {
SerializedObject O = prop.GetType ().GetField ("m_SerializedObject", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(prop) as SerializedObject;
Object[] TargetObjects = O.targetObjects;
string MethodName = prop.name;
char[] charsToTrim = {'_'};
MethodName = MethodName.Trim(charsToTrim);
MethodInfo TargetMethod = TargetObjects[0].GetType ().GetMethod (MethodName);
if (TargetMethod == null) {
GUI.color = Color.red;
GUI.Label(pos,"Method "+MethodName+" not found.");
GUI.color = Color.white;
return;
}
if (GUI.Button (pos, MethodName)) {
foreach (Object o in TargetObjects)
TargetMethod.Invoke(o,new object[0]);
}
}
}
#endif
[System.Serializable]
public struct InspectorButton { }
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9fbdbaf4ec4741148a8dcd3202435ddf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+385
View File
@@ -0,0 +1,385 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http.Headers;
using System.Runtime.InteropServices;
using UnityEngine;
public class LevelLoader : MonoBehaviour
{
public string LevelName = "COLD1";
private string _resoucresDir = @"C:\Users\l-pro\OneDrive\Рабочий стол\HogsOfWar\Processed";
private string PmgPath { get { return Path.Combine(_resoucresDir, LevelName + ".PMG"); } }
private string PtgPath { get { return Path.Combine(_resoucresDir, LevelName + ".PTG"); } }
private string PogPath { get { return Path.Combine(_resoucresDir, LevelName + ".POG"); } }
public static uint TimPixelToRgba32(ushort timPixel) {
uint r = (uint)(timPixel & 0x1f);
uint g = (uint)(((timPixel) >> 5) & 0x1f);
uint b = (uint)(((timPixel) >> 10) & 0x1f);
r <<= 3;
g <<= 3;
b <<= 3;
bool black = (timPixel & 0x7fff) == 0;
bool stpOn = (timPixel & 0x8000) != 0;
uint alpha = ((black && stpOn) || (!black && !stpOn)) ? (byte)0xff : (byte)0x00;
return r | (g << 8) | (b << 16) | (alpha << 24);
}
public Material Mat;
private static ImageRGBA32 TimToImage(TimFile tim) {
uint[] data = new uint[tim.ImageHeight * tim.ImageWidth];
var format = tim.header.Format;
if (format == TimFile.Format.Bpp4Bit) {
for (int i = 0; i < tim.image.data.Length; i++) {
var ip = tim.image.data[i];
var i0 = (ip >> 0) & 0x0f;
var i1 = (ip >> 4) & 0x0f;
var i2 = (ip >> 8) & 0x0f;
var i3 = (ip >> 12) & 0x0f;
data[i * 4 + 0] = TimPixelToRgba32(tim.lut.data[i0]);
data[i * 4 + 1] = TimPixelToRgba32(tim.lut.data[i1]);
data[i * 4 + 2] = TimPixelToRgba32(tim.lut.data[i2]);
data[i * 4 + 3] = TimPixelToRgba32(tim.lut.data[i3]);
}
}
ImageRGBA32 img = new ImageRGBA32((uint)tim.ImageWidth, (uint)tim.ImageHeight, data);
return img;
}
public InspectorButton Rebuild_;
class ImageRGBA32 {
public uint Width;
public uint Height;
public uint[] Data;
public ImageRGBA32(uint width, uint height) {
Width = width;
Height = height;
Data = new uint[Width * Height];
}
public ImageRGBA32(uint width, uint height, uint[] data) {
Width = width;
Height = height;
Data = data;
}
public void Fill(uint color) {
for(int i = 0; i < Data.Length; ++i) {
Data[i] = color;
}
}
public void Blit(ImageRGBA32 image, uint x, uint y) {
for(uint iy = 0; iy < image.Height; ++iy) {
uint ry = iy + y;
if(ry >= Height) {
break;
}
for (uint ix = 0; ix < image.Width; ++ix) {
uint rx = ix + x;
if (rx >= Width) {
break;
}
var color = image.Data[iy * image.Width + ix];
Data[ry * Width + rx] = color;
}
}
}
public Texture2D ToTexture2D() {
Texture2D tex = new Texture2D((int)Width, (int)Height, TextureFormat.RGBA32, false);
var handle = GCHandle.Alloc(Data, GCHandleType.Pinned);
tex.LoadRawTextureData(handle.AddrOfPinnedObject(), Data.Length * 4);
handle.Free();
tex.Apply();
return tex;
}
public ImageRGBA32 FlipX() {
ImageRGBA32 result = new ImageRGBA32(Width, Height);
for (int y = 0; y < Height; ++y) {
for (int x = 0; x < Width; ++x) {
var vy = y;
var vx = Width - x - 1;
result.Data[vy * result.Width + vx] = Data[y * Width + x];
}
}
return result;
}
public ImageRGBA32 Rotate90() {
ImageRGBA32 result = new ImageRGBA32(Height, Width);
for(int y = 0; y < Height; ++y) {
for (int x = 0; x < Width; ++x) {
var vy = x;
var vx = Height - y - 1;
result.Data[vy * result.Width + vx] = Data[y * Width + x];
}
}
return result;
}
}
public Texture2D Atlas;
public bool ApplyTransform = false;
public void BuildMapTexture(PmgFile pmg, PtgFile ptg) {
var textures = ptg.Textures.Select(v => TimToImage(v)).ToArray();
var sideBlocks = (int)Math.Sqrt(pmg.Blocks.Length);
Debug.Log("Side blocks: " + sideBlocks);
uint atlasSize = (uint)(sideBlocks * 4 * ptg.Textures[0].ImageWidth);
uint textureBlockSize = textures[0].Width;
ImageRGBA32 atlas = new ImageRGBA32(atlasSize, atlasSize);
atlas.Fill(0xffffffff);
Debug.Log("Atlas size: " + atlasSize);
for (int y = 0; y < sideBlocks; ++y) {
for (int x = 0; x < sideBlocks; ++x) {
int blockId = y * sideBlocks + x;
var block = pmg.Blocks[blockId];
for (int tileY = 0; tileY < 4; ++tileY) {
for (int tileX = 0; tileX < 4; ++tileX) {
int tileId = tileY * 4 + tileX;
var tile = block.tiles[tileId];
var texId = tile.TextureIndex;
/* if(tile.RotationFlip != PmgFile.PmgBlock.Tile.Transform.None) {
Debug.Log("Transform = " + tile.RotationFlip.ToString());
}*/
var tex = textures[texId];
if (ApplyTransform) {
if ((tile.RotationFlip & PmgFile.PmgBlock.Tile.Transform.FlipX) == PmgFile.PmgBlock.Tile.Transform.FlipX) {
tex = tex.FlipX();
}
if ((tile.RotationFlip & PmgFile.PmgBlock.Tile.Transform.Rotate90) == PmgFile.PmgBlock.Tile.Transform.Rotate90) {
tex = tex.Rotate90();
}
if ((tile.RotationFlip & PmgFile.PmgBlock.Tile.Transform.Rotate180) == PmgFile.PmgBlock.Tile.Transform.Rotate180) {
tex = tex.Rotate90();
tex = tex.Rotate90();
}
}
var ty = y * 4 + tileY;
var tx = x * 4 + tileX;
atlas.Blit(tex, (uint)(tx * textureBlockSize), (uint)(ty * textureBlockSize));
}
}
}
}
Atlas = atlas.ToTexture2D();
Atlas.filterMode = FilterMode.Point;
if (Mat != null) {
Mat.mainTexture = Atlas;
}
}
public PogFile.ObjectRecord[] Objects;
private float unitScale = 1.0f / 512.0f;
private void PlaceObjects() {
var pogBytes = File.ReadAllBytes(PogPath);
Objects = PogFile.Parse(pogBytes).Objects;
var parent = transform.GetChild(0);
var oldChildsCount = parent.childCount;
List<Transform> children = new List<Transform>();
for(int i = 0; i < oldChildsCount; ++i) {
children.Add(parent.GetChild(i));
}
foreach(var child in children) {
UnityEngine.Object.DestroyImmediate(child.gameObject);
}
foreach (var obj in Objects) {
var transform = new Vector3(-obj.XOffset, obj.YOffset, -obj.ZOffset) * unitScale;
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.parent = parent;
cube.transform.position = transform;
cube.transform.localScale = Vector3.one;
cube.transform.localRotation = Quaternion.identity;
cube.name = obj.Name;
}
}
public void Rebuild() {
PlaceObjects();
var pmgBytes = File.ReadAllBytes(PmgPath);
var ptgBytes = File.ReadAllBytes(PtgPath);
var pmg = PmgFile.Parse(pmgBytes);
var ptg = PtgFile.Parse(ptgBytes);
var pmgBlocks = pmg.Blocks;
List<Vector3> result = new List<Vector3>();
List<int> indices = new List<int>();
Debug.Log("pmgBlocks count: " + pmgBlocks.Length);
TriangleMeshConstructor mc = new TriangleMeshConstructor();
var uvs = mc.UvChannel(0);
int blockSideCount = (int)Math.Sqrt(pmgBlocks.Length);
int blockx = 0;
int blocky = 0;
List<Color> colors = new List<Color>();
short zoffset = -32001;
var cornerX = -8 * 4 * 512;
var cornerY = 8 * 4 * 512;
var cornerDX = cornerX - pmgBlocks[0].xOffset;
var cornerDY = cornerY - pmgBlocks[0].zOffset;
foreach (var block in pmgBlocks) {
float x = block.xOffset + cornerDX;
float z = block.zOffset+ cornerDY;
if(zoffset != block.zOffset) {
zoffset = block.zOffset;
Debug.Log("zoffset: " + zoffset);
}
var vertices = block.vertices;
int indexOffset = result.Count;
for (int i = 0; i < vertices.Length; ++i) {
var v = vertices[i];
int vx = (i % 5) * 512;
int vy = (i / 5) * 512;
int vXId = blockx * 4 + (i % 5);
int vYId = blocky * 4 + (i / 5);
uvs.Add(new Vector2(vXId / (float)(blockSideCount * 4), vYId / (float)(blockSideCount * 4)));
result.Add(new Vector3(-(x + vx), v.height, (-z + vy)) * unitScale);
float l = v.lighting / 255.0f;
colors.Add(new Color(l, l, l, 1.0f));
}
for (int yVertex = 0; yVertex < 4; yVertex++) {
for (int xVertex = 0; xVertex < 4; xVertex++) {
int i0 = (yVertex + 0) * 5 + (xVertex + 0);
int i2 = (yVertex + 1) * 5 + (xVertex + 0);
int i1 = (yVertex + 0) * 5 + (xVertex + 1);
int i3 = (yVertex + 0) * 5 + (xVertex + 1);
int i5 = (yVertex + 1) * 5 + (xVertex + 0);
int i4 = (yVertex + 1) * 5 + (xVertex + 1);
indices.Add(i0 + indexOffset);
indices.Add(i1 + indexOffset);
indices.Add(i2 + indexOffset);
indices.Add(i3 + indexOffset);
indices.Add(i4 + indexOffset);
indices.Add(i5 + indexOffset);
}
}
blockx++;
if(blockx == blockSideCount) {
blockx = 0;
blocky++;
}
}
mc.Vertices = result;
mc.Indices = indices.ToArray();
mc.Colors = colors;
// mc.AssingColors(Color.white);
mc.BreakVertices();
mc.RecalculateFlatNormals();
var pm = GetComponent<ProceduralMesh>();
pm.Rebuild(mc);
BuildMapTexture(pmg, ptg);
GetComponent<MeshRenderer>().sharedMaterial.mainTexture = Atlas;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 633b283922cbc694fbe8e51e90430a0b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,77 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Material 1
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: -1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: -1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fa4a620216138984aa040fbcfd5cbc66
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
+85
View File
@@ -0,0 +1,85 @@
using System.Collections.Generic;
using System;
using System.Runtime.InteropServices;
public class PmgFile {
[Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class PmgBlock {
[Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct Vertex {
public short height; // height sample
public short lighting; // <= 255
}
[Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct Tile {
[Flags]
public enum Transform : byte {
FlipX = 1,
Rotate90 = 2,
Rotate180 = 4
}
public enum Slip : byte {
Full = 0,
Bottom = 1,
Left = 2,
Top = 3,
Right = 4,
BottomRight = 5,
BottomLeft = 6,
TopLeft = 7,
TopRight = 8
}
public short Field0; // always 0 -> obsolete xOffset?
public short Field1; // always 0 -> obsolete yOffset?
public short Field2; // always 0 -> obsolete zOffset?
public char Type;
public Slip slip;
public short Field3;
public Transform RotationFlip;
public int TextureIndex;
public char Field4;
}
public short xOffset; // -16384 ~ 16384
public short yOffset; // unreliable?
public short zOffset; // -16384 ~ 16384
public short Field0;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 25)]
public Vertex[] vertices;
public int Field1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public Tile[] tiles;
}
public PmgBlock[] Blocks;
public static PmgFile Parse(byte[] data) {
PmgFile result = new PmgFile();
var blockSize = Marshal.SizeOf(typeof(PmgBlock));
int blockCount = data.Length / blockSize;
var handle = GCHandle.Alloc(data, GCHandleType.Pinned);
var ptr = handle.AddrOfPinnedObject();
List<PmgBlock> blocks = new List<PmgBlock>();
for (int Block = 0; Block < blockCount; Block++) {
blocks.Add(Marshal.PtrToStructure<PmgBlock>(ptr));
ptr += blockSize;
}
handle.Free();
result.Blocks = blocks.ToArray();
return result;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1270eb9f822e7dc41aa582824ba23d09
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+19
View File
@@ -0,0 +1,19 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PmgMesh : MonoBehaviour
{
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c21c6db49345dc741bdafe1cbf4218fe
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+90
View File
@@ -0,0 +1,90 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using UnityEngine;
public class PogFile
{
[Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct ObjectRecord {
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string Name;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] SomeData;
public short XOffset;
public short YOffset;
public short ZOffset;
public short ID;
public short XRotation; // 4096 = 360°
public short YRotation; // 4096 = 360°
public short ZRotation; // 4096 = 360°
public short TypeID; // Model type id (instancing)
public short BoundingBoxWidth;
public short BoundingBoxHeight;
public short BoundingBoxLength;
public short BoundingBoxType;
public short Short0;
public byte Byte0;
public byte Team;
public short ScriptType;
public byte ScriptGroup;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 19)]
public byte[] ScriptParamters;
public short ScriptXOffset;
public short ScriptYOffset;
public short ScriptZOffset;
public short Flag;
public short Short1;
public short Short2;
}
private ObjectRecord[] _objects;
public ObjectRecord[] Objects {
get { return _objects; }
}
public static PogFile Parse(byte[] data) {
PogFile result = new PogFile();
MemoryStream src = new MemoryStream(data);
BinaryReader r = new BinaryReader(src);
var count = r.ReadUInt16();
var itemSize = Marshal.SizeOf<ObjectRecord>();
List<ObjectRecord> records = new List<ObjectRecord>();
for (int i = 0; i < count; ++i) {
var itemData = r.ReadBytes(itemSize);
var handle = GCHandle.Alloc(itemData, GCHandleType.Pinned);
records.Add( Marshal.PtrToStructure<ObjectRecord>(handle.AddrOfPinnedObject()));
}
result._objects = records.ToArray();
return result;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f2a0498aa7d4ac3488e46b47a9ed49b6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 66dc951a7eb347f43bae6565765c1d5e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1bbb36f00b3c97149b3ac8cc4a00e78e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,117 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineChar {
public float Width;
public List<Vector2> Vertices = new List<Vector2>();
};
public static class LineFont
{
public static readonly List<LineChar> Chars;
static LineFont()
{
Chars = new List<LineChar>(
new LineChar[]
{
/* */ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{})},
/*!*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,21),new Vector2(5,7),new Vector2(5,2),new Vector2(4,1),new Vector2(4,1),new Vector2(5,0),new Vector2(5,0),new Vector2(6,1),new Vector2(6,1),new Vector2(5,2)})},
/*"*/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,14),new Vector2(12,21),new Vector2(12,14)})},
/*#*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(11,25),new Vector2(4,-7),new Vector2(17,25),new Vector2(10,-7),new Vector2(4,12),new Vector2(18,12),new Vector2(3,6),new Vector2(17,6)})},
/*$*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(8,25),new Vector2(8,-4),new Vector2(12,25),new Vector2(12,-4),new Vector2(17,18),new Vector2(15,20),new Vector2(15,20),new Vector2(12,21),new Vector2(12,21),new Vector2(8,21),new Vector2(8,21),new Vector2(5,20),new Vector2(5,20),new Vector2(3,18),new Vector2(3,18),new Vector2(3,16),new Vector2(3,16),new Vector2(4,14),new Vector2(4,14),new Vector2(5,13),new Vector2(5,13),new Vector2(7,12),new Vector2(7,12),new Vector2(13,10),new Vector2(13,10),new Vector2(15,9),new Vector2(15,9),new Vector2(16,8),new Vector2(16,8),new Vector2(17,6),new Vector2(17,6),new Vector2(17,3),new Vector2(17,3),new Vector2(15,1),new Vector2(15,1),new Vector2(12,0),new Vector2(12,0),new Vector2(8,0),new Vector2(8,0),new Vector2(5,1),new Vector2(5,1),new Vector2(3,3)})},
/*%*/ new LineChar{Width = 24, Vertices = new List<Vector2>(new Vector2[]{new Vector2(21,21),new Vector2(3,0),new Vector2(8,21),new Vector2(10,19),new Vector2(10,19),new Vector2(10,17),new Vector2(10,17),new Vector2(9,15),new Vector2(9,15),new Vector2(7,14),new Vector2(7,14),new Vector2(5,14),new Vector2(5,14),new Vector2(3,16),new Vector2(3,16),new Vector2(3,18),new Vector2(3,18),new Vector2(4,20),new Vector2(4,20),new Vector2(6,21),new Vector2(6,21),new Vector2(8,21),new Vector2(8,21),new Vector2(10,20),new Vector2(10,20),new Vector2(13,19),new Vector2(13,19),new Vector2(16,19),new Vector2(16,19),new Vector2(19,20),new Vector2(19,20),new Vector2(21,21),new Vector2(17,7),new Vector2(15,6),new Vector2(15,6),new Vector2(14,4),new Vector2(14,4),new Vector2(14,2),new Vector2(14,2),new Vector2(16,0),new Vector2(16,0),new Vector2(18,0),new Vector2(18,0),new Vector2(20,1),new Vector2(20,1),new Vector2(21,3),new Vector2(21,3),new Vector2(21,5),new Vector2(21,5),new Vector2(19,7),new Vector2(19,7),new Vector2(17,7)})},
/*&*/ new LineChar{Width = 26, Vertices = new List<Vector2>(new Vector2[]{new Vector2(23,12),new Vector2(23,13),new Vector2(23,13),new Vector2(22,14),new Vector2(22,14),new Vector2(21,14),new Vector2(21,14),new Vector2(20,13),new Vector2(20,13),new Vector2(19,11),new Vector2(19,11),new Vector2(17,6),new Vector2(17,6),new Vector2(15,3),new Vector2(15,3),new Vector2(13,1),new Vector2(13,1),new Vector2(11,0),new Vector2(11,0),new Vector2(7,0),new Vector2(7,0),new Vector2(5,1),new Vector2(5,1),new Vector2(4,2),new Vector2(4,2),new Vector2(3,4),new Vector2(3,4),new Vector2(3,6),new Vector2(3,6),new Vector2(4,8),new Vector2(4,8),new Vector2(5,9),new Vector2(5,9),new Vector2(12,13),new Vector2(12,13),new Vector2(13,14),new Vector2(13,14),new Vector2(14,16),new Vector2(14,16),new Vector2(14,18),new Vector2(14,18),new Vector2(13,20),new Vector2(13,20),new Vector2(11,21),new Vector2(11,21),new Vector2(9,20),new Vector2(9,20),new Vector2(8,18),new Vector2(8,18),new Vector2(8,16),new Vector2(8,16),new Vector2(9,13),new Vector2(9,13),new Vector2(11,10),new Vector2(11,10),new Vector2(16,3),new Vector2(16,3),new Vector2(18,1),new Vector2(18,1),new Vector2(20,0),new Vector2(20,0),new Vector2(22,0),new Vector2(22,0),new Vector2(23,1),new Vector2(23,1),new Vector2(23,2)})},
/*'*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,19),new Vector2(4,20),new Vector2(4,20),new Vector2(5,21),new Vector2(5,21),new Vector2(6,20),new Vector2(6,20),new Vector2(6,18),new Vector2(6,18),new Vector2(5,16),new Vector2(5,16),new Vector2(4,15)})},
/*(*/ new LineChar{Width = 14, Vertices = new List<Vector2>(new Vector2[]{new Vector2(11,25),new Vector2(9,23),new Vector2(9,23),new Vector2(7,20),new Vector2(7,20),new Vector2(5,16),new Vector2(5,16),new Vector2(4,11),new Vector2(4,11),new Vector2(4,7),new Vector2(4,7),new Vector2(5,2),new Vector2(5,2),new Vector2(7,-2),new Vector2(7,-2),new Vector2(9,-5),new Vector2(9,-5),new Vector2(11,-7)})},
/*)*/ new LineChar{Width = 14, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,25),new Vector2(5,23),new Vector2(5,23),new Vector2(7,20),new Vector2(7,20),new Vector2(9,16),new Vector2(9,16),new Vector2(10,11),new Vector2(10,11),new Vector2(10,7),new Vector2(10,7),new Vector2(9,2),new Vector2(9,2),new Vector2(7,-2),new Vector2(7,-2),new Vector2(5,-5),new Vector2(5,-5),new Vector2(3,-7)})},
/***/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(8,21),new Vector2(8,9),new Vector2(3,18),new Vector2(13,12),new Vector2(13,18),new Vector2(3,12)})},
/*+*/ new LineChar{Width = 26, Vertices = new List<Vector2>(new Vector2[]{new Vector2(13,18),new Vector2(13,0),new Vector2(4,9),new Vector2(22,9)})},
/*,*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(6,1),new Vector2(5,0),new Vector2(5,0),new Vector2(4,1),new Vector2(4,1),new Vector2(5,2),new Vector2(5,2),new Vector2(6,1),new Vector2(6,1),new Vector2(6,-1),new Vector2(6,-1),new Vector2(5,-3),new Vector2(5,-3),new Vector2(4,-4)})},
/*-*/ new LineChar{Width = 26, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,9),new Vector2(22,9)})},
/*.*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,2),new Vector2(4,1),new Vector2(4,1),new Vector2(5,0),new Vector2(5,0),new Vector2(6,1),new Vector2(6,1),new Vector2(5,2)})},
/*/*/ new LineChar{Width = 22, Vertices = new List<Vector2>(new Vector2[]{new Vector2(20,25),new Vector2(2,-7)})},
/*0*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(9,21),new Vector2(6,20),new Vector2(6,20),new Vector2(4,17),new Vector2(4,17),new Vector2(3,12),new Vector2(3,12),new Vector2(3,9),new Vector2(3,9),new Vector2(4,4),new Vector2(4,4),new Vector2(6,1),new Vector2(6,1),new Vector2(9,0),new Vector2(9,0),new Vector2(11,0),new Vector2(11,0),new Vector2(14,1),new Vector2(14,1),new Vector2(16,4),new Vector2(16,4),new Vector2(17,9),new Vector2(17,9),new Vector2(17,12),new Vector2(17,12),new Vector2(16,17),new Vector2(16,17),new Vector2(14,20),new Vector2(14,20),new Vector2(11,21),new Vector2(11,21),new Vector2(9,21)})},
/*1*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(6,17),new Vector2(8,18),new Vector2(8,18),new Vector2(11,21),new Vector2(11,21),new Vector2(11,0)})},
/*2*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,16),new Vector2(4,17),new Vector2(4,17),new Vector2(5,19),new Vector2(5,19),new Vector2(6,20),new Vector2(6,20),new Vector2(8,21),new Vector2(8,21),new Vector2(12,21),new Vector2(12,21),new Vector2(14,20),new Vector2(14,20),new Vector2(15,19),new Vector2(15,19),new Vector2(16,17),new Vector2(16,17),new Vector2(16,15),new Vector2(16,15),new Vector2(15,13),new Vector2(15,13),new Vector2(13,10),new Vector2(13,10),new Vector2(3,0),new Vector2(3,0),new Vector2(17,0)})},
/*3*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,21),new Vector2(16,21),new Vector2(16,21),new Vector2(10,13),new Vector2(10,13),new Vector2(13,13),new Vector2(13,13),new Vector2(15,12),new Vector2(15,12),new Vector2(16,11),new Vector2(16,11),new Vector2(17,8),new Vector2(17,8),new Vector2(17,6),new Vector2(17,6),new Vector2(16,3),new Vector2(16,3),new Vector2(14,1),new Vector2(14,1),new Vector2(11,0),new Vector2(11,0),new Vector2(8,0),new Vector2(8,0),new Vector2(5,1),new Vector2(5,1),new Vector2(4,2),new Vector2(4,2),new Vector2(3,4)})},
/*4*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(13,21),new Vector2(3,7),new Vector2(3,7),new Vector2(18,7),new Vector2(13,21),new Vector2(13,0)})},
/*5*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(15,21),new Vector2(5,21),new Vector2(5,21),new Vector2(4,12),new Vector2(4,12),new Vector2(5,13),new Vector2(5,13),new Vector2(8,14),new Vector2(8,14),new Vector2(11,14),new Vector2(11,14),new Vector2(14,13),new Vector2(14,13),new Vector2(16,11),new Vector2(16,11),new Vector2(17,8),new Vector2(17,8),new Vector2(17,6),new Vector2(17,6),new Vector2(16,3),new Vector2(16,3),new Vector2(14,1),new Vector2(14,1),new Vector2(11,0),new Vector2(11,0),new Vector2(8,0),new Vector2(8,0),new Vector2(5,1),new Vector2(5,1),new Vector2(4,2),new Vector2(4,2),new Vector2(3,4)})},
/*6*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(16,18),new Vector2(15,20),new Vector2(15,20),new Vector2(12,21),new Vector2(12,21),new Vector2(10,21),new Vector2(10,21),new Vector2(7,20),new Vector2(7,20),new Vector2(5,17),new Vector2(5,17),new Vector2(4,12),new Vector2(4,12),new Vector2(4,7),new Vector2(4,7),new Vector2(5,3),new Vector2(5,3),new Vector2(7,1),new Vector2(7,1),new Vector2(10,0),new Vector2(10,0),new Vector2(11,0),new Vector2(11,0),new Vector2(14,1),new Vector2(14,1),new Vector2(16,3),new Vector2(16,3),new Vector2(17,6),new Vector2(17,6),new Vector2(17,7),new Vector2(17,7),new Vector2(16,10),new Vector2(16,10),new Vector2(14,12),new Vector2(14,12),new Vector2(11,13),new Vector2(11,13),new Vector2(10,13),new Vector2(10,13),new Vector2(7,12),new Vector2(7,12),new Vector2(5,10),new Vector2(5,10),new Vector2(4,7)})},
/*7*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(17,21),new Vector2(7,0),new Vector2(3,21),new Vector2(17,21)})},
/*8*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(8,21),new Vector2(5,20),new Vector2(5,20),new Vector2(4,18),new Vector2(4,18),new Vector2(4,16),new Vector2(4,16),new Vector2(5,14),new Vector2(5,14),new Vector2(7,13),new Vector2(7,13),new Vector2(11,12),new Vector2(11,12),new Vector2(14,11),new Vector2(14,11),new Vector2(16,9),new Vector2(16,9),new Vector2(17,7),new Vector2(17,7),new Vector2(17,4),new Vector2(17,4),new Vector2(16,2),new Vector2(16,2),new Vector2(15,1),new Vector2(15,1),new Vector2(12,0),new Vector2(12,0),new Vector2(8,0),new Vector2(8,0),new Vector2(5,1),new Vector2(5,1),new Vector2(4,2),new Vector2(4,2),new Vector2(3,4),new Vector2(3,4),new Vector2(3,7),new Vector2(3,7),new Vector2(4,9),new Vector2(4,9),new Vector2(6,11),new Vector2(6,11),new Vector2(9,12),new Vector2(9,12),new Vector2(13,13),new Vector2(13,13),new Vector2(15,14),new Vector2(15,14),new Vector2(16,16),new Vector2(16,16),new Vector2(16,18),new Vector2(16,18),new Vector2(15,20),new Vector2(15,20),new Vector2(12,21),new Vector2(12,21),new Vector2(8,21)})},
/*9*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(16,14),new Vector2(15,11),new Vector2(15,11),new Vector2(13,9),new Vector2(13,9),new Vector2(10,8),new Vector2(10,8),new Vector2(9,8),new Vector2(9,8),new Vector2(6,9),new Vector2(6,9),new Vector2(4,11),new Vector2(4,11),new Vector2(3,14),new Vector2(3,14),new Vector2(3,15),new Vector2(3,15),new Vector2(4,18),new Vector2(4,18),new Vector2(6,20),new Vector2(6,20),new Vector2(9,21),new Vector2(9,21),new Vector2(10,21),new Vector2(10,21),new Vector2(13,20),new Vector2(13,20),new Vector2(15,18),new Vector2(15,18),new Vector2(16,14),new Vector2(16,14),new Vector2(16,9),new Vector2(16,9),new Vector2(15,4),new Vector2(15,4),new Vector2(13,1),new Vector2(13,1),new Vector2(10,0),new Vector2(10,0),new Vector2(8,0),new Vector2(8,0),new Vector2(5,1),new Vector2(5,1),new Vector2(4,3)})},
/*:*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,14),new Vector2(4,13),new Vector2(4,13),new Vector2(5,12),new Vector2(5,12),new Vector2(6,13),new Vector2(6,13),new Vector2(5,14),new Vector2(5,2),new Vector2(4,1),new Vector2(4,1),new Vector2(5,0),new Vector2(5,0),new Vector2(6,1),new Vector2(6,1),new Vector2(5,2)})},
/*;*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,14),new Vector2(4,13),new Vector2(4,13),new Vector2(5,12),new Vector2(5,12),new Vector2(6,13),new Vector2(6,13),new Vector2(5,14),new Vector2(6,1),new Vector2(5,0),new Vector2(5,0),new Vector2(4,1),new Vector2(4,1),new Vector2(5,2),new Vector2(5,2),new Vector2(6,1),new Vector2(6,1),new Vector2(6,-1),new Vector2(6,-1),new Vector2(5,-3),new Vector2(5,-3),new Vector2(4,-4)})},
/*<*/ new LineChar{Width = 24, Vertices = new List<Vector2>(new Vector2[]{new Vector2(20,18),new Vector2(4,9),new Vector2(4,9),new Vector2(20,0)})},
/*=*/ new LineChar{Width = 26, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,12),new Vector2(22,12),new Vector2(4,6),new Vector2(22,6)})},
/*>*/ new LineChar{Width = 24, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,18),new Vector2(20,9),new Vector2(20,9),new Vector2(4,0)})},
/*?*/ new LineChar{Width = 18, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,16),new Vector2(3,17),new Vector2(3,17),new Vector2(4,19),new Vector2(4,19),new Vector2(5,20),new Vector2(5,20),new Vector2(7,21),new Vector2(7,21),new Vector2(11,21),new Vector2(11,21),new Vector2(13,20),new Vector2(13,20),new Vector2(14,19),new Vector2(14,19),new Vector2(15,17),new Vector2(15,17),new Vector2(15,15),new Vector2(15,15),new Vector2(14,13),new Vector2(14,13),new Vector2(13,12),new Vector2(13,12),new Vector2(9,10),new Vector2(9,10),new Vector2(9,7),new Vector2(9,2),new Vector2(8,1),new Vector2(8,1),new Vector2(9,0),new Vector2(9,0),new Vector2(10,1),new Vector2(10,1),new Vector2(9,2)})},
/*@*/ new LineChar{Width = 27, Vertices = new List<Vector2>(new Vector2[]{new Vector2(18,13),new Vector2(17,15),new Vector2(17,15),new Vector2(15,16),new Vector2(15,16),new Vector2(12,16),new Vector2(12,16),new Vector2(10,15),new Vector2(10,15),new Vector2(9,14),new Vector2(9,14),new Vector2(8,11),new Vector2(8,11),new Vector2(8,8),new Vector2(8,8),new Vector2(9,6),new Vector2(9,6),new Vector2(11,5),new Vector2(11,5),new Vector2(14,5),new Vector2(14,5),new Vector2(16,6),new Vector2(16,6),new Vector2(17,8),new Vector2(12,16),new Vector2(10,14),new Vector2(10,14),new Vector2(9,11),new Vector2(9,11),new Vector2(9,8),new Vector2(9,8),new Vector2(10,6),new Vector2(10,6),new Vector2(11,5),new Vector2(18,16),new Vector2(17,8),new Vector2(17,8),new Vector2(17,6),new Vector2(17,6),new Vector2(19,5),new Vector2(19,5),new Vector2(21,5),new Vector2(21,5),new Vector2(23,7),new Vector2(23,7),new Vector2(24,10),new Vector2(24,10),new Vector2(24,12),new Vector2(24,12),new Vector2(23,15),new Vector2(23,15),new Vector2(22,17),new Vector2(22,17),new Vector2(20,19),new Vector2(20,19),new Vector2(18,20),new Vector2(18,20),new Vector2(15,21),new Vector2(15,21),new Vector2(12,21),new Vector2(12,21),new Vector2(9,20),new Vector2(9,20),new Vector2(7,19),new Vector2(7,19),new Vector2(5,17),new Vector2(5,17),new Vector2(4,15),new Vector2(4,15),new Vector2(3,12),new Vector2(3,12),new Vector2(3,9),new Vector2(3,9),new Vector2(4,6),new Vector2(4,6),new Vector2(5,4),new Vector2(5,4),new Vector2(7,2),new Vector2(7,2),new Vector2(9,1),new Vector2(9,1),new Vector2(12,0),new Vector2(12,0),new Vector2(15,0),new Vector2(15,0),new Vector2(18,1),new Vector2(18,1),new Vector2(20,2),new Vector2(20,2),new Vector2(21,3),new Vector2(19,16),new Vector2(18,8),new Vector2(18,8),new Vector2(18,6),new Vector2(18,6),new Vector2(19,5)})},
/*A*/ new LineChar{Width = 18, Vertices = new List<Vector2>(new Vector2[]{new Vector2(9,21),new Vector2(1,0),new Vector2(9,21),new Vector2(17,0),new Vector2(4,7),new Vector2(14,7)})},
/*B*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(13,21),new Vector2(13,21),new Vector2(16,20),new Vector2(16,20),new Vector2(17,19),new Vector2(17,19),new Vector2(18,17),new Vector2(18,17),new Vector2(18,15),new Vector2(18,15),new Vector2(17,13),new Vector2(17,13),new Vector2(16,12),new Vector2(16,12),new Vector2(13,11),new Vector2(4,11),new Vector2(13,11),new Vector2(13,11),new Vector2(16,10),new Vector2(16,10),new Vector2(17,9),new Vector2(17,9),new Vector2(18,7),new Vector2(18,7),new Vector2(18,4),new Vector2(18,4),new Vector2(17,2),new Vector2(17,2),new Vector2(16,1),new Vector2(16,1),new Vector2(13,0),new Vector2(13,0),new Vector2(4,0)})},
/*C*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(18,16),new Vector2(17,18),new Vector2(17,18),new Vector2(15,20),new Vector2(15,20),new Vector2(13,21),new Vector2(13,21),new Vector2(9,21),new Vector2(9,21),new Vector2(7,20),new Vector2(7,20),new Vector2(5,18),new Vector2(5,18),new Vector2(4,16),new Vector2(4,16),new Vector2(3,13),new Vector2(3,13),new Vector2(3,8),new Vector2(3,8),new Vector2(4,5),new Vector2(4,5),new Vector2(5,3),new Vector2(5,3),new Vector2(7,1),new Vector2(7,1),new Vector2(9,0),new Vector2(9,0),new Vector2(13,0),new Vector2(13,0),new Vector2(15,1),new Vector2(15,1),new Vector2(17,3),new Vector2(17,3),new Vector2(18,5)})},
/*D*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(11,21),new Vector2(11,21),new Vector2(14,20),new Vector2(14,20),new Vector2(16,18),new Vector2(16,18),new Vector2(17,16),new Vector2(17,16),new Vector2(18,13),new Vector2(18,13),new Vector2(18,8),new Vector2(18,8),new Vector2(17,5),new Vector2(17,5),new Vector2(16,3),new Vector2(16,3),new Vector2(14,1),new Vector2(14,1),new Vector2(11,0),new Vector2(11,0),new Vector2(4,0)})},
/*E*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(17,21),new Vector2(4,11),new Vector2(12,11),new Vector2(4,0),new Vector2(17,0)})},
/*F*/ new LineChar{Width = 18, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(17,21),new Vector2(4,11),new Vector2(12,11)})},
/*G*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(18,16),new Vector2(17,18),new Vector2(17,18),new Vector2(15,20),new Vector2(15,20),new Vector2(13,21),new Vector2(13,21),new Vector2(9,21),new Vector2(9,21),new Vector2(7,20),new Vector2(7,20),new Vector2(5,18),new Vector2(5,18),new Vector2(4,16),new Vector2(4,16),new Vector2(3,13),new Vector2(3,13),new Vector2(3,8),new Vector2(3,8),new Vector2(4,5),new Vector2(4,5),new Vector2(5,3),new Vector2(5,3),new Vector2(7,1),new Vector2(7,1),new Vector2(9,0),new Vector2(9,0),new Vector2(13,0),new Vector2(13,0),new Vector2(15,1),new Vector2(15,1),new Vector2(17,3),new Vector2(17,3),new Vector2(18,5),new Vector2(18,5),new Vector2(18,8),new Vector2(13,8),new Vector2(18,8)})},
/*H*/ new LineChar{Width = 22, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(18,21),new Vector2(18,0),new Vector2(4,11),new Vector2(18,11)})},
/*I*/ new LineChar{Width = 8, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0)})},
/*J*/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(12,21),new Vector2(12,5),new Vector2(12,5),new Vector2(11,2),new Vector2(11,2),new Vector2(10,1),new Vector2(10,1),new Vector2(8,0),new Vector2(8,0),new Vector2(6,0),new Vector2(6,0),new Vector2(4,1),new Vector2(4,1),new Vector2(3,2),new Vector2(3,2),new Vector2(2,5),new Vector2(2,5),new Vector2(2,7)})},
/*K*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(18,21),new Vector2(4,7),new Vector2(9,12),new Vector2(18,0)})},
/*L*/ new LineChar{Width = 17, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,0),new Vector2(16,0)})},
/*M*/ new LineChar{Width = 24, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(12,0),new Vector2(20,21),new Vector2(12,0),new Vector2(20,21),new Vector2(20,0)})},
/*N*/ new LineChar{Width = 22, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(18,0),new Vector2(18,21),new Vector2(18,0)})},
/*O*/ new LineChar{Width = 22, Vertices = new List<Vector2>(new Vector2[]{new Vector2(9,21),new Vector2(7,20),new Vector2(7,20),new Vector2(5,18),new Vector2(5,18),new Vector2(4,16),new Vector2(4,16),new Vector2(3,13),new Vector2(3,13),new Vector2(3,8),new Vector2(3,8),new Vector2(4,5),new Vector2(4,5),new Vector2(5,3),new Vector2(5,3),new Vector2(7,1),new Vector2(7,1),new Vector2(9,0),new Vector2(9,0),new Vector2(13,0),new Vector2(13,0),new Vector2(15,1),new Vector2(15,1),new Vector2(17,3),new Vector2(17,3),new Vector2(18,5),new Vector2(18,5),new Vector2(19,8),new Vector2(19,8),new Vector2(19,13),new Vector2(19,13),new Vector2(18,16),new Vector2(18,16),new Vector2(17,18),new Vector2(17,18),new Vector2(15,20),new Vector2(15,20),new Vector2(13,21),new Vector2(13,21),new Vector2(9,21)})},
/*P*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(13,21),new Vector2(13,21),new Vector2(16,20),new Vector2(16,20),new Vector2(17,19),new Vector2(17,19),new Vector2(18,17),new Vector2(18,17),new Vector2(18,14),new Vector2(18,14),new Vector2(17,12),new Vector2(17,12),new Vector2(16,11),new Vector2(16,11),new Vector2(13,10),new Vector2(13,10),new Vector2(4,10)})},
/*Q*/ new LineChar{Width = 22, Vertices = new List<Vector2>(new Vector2[]{new Vector2(9,21),new Vector2(7,20),new Vector2(7,20),new Vector2(5,18),new Vector2(5,18),new Vector2(4,16),new Vector2(4,16),new Vector2(3,13),new Vector2(3,13),new Vector2(3,8),new Vector2(3,8),new Vector2(4,5),new Vector2(4,5),new Vector2(5,3),new Vector2(5,3),new Vector2(7,1),new Vector2(7,1),new Vector2(9,0),new Vector2(9,0),new Vector2(13,0),new Vector2(13,0),new Vector2(15,1),new Vector2(15,1),new Vector2(17,3),new Vector2(17,3),new Vector2(18,5),new Vector2(18,5),new Vector2(19,8),new Vector2(19,8),new Vector2(19,13),new Vector2(19,13),new Vector2(18,16),new Vector2(18,16),new Vector2(17,18),new Vector2(17,18),new Vector2(15,20),new Vector2(15,20),new Vector2(13,21),new Vector2(13,21),new Vector2(9,21),new Vector2(12,4),new Vector2(18,-2)})},
/*R*/ new LineChar{Width = 21, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,21),new Vector2(13,21),new Vector2(13,21),new Vector2(16,20),new Vector2(16,20),new Vector2(17,19),new Vector2(17,19),new Vector2(18,17),new Vector2(18,17),new Vector2(18,15),new Vector2(18,15),new Vector2(17,13),new Vector2(17,13),new Vector2(16,12),new Vector2(16,12),new Vector2(13,11),new Vector2(13,11),new Vector2(4,11),new Vector2(11,11),new Vector2(18,0)})},
/*S*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(17,18),new Vector2(15,20),new Vector2(15,20),new Vector2(12,21),new Vector2(12,21),new Vector2(8,21),new Vector2(8,21),new Vector2(5,20),new Vector2(5,20),new Vector2(3,18),new Vector2(3,18),new Vector2(3,16),new Vector2(3,16),new Vector2(4,14),new Vector2(4,14),new Vector2(5,13),new Vector2(5,13),new Vector2(7,12),new Vector2(7,12),new Vector2(13,10),new Vector2(13,10),new Vector2(15,9),new Vector2(15,9),new Vector2(16,8),new Vector2(16,8),new Vector2(17,6),new Vector2(17,6),new Vector2(17,3),new Vector2(17,3),new Vector2(15,1),new Vector2(15,1),new Vector2(12,0),new Vector2(12,0),new Vector2(8,0),new Vector2(8,0),new Vector2(5,1),new Vector2(5,1),new Vector2(3,3)})},
/*T*/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(8,21),new Vector2(8,0),new Vector2(1,21),new Vector2(15,21)})},
/*U*/ new LineChar{Width = 22, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,6),new Vector2(4,6),new Vector2(5,3),new Vector2(5,3),new Vector2(7,1),new Vector2(7,1),new Vector2(10,0),new Vector2(10,0),new Vector2(12,0),new Vector2(12,0),new Vector2(15,1),new Vector2(15,1),new Vector2(17,3),new Vector2(17,3),new Vector2(18,6),new Vector2(18,6),new Vector2(18,21)})},
/*V*/ new LineChar{Width = 18, Vertices = new List<Vector2>(new Vector2[]{new Vector2(1,21),new Vector2(9,0),new Vector2(17,21),new Vector2(9,0)})},
/*W*/ new LineChar{Width = 24, Vertices = new List<Vector2>(new Vector2[]{new Vector2(2,21),new Vector2(7,0),new Vector2(12,21),new Vector2(7,0),new Vector2(12,21),new Vector2(17,0),new Vector2(22,21),new Vector2(17,0)})},
/*X*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,21),new Vector2(17,0),new Vector2(17,21),new Vector2(3,0)})},
/*Y*/ new LineChar{Width = 18, Vertices = new List<Vector2>(new Vector2[]{new Vector2(1,21),new Vector2(9,11),new Vector2(9,11),new Vector2(9,0),new Vector2(17,21),new Vector2(9,11)})},
/*Z*/ new LineChar{Width = 20, Vertices = new List<Vector2>(new Vector2[]{new Vector2(17,21),new Vector2(3,0),new Vector2(3,21),new Vector2(17,21),new Vector2(3,0),new Vector2(17,0)})},
/*[*/ new LineChar{Width = 14, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,25),new Vector2(4,-7),new Vector2(4,25),new Vector2(11,25),new Vector2(4,-7),new Vector2(11,-7)})},
/*\*/ new LineChar{Width = 14, Vertices = new List<Vector2>(new Vector2[]{new Vector2(0,21),new Vector2(14,-3)})},
/*]*/ new LineChar{Width = 14, Vertices = new List<Vector2>(new Vector2[]{new Vector2(9,25),new Vector2(9,-7),new Vector2(3,25),new Vector2(10,25),new Vector2(3,-7),new Vector2(10,-7)})},
/*^*/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(6,15),new Vector2(8,18),new Vector2(8,18),new Vector2(10,15),new Vector2(3,12),new Vector2(8,17),new Vector2(8,17),new Vector2(13,12),new Vector2(8,17),new Vector2(8,0)})},
/*_*/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(0,-2),new Vector2(16,-2)})},
/*`*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(6,21),new Vector2(5,20),new Vector2(5,20),new Vector2(4,18),new Vector2(4,18),new Vector2(4,16),new Vector2(4,16),new Vector2(5,15),new Vector2(5,15),new Vector2(6,16),new Vector2(6,16),new Vector2(5,17)})},
/*a*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(15,14),new Vector2(15,0),new Vector2(15,11),new Vector2(13,13),new Vector2(13,13),new Vector2(11,14),new Vector2(11,14),new Vector2(8,14),new Vector2(8,14),new Vector2(6,13),new Vector2(6,13),new Vector2(4,11),new Vector2(4,11),new Vector2(3,8),new Vector2(3,8),new Vector2(3,6),new Vector2(3,6),new Vector2(4,3),new Vector2(4,3),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(11,0),new Vector2(11,0),new Vector2(13,1),new Vector2(13,1),new Vector2(15,3)})},
/*b*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,11),new Vector2(6,13),new Vector2(6,13),new Vector2(8,14),new Vector2(8,14),new Vector2(11,14),new Vector2(11,14),new Vector2(13,13),new Vector2(13,13),new Vector2(15,11),new Vector2(15,11),new Vector2(16,8),new Vector2(16,8),new Vector2(16,6),new Vector2(16,6),new Vector2(15,3),new Vector2(15,3),new Vector2(13,1),new Vector2(13,1),new Vector2(11,0),new Vector2(11,0),new Vector2(8,0),new Vector2(8,0),new Vector2(6,1),new Vector2(6,1),new Vector2(4,3)})},
/*c*/ new LineChar{Width = 18, Vertices = new List<Vector2>(new Vector2[]{new Vector2(15,11),new Vector2(13,13),new Vector2(13,13),new Vector2(11,14),new Vector2(11,14),new Vector2(8,14),new Vector2(8,14),new Vector2(6,13),new Vector2(6,13),new Vector2(4,11),new Vector2(4,11),new Vector2(3,8),new Vector2(3,8),new Vector2(3,6),new Vector2(3,6),new Vector2(4,3),new Vector2(4,3),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(11,0),new Vector2(11,0),new Vector2(13,1),new Vector2(13,1),new Vector2(15,3)})},
/*d*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(15,21),new Vector2(15,0),new Vector2(15,11),new Vector2(13,13),new Vector2(13,13),new Vector2(11,14),new Vector2(11,14),new Vector2(8,14),new Vector2(8,14),new Vector2(6,13),new Vector2(6,13),new Vector2(4,11),new Vector2(4,11),new Vector2(3,8),new Vector2(3,8),new Vector2(3,6),new Vector2(3,6),new Vector2(4,3),new Vector2(4,3),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(11,0),new Vector2(11,0),new Vector2(13,1),new Vector2(13,1),new Vector2(15,3)})},
/*e*/ new LineChar{Width = 18, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,8),new Vector2(15,8),new Vector2(15,8),new Vector2(15,10),new Vector2(15,10),new Vector2(14,12),new Vector2(14,12),new Vector2(13,13),new Vector2(13,13),new Vector2(11,14),new Vector2(11,14),new Vector2(8,14),new Vector2(8,14),new Vector2(6,13),new Vector2(6,13),new Vector2(4,11),new Vector2(4,11),new Vector2(3,8),new Vector2(3,8),new Vector2(3,6),new Vector2(3,6),new Vector2(4,3),new Vector2(4,3),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(11,0),new Vector2(11,0),new Vector2(13,1),new Vector2(13,1),new Vector2(15,3)})},
/*f*/ new LineChar{Width = 12, Vertices = new List<Vector2>(new Vector2[]{new Vector2(10,21),new Vector2(8,21),new Vector2(8,21),new Vector2(6,20),new Vector2(6,20),new Vector2(5,17),new Vector2(5,17),new Vector2(5,0),new Vector2(2,14),new Vector2(9,14)})},
/*g*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(15,14),new Vector2(15,-2),new Vector2(15,-2),new Vector2(14,-5),new Vector2(14,-5),new Vector2(13,-6),new Vector2(13,-6),new Vector2(11,-7),new Vector2(11,-7),new Vector2(8,-7),new Vector2(8,-7),new Vector2(6,-6),new Vector2(15,11),new Vector2(13,13),new Vector2(13,13),new Vector2(11,14),new Vector2(11,14),new Vector2(8,14),new Vector2(8,14),new Vector2(6,13),new Vector2(6,13),new Vector2(4,11),new Vector2(4,11),new Vector2(3,8),new Vector2(3,8),new Vector2(3,6),new Vector2(3,6),new Vector2(4,3),new Vector2(4,3),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(11,0),new Vector2(11,0),new Vector2(13,1),new Vector2(13,1),new Vector2(15,3)})},
/*h*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(4,10),new Vector2(7,13),new Vector2(7,13),new Vector2(9,14),new Vector2(9,14),new Vector2(12,14),new Vector2(12,14),new Vector2(14,13),new Vector2(14,13),new Vector2(15,10),new Vector2(15,10),new Vector2(15,0)})},
/*i*/ new LineChar{Width = 8, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,21),new Vector2(4,20),new Vector2(4,20),new Vector2(5,21),new Vector2(5,21),new Vector2(4,22),new Vector2(4,22),new Vector2(3,21),new Vector2(4,14),new Vector2(4,0)})},
/*j*/ new LineChar{Width = 10, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,21),new Vector2(6,20),new Vector2(6,20),new Vector2(7,21),new Vector2(7,21),new Vector2(6,22),new Vector2(6,22),new Vector2(5,21),new Vector2(6,14),new Vector2(6,-3),new Vector2(6,-3),new Vector2(5,-6),new Vector2(5,-6),new Vector2(3,-7),new Vector2(3,-7),new Vector2(1,-7)})},
/*k*/ new LineChar{Width = 17, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0),new Vector2(14,14),new Vector2(4,4),new Vector2(8,8),new Vector2(15,0)})},
/*l*/ new LineChar{Width = 8, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,21),new Vector2(4,0)})},
/*m*/ new LineChar{Width = 30, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,14),new Vector2(4,0),new Vector2(4,10),new Vector2(7,13),new Vector2(7,13),new Vector2(9,14),new Vector2(9,14),new Vector2(12,14),new Vector2(12,14),new Vector2(14,13),new Vector2(14,13),new Vector2(15,10),new Vector2(15,10),new Vector2(15,0),new Vector2(15,10),new Vector2(18,13),new Vector2(18,13),new Vector2(20,14),new Vector2(20,14),new Vector2(23,14),new Vector2(23,14),new Vector2(25,13),new Vector2(25,13),new Vector2(26,10),new Vector2(26,10),new Vector2(26,0)})},
/*n*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,14),new Vector2(4,0),new Vector2(4,10),new Vector2(7,13),new Vector2(7,13),new Vector2(9,14),new Vector2(9,14),new Vector2(12,14),new Vector2(12,14),new Vector2(14,13),new Vector2(14,13),new Vector2(15,10),new Vector2(15,10),new Vector2(15,0)})},
/*o*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(8,14),new Vector2(6,13),new Vector2(6,13),new Vector2(4,11),new Vector2(4,11),new Vector2(3,8),new Vector2(3,8),new Vector2(3,6),new Vector2(3,6),new Vector2(4,3),new Vector2(4,3),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(11,0),new Vector2(11,0),new Vector2(13,1),new Vector2(13,1),new Vector2(15,3),new Vector2(15,3),new Vector2(16,6),new Vector2(16,6),new Vector2(16,8),new Vector2(16,8),new Vector2(15,11),new Vector2(15,11),new Vector2(13,13),new Vector2(13,13),new Vector2(11,14),new Vector2(11,14),new Vector2(8,14)})},
/*p*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,14),new Vector2(4,-7),new Vector2(4,11),new Vector2(6,13),new Vector2(6,13),new Vector2(8,14),new Vector2(8,14),new Vector2(11,14),new Vector2(11,14),new Vector2(13,13),new Vector2(13,13),new Vector2(15,11),new Vector2(15,11),new Vector2(16,8),new Vector2(16,8),new Vector2(16,6),new Vector2(16,6),new Vector2(15,3),new Vector2(15,3),new Vector2(13,1),new Vector2(13,1),new Vector2(11,0),new Vector2(11,0),new Vector2(8,0),new Vector2(8,0),new Vector2(6,1),new Vector2(6,1),new Vector2(4,3)})},
/*q*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(15,14),new Vector2(15,-7),new Vector2(15,11),new Vector2(13,13),new Vector2(13,13),new Vector2(11,14),new Vector2(11,14),new Vector2(8,14),new Vector2(8,14),new Vector2(6,13),new Vector2(6,13),new Vector2(4,11),new Vector2(4,11),new Vector2(3,8),new Vector2(3,8),new Vector2(3,6),new Vector2(3,6),new Vector2(4,3),new Vector2(4,3),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(11,0),new Vector2(11,0),new Vector2(13,1),new Vector2(13,1),new Vector2(15,3)})},
/*r*/ new LineChar{Width = 13, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,14),new Vector2(4,0),new Vector2(4,8),new Vector2(5,11),new Vector2(5,11),new Vector2(7,13),new Vector2(7,13),new Vector2(9,14),new Vector2(9,14),new Vector2(12,14)})},
/*s*/ new LineChar{Width = 17, Vertices = new List<Vector2>(new Vector2[]{new Vector2(14,11),new Vector2(13,13),new Vector2(13,13),new Vector2(10,14),new Vector2(10,14),new Vector2(7,14),new Vector2(7,14),new Vector2(4,13),new Vector2(4,13),new Vector2(3,11),new Vector2(3,11),new Vector2(4,9),new Vector2(4,9),new Vector2(6,8),new Vector2(6,8),new Vector2(11,7),new Vector2(11,7),new Vector2(13,6),new Vector2(13,6),new Vector2(14,4),new Vector2(14,4),new Vector2(14,3),new Vector2(14,3),new Vector2(13,1),new Vector2(13,1),new Vector2(10,0),new Vector2(10,0),new Vector2(7,0),new Vector2(7,0),new Vector2(4,1),new Vector2(4,1),new Vector2(3,3)})},
/*t*/ new LineChar{Width = 12, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,21),new Vector2(5,4),new Vector2(5,4),new Vector2(6,1),new Vector2(6,1),new Vector2(8,0),new Vector2(8,0),new Vector2(10,0),new Vector2(2,14),new Vector2(9,14)})},
/*u*/ new LineChar{Width = 19, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,14),new Vector2(4,4),new Vector2(4,4),new Vector2(5,1),new Vector2(5,1),new Vector2(7,0),new Vector2(7,0),new Vector2(10,0),new Vector2(10,0),new Vector2(12,1),new Vector2(12,1),new Vector2(15,4),new Vector2(15,14),new Vector2(15,0)})},
/*v*/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(2,14),new Vector2(8,0),new Vector2(14,14),new Vector2(8,0)})},
/*w*/ new LineChar{Width = 22, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,14),new Vector2(7,0),new Vector2(11,14),new Vector2(7,0),new Vector2(11,14),new Vector2(15,0),new Vector2(19,14),new Vector2(15,0)})},
/*x*/ new LineChar{Width = 17, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,14),new Vector2(14,0),new Vector2(14,14),new Vector2(3,0)})},
/*y*/ new LineChar{Width = 16, Vertices = new List<Vector2>(new Vector2[]{new Vector2(2,14),new Vector2(8,0),new Vector2(14,14),new Vector2(8,0),new Vector2(8,0),new Vector2(6,-4),new Vector2(6,-4),new Vector2(4,-6),new Vector2(4,-6),new Vector2(2,-7),new Vector2(2,-7),new Vector2(1,-7)})},
/*z*/ new LineChar{Width = 17, Vertices = new List<Vector2>(new Vector2[]{new Vector2(14,14),new Vector2(3,0),new Vector2(3,14),new Vector2(14,14),new Vector2(3,0),new Vector2(14,0)})},
/*{*/ new LineChar{Width = 14, Vertices = new List<Vector2>(new Vector2[]{new Vector2(9,25),new Vector2(7,24),new Vector2(7,24),new Vector2(6,23),new Vector2(6,23),new Vector2(5,21),new Vector2(5,21),new Vector2(5,19),new Vector2(5,19),new Vector2(6,17),new Vector2(6,17),new Vector2(7,16),new Vector2(7,16),new Vector2(8,14),new Vector2(8,14),new Vector2(8,12),new Vector2(8,12),new Vector2(6,10),new Vector2(7,24),new Vector2(6,22),new Vector2(6,22),new Vector2(6,20),new Vector2(6,20),new Vector2(7,18),new Vector2(7,18),new Vector2(8,17),new Vector2(8,17),new Vector2(9,15),new Vector2(9,15),new Vector2(9,13),new Vector2(9,13),new Vector2(8,11),new Vector2(8,11),new Vector2(4,9),new Vector2(4,9),new Vector2(8,7),new Vector2(8,7),new Vector2(9,5),new Vector2(9,5),new Vector2(9,3),new Vector2(9,3),new Vector2(8,1),new Vector2(8,1),new Vector2(7,0),new Vector2(7,0),new Vector2(6,-2),new Vector2(6,-2),new Vector2(6,-4),new Vector2(6,-4),new Vector2(7,-6),new Vector2(6,8),new Vector2(8,6),new Vector2(8,6),new Vector2(8,4),new Vector2(8,4),new Vector2(7,2),new Vector2(7,2),new Vector2(6,1),new Vector2(6,1),new Vector2(5,-1),new Vector2(5,-1),new Vector2(5,-3),new Vector2(5,-3),new Vector2(6,-5),new Vector2(6,-5),new Vector2(7,-6),new Vector2(7,-6),new Vector2(9,-7)})},
/*|*/ new LineChar{Width = 8, Vertices = new List<Vector2>(new Vector2[]{new Vector2(4,25),new Vector2(4,-7)})},
/*}*/ new LineChar{Width = 14, Vertices = new List<Vector2>(new Vector2[]{new Vector2(5,25),new Vector2(7,24),new Vector2(7,24),new Vector2(8,23),new Vector2(8,23),new Vector2(9,21),new Vector2(9,21),new Vector2(9,19),new Vector2(9,19),new Vector2(8,17),new Vector2(8,17),new Vector2(7,16),new Vector2(7,16),new Vector2(6,14),new Vector2(6,14),new Vector2(6,12),new Vector2(6,12),new Vector2(8,10),new Vector2(7,24),new Vector2(8,22),new Vector2(8,22),new Vector2(8,20),new Vector2(8,20),new Vector2(7,18),new Vector2(7,18),new Vector2(6,17),new Vector2(6,17),new Vector2(5,15),new Vector2(5,15),new Vector2(5,13),new Vector2(5,13),new Vector2(6,11),new Vector2(6,11),new Vector2(10,9),new Vector2(10,9),new Vector2(6,7),new Vector2(6,7),new Vector2(5,5),new Vector2(5,5),new Vector2(5,3),new Vector2(5,3),new Vector2(6,1),new Vector2(6,1),new Vector2(7,0),new Vector2(7,0),new Vector2(8,-2),new Vector2(8,-2),new Vector2(8,-4),new Vector2(8,-4),new Vector2(7,-6),new Vector2(8,8),new Vector2(6,6),new Vector2(6,6),new Vector2(6,4),new Vector2(6,4),new Vector2(7,2),new Vector2(7,2),new Vector2(8,1),new Vector2(8,1),new Vector2(9,-1),new Vector2(9,-1),new Vector2(9,-3),new Vector2(9,-3),new Vector2(8,-5),new Vector2(8,-5),new Vector2(7,-6),new Vector2(7,-6),new Vector2(5,-7)})},
/*~*/ new LineChar{Width = 24, Vertices = new List<Vector2>(new Vector2[]{new Vector2(3,6),new Vector2(3,8),new Vector2(3,8),new Vector2(4,11),new Vector2(4,11),new Vector2(6,12),new Vector2(6,12),new Vector2(8,12),new Vector2(8,12),new Vector2(10,11),new Vector2(10,11),new Vector2(14,8),new Vector2(14,8),new Vector2(16,7),new Vector2(16,7),new Vector2(18,7),new Vector2(18,7),new Vector2(20,8),new Vector2(20,8),new Vector2(21,10),new Vector2(3,8),new Vector2(4,10),new Vector2(4,10),new Vector2(6,11),new Vector2(6,11),new Vector2(8,11),new Vector2(8,11),new Vector2(10,10),new Vector2(10,10),new Vector2(14,7),new Vector2(14,7),new Vector2(16,6),new Vector2(16,6),new Vector2(18,6),new Vector2(18,6),new Vector2(20,7),new Vector2(20,7),new Vector2(21,10),new Vector2(21,10),new Vector2(21,12)})}
}
);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1c9480cef8fc2254ba178e579a238c6e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,50 @@
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;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bfba57277abceb942bcc5682d11de69f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,313 @@
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Linq;
using UnityEngine;
public class LineListMeshConstructor : IMeshConstructor, IProceduralMeshFilter {
private List<Vector3> _vertices = new List<Vector3>();
private List<Color> _colors = new List<Color>();
private int[] _indices = new int[] { };
private Dictionary<int, List<Vector2>> _uvs = new Dictionary<int, List<Vector2>>();
public List<Vector3> Vertices => _vertices;
public int[] Indices {
get {
RebuildIndexBuffer();
return _indices;
}
}
public List<Color> Colors => _colors;
public Color Color { get; set; } = Color.red;
public uint SegmentsCount { get; set; } = 16;
public MeshTopology Topology {
get {
return MeshTopology.Lines;
}
}
public List<Vector3> Normals { get; set; } = null;
public Dictionary<int, List<Vector2>> UvChannels { get { return _uvs; } }
public static T Concat<T>(params T[] contructors) where T : LineListMeshConstructor {
LineListMeshConstructor result = new LineListMeshConstructor();
result._colors = contructors.SelectMany(v => v._colors).ToList();
result._vertices = contructors.SelectMany(v => v._vertices).ToList();
return (T)result;
}
public virtual void Clear() {
_vertices.Clear();
_colors.Clear();
}
public void Line(Vector3 begin, Vector3 end) {
Vertex(begin);
Vertex(end);
}
public void Line(Vector3 begin, Color beginColor, Vector3 end, Color endColor) {
Vertex(begin, beginColor);
Vertex(end, endColor);
}
//[MethodImpl(MethodImplOptions.AggressiveInlining)]
public virtual void Vertex(Vector3 vertex) {
_vertices.Add(vertex);
_colors.Add(Color);
}
public virtual void Vertex(Vector3 vertex, Color color) {
_vertices.Add(vertex);
_colors.Add(color);
}
public void Circle(Vector3 position, float radius) {
Vector3 first = position;
first.y += radius;
Vertex(first);
float stepSize = (3.14159265358979f * 2) / SegmentsCount;
for (int i = 1; i < SegmentsCount; i++) {
float angle = stepSize * i;
var v = new Vector3(Mathf.Sin(angle) * radius, Mathf.Cos(angle) * radius, 0) + position;
Vertex(v);
Vertex(v);
}
Vertex(first);
}
public void Grid(float width, float height, int widthSegments, int heightSegments) {
if(widthSegments < 1) {
widthSegments = 1;
}
if (heightSegments < 1) {
heightSegments = 1;
}
float halfWidth = width / 2.0f;
float halfHeight = height / 2.0f;
//Vertical lines
for(int i = 0; i <= widthSegments; ++i) {
float x = width / widthSegments * i - halfWidth;
Vertex(new Vector3(x, height / 2, 0));
Vertex(new Vector3(x, -height / 2, 0));
}
//Horizontal lines
for (int i = 0; i <= heightSegments; ++i) {
float y = height / heightSegments * i - halfHeight;
Vertex(new Vector3(-halfWidth, y, 0));
Vertex(new Vector3(halfWidth, y, 0));
}
}
public void Box(Vector2 size) {
float halfX = size.x / 2;
float halfY = size.y / 2;
Line(new Vector3(-halfX, halfY), new Vector3(halfX, halfY));
Line(new Vector3(halfX, halfY), new Vector3(halfX, -halfY));
Line(new Vector3(halfX, -halfY), new Vector3(-halfX,-halfY));
Line(new Vector3(-halfX, -halfY), new Vector3(-halfX, halfY));
}
public void Box(Vector3 size) {
float halfX = size.x / 2;
float halfY = size.y / 2;
float halfZ = size.z / 2;
Vector3[] vertices = new Vector3[] {
new Vector3(-halfX, halfY, halfZ),
new Vector3(halfX, halfY, halfZ),
new Vector3(halfX, halfY, -halfZ),
new Vector3(-halfX, halfY, -halfZ),
new Vector3(-halfX, -halfY, halfZ),
new Vector3(halfX, -halfY, halfZ),
new Vector3(halfX, -halfY, -halfZ),
new Vector3(-halfX, -halfY, -halfZ),
};
int[] indices = new int[] {
0,1,
1,2,
2,3,
3,0,
4,5,
5,6,
6,7,
7,4,
0,4,
1,5,
2,6,
3,7
};
for(int i = 0; i < indices.Length; ++i) {
Vertex(vertices[indices[i]]);
}
}
public void CoordinateSystem() {
var oldColor = Color;
Color = Color.red;
Line(Vector3.zero, Vector3.right);
Color = Color.green;
Line(Vector3.zero, Vector3.up);
Color = Color.blue;
Line(Vector3.zero, Vector3.forward);
}
public void Cross2D(float extent) {
Line(new Vector3(-extent, 0, 0), new Vector3(extent, 0, 0));
Line(new Vector3(0, -extent, 0), new Vector3(0, extent, 0));
}
public void Cross3D(float extent) {
Line(new Vector3(-extent, 0, 0), new Vector3(extent, 0, 0));
Line(new Vector3(0, -extent, 0), new Vector3(0, extent, 0));
Line(new Vector3(0, 0, -extent), new Vector3(0, 0, extent));
}
public void QuadraticBezier(Vector3 p0, Vector3 p1, Vector3 p2) {
Vector3 previous = p0;
for (int i = 1; i <= SegmentsCount; ++i) {
float t = 1.0f / SegmentsCount * i;
float rcpT = 1.0f - t;
float tPow2 = t * t;
float rcpTPow2 = rcpT * rcpT;
Vector3 b = rcpTPow2 * p0 + 2.0f * rcpT * t * p1 + tPow2 * p2;
Vertex(previous);
Vertex(b);
previous = b;
}
}
public void QubicBezier(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3) {
Vector3 previous = p0;
for (int i = 1; i <= SegmentsCount; ++i) {
float t = 1.0f / SegmentsCount * i;
float rcpT = 1.0f - t;
float tPow2 = t * t;
float tPow3 = tPow2 * t;
float rcpTPow2 = rcpT * rcpT;
float rcpTPow3 = rcpTPow2 * rcpT;
Vector3 b = rcpTPow3 * p0 + 3 * rcpTPow2 * t * p1 + 3 * rcpT * tPow2 * p2 + tPow3 * p3;
Vertex(previous);
Vertex(b);
previous = b;
}
}
int[] PascalTriangleRow(int row) {
int[] result = new int[row + 1];
result[0] = 1;
for (int i = 0; i < row; ++i)
result[1 + i] = result[i] * (row - i) / (i + 1);
return result;
}
public void Bezier(Vector3[] controlPoints) {
if(controlPoints == null || controlPoints.Length < 2) {
return;
}
Vector3 previous = controlPoints[0];
int n = controlPoints.Length - 1;
var row = PascalTriangleRow(n);
for (int s = 1; s <= SegmentsCount; ++s) {
float t = 1.0f / SegmentsCount * s;
float rcpT = 1.0f - t;
Vector3 b = Vector3.zero;
for (int i = 0; i < controlPoints.Length; ++i) {
b += Mathf.Pow(rcpT, n - i) * Mathf.Pow(t, i) * controlPoints[i] * row[i];
}
Vertex(previous);
Vertex(b);
previous = b;
}
}
public void PolyLine(IEnumerable<Vector3> pointsList) {
using(var enumerator = pointsList.GetEnumerator()) {
if (!enumerator.MoveNext()) {
return;
}
Vector3 previous = enumerator.Current;
while (enumerator.MoveNext()) {
var current = enumerator.Current;
Vertex(previous);
Vertex(current);
previous = current;
}
}
}
public void Sphere(Vector3 position, float radius) {
Vector3[] first = new Vector3[] { position, position, position };
first[0].x += radius;
first[1].y += radius;
first[2].y += radius;
Vector3[] previous = new Vector3[] { first[0], first[1], first[2] };
float stepSize = (3.14159265358979f * 2) / SegmentsCount;
for (int i = 1; i < SegmentsCount; i++) {
float angle = stepSize * i;
float a = Mathf.Sin(angle) * radius;
float b = Mathf.Cos(angle) * radius;
var v = new Vector3(b, 0, -a) + position;
Vertex(previous[0]);
Vertex(v);
previous[0] = v;
v = new Vector3(a, b, 0) + position;
Vertex(previous[1]);
Vertex(v);
previous[1] = v;
v = new Vector3(0, b, a) + position;
Vertex(previous[2]);
Vertex(v);
previous[2] = v;
}
for (int i = 0; i < 3; ++i) {
Vertex(previous[i]);
Vertex(first[i]);
}
}
private void RebuildIndexBuffer() {
if (_indices.Length > _vertices.Count) {
System.Array.Resize(ref _indices, _vertices.Count);
} else if (_indices.Length < _vertices.Count) {
int beginIndex = _indices.Length;
int endIndex = _vertices.Count;
System.Array.Resize(ref _indices, _vertices.Count);
for (; beginIndex < endIndex; ++beginIndex) {
_indices[beginIndex] = beginIndex;
}
}
}
public List<Vector2> UvChannel(int id) {
if (!_uvs.ContainsKey(id)) {
_uvs.Add(id, new List<Vector2>());
}
return _uvs[id];
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: aae56a92c6db38549acc6fd0e6700c46
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineListMeshConstructorExtended : LineListMeshConstructor {
public Matrix4x4 Matrix = Matrix4x4.identity;
public override void Clear() {
base.Clear();
Matrix = Matrix4x4.identity;
}
public override void Vertex(Vector3 vertex) {
base.Vertex(Matrix.MultiplyPoint(vertex));
}
public override void Vertex(Vector3 vertex, Color color) {
base.Vertex(Matrix.MultiplyPoint(vertex), color);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fc45f1d4570c2954a80ee6a7b6b905b5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,33 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineStripMeshWriter {
public LineListMeshConstructor Constructor { get; private set; }
private Vector3 _lastVertex = Vector3.zero;
private bool _newStrip = true;
public Vector3 LastVertex {
get { return _lastVertex; }
}
public int StripLength { get; private set; }
public LineStripMeshWriter(LineListMeshConstructor constructor) {
Constructor = constructor;
}
public void Vertex(Vector3 value) {
if (_newStrip) {
_newStrip = false;
} else {
Constructor.Line(_lastVertex, value);
}
_lastVertex = value;
StripLength++;
}
public void Restart() {
_newStrip = true;
StripLength = 0;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3d7e052f1e6b03d4fa745ec28e9a4958
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MatrixTransformMeshFilter : ProceduralMeshFilter
{
public Matrix4x4 Matrix = Matrix4x4.identity;
public MatrixTransformMeshFilter(IProceduralMeshFilter next) : base(next)
{
}
public MatrixTransformMeshFilter(IProceduralMeshFilter next, Matrix4x4 matrix) : base(next)
{
Matrix = matrix;
}
public override void Vertex(Vector3 vertex)
{
base.Vertex(Matrix.MultiplyPoint(vertex));
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2f2f5f1934e356640ab505a70c21d4cb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,17 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public interface IMeshConstructor {
List<Vector3> Vertices { get; }
int[] Indices { get; }
List<Color> Colors { get; }
List<Vector3> Normals { get; }
MeshTopology Topology { get; }
List<Vector2> UvChannel(int id);
Dictionary<int, List<Vector2>> UvChannels { get; }
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e82ba4b3a4c32be4ab51315aee5d863f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,19 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OffsetMeshFilter : ProceduralMeshFilter
{
public Vector3 Offset = Vector3.zero;
public OffsetMeshFilter(IProceduralMeshFilter next) : base(next)
{
}
public OffsetMeshFilter(IProceduralMeshFilter next, Vector3 offset) : base(next)
{
Offset = offset;
}
public override void Vertex(Vector3 vertex)
{
base.Vertex(vertex + Offset);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 65379463b8f8e1b43ab58fd9c90a1b44
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,49 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshFilter))]
[ExecuteInEditMode]
public class ProceduralMesh : MonoBehaviour {
private Mesh _mesh;
private void Awake() {
}
private void ValidateMeshCreated() {
if(_mesh == null) {
_mesh = new Mesh();
}
var filter = GetComponent<MeshFilter>();
filter.sharedMesh = _mesh;
}
public void Rebuild(IMeshConstructor constructor, bool recalculateBounds = true) {
ValidateMeshCreated();
_mesh.Clear();
_mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
_mesh.SetVertices(constructor.Vertices);
_mesh.SetColors(constructor.Colors);
var uvs = constructor.UvChannels;
foreach(var uv in uvs) {
_mesh.SetUVs(uv.Key, uv.Value);
}
_mesh.SetIndices(constructor.Indices, constructor.Topology, 0);
var normals = constructor.Normals;
if (normals != null)
{
_mesh.SetNormals(normals);
}
if (recalculateBounds) {
_mesh.RecalculateBounds();
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 643f8821158cc4e4ea3be87268a48107
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public interface IProceduralMeshFilter
{
void Vertex(Vector3 vertex);
}
public class ProceduralMeshFilter : IProceduralMeshFilter {
public IProceduralMeshFilter Next { get; }
public ProceduralMeshFilter(IProceduralMeshFilter next)
{
Next = next;
}
public virtual void Vertex(Vector3 vertex)
{
Next.Vertex(vertex);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6c1b37139ea48004b84c9aba4f4ea648
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotationMeshFilter : ProceduralMeshFilter
{
public Quaternion Rotation = Quaternion.identity;
public RotationMeshFilter(IProceduralMeshFilter next) : base(next)
{
}
public RotationMeshFilter(IProceduralMeshFilter next, Quaternion rotation) : base(next)
{
Rotation = rotation;
}
public override void Vertex(Vector3 vertex)
{
base.Vertex(Rotation * vertex);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 936a27603138b00478b618fa44a0d110
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScaleMeshFilter : ProceduralMeshFilter
{
public Vector3 Scale = Vector3.one;
public ScaleMeshFilter(IProceduralMeshFilter next, Vector3 scale) : base(next)
{
Scale = scale;
}
public override void Vertex(Vector3 vertex)
{
vertex.x *= Scale.x;
vertex.y *= Scale.y;
vertex.z *= Scale.z;
base.Vertex(vertex);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6e45e268c3d226a4c8d41b0dfa4e38a3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,127 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System;
using UnityEngine;
public class TriangleMeshConstructor : IMeshConstructor {
public List<Vector3> Vertices { get; set; } = new List<Vector3>();
public List<Vector3> UV { get; set; } = new List<Vector3>();
public int[] Indices { get; set; }
public List<Color> Colors { get; set; } = new List<Color>();
public MeshTopology Topology { get { return MeshTopology.Triangles; } }
public Color Color { get; set; } = Color.white;
public List<Vector3> Normals { get; set; } = null;
public Dictionary<int, List<Vector2>> UvChannels { get { return _uvs; } }
private Dictionary<int, List<Vector2>> _uvs = new Dictionary<int, List<Vector2>>();
public void RecalculateIndicesAsTriangleList() {
if(Vertices == null) {
return;
}
if(Vertices.Count % 3 != 0) {
throw new System.Exception("Vertex count is not multiple of 3");
}
Indices = Enumerable.Range(0, Vertices.Count).ToArray();
}
public void BreakVertices()
{
List<Vector3> newVertices = new List<Vector3>();
List<Color> newColors = new List<Color>();
Dictionary<int, List<Vector2>> newUvs = new Dictionary<int, List<Vector2>>();
for (int i = 0; i < Indices.Length; ++i)
{
newVertices.Add(Vertices[Indices[i]]);
newColors.Add(Colors[Indices[i]]);
foreach(var u in _uvs) {
if (!newUvs.ContainsKey(u.Key)) {
newUvs.Add(u.Key, new List<Vector2>());
}
newUvs[u.Key].Add(u.Value[Indices[i]]);
}
}
Vertices = newVertices;
Colors = newColors;
_uvs = newUvs;
RecalculateIndicesAsTriangleList();
}
public void RecalculateFlatNormals()
{
Normals = new List<Vector3>();
//norma
for (int i = 0; i < Vertices.Count; i+=3)
{
var p0 = Vertices[i + 0];
var p1 = Vertices[i + 1];
var p2 = Vertices[i + 2];
var v0 = p0 - p2;
var v1 = p1 - p2;
var normal = Vector3.Cross(v0.normalized, v1.normalized).normalized;
Normals.Add(normal);
Normals.Add(normal);
Normals.Add(normal);
}
}
public void AssingColors(Color c) {
Colors = Enumerable.Repeat(c, Vertices.Count).ToList();
}
public delegate Color ColorGenerator(int verticesCount, int vertexId);
public delegate Color ColorGenerator2(int verticesCount, int vertexId, Vector3 vertex);
public void AssingColors(ColorGenerator generator) {
Colors = new List<Color>();
for (int i = 0; i < Vertices.Count; ++i) {
Colors.Add(generator(Vertices.Count, i));
}
}
public void AssingColors(ColorGenerator2 generator) {
Colors = new List<Color>();
for (int i = 0; i < Vertices.Count; ++i) {
Colors.Add(generator(Vertices.Count, i, Vertices[i]));
}
}
public void Vertex(Vector3 v, Color c) {
Vertices.Add(v);
Colors.Add(c);
}
public void Vertex(Vector3 v) {
Vertices.Add(v);
Colors.Add(Color);
}
public void Triangle(Vector3 p0, Vector3 p1, Vector3 p2) {
Vertex(p0);
Vertex(p1);
Vertex(p2);
}
public List<Vector2> UvChannel(int id) {
if (!_uvs.ContainsKey(id)) {
_uvs.Add(id, new List<Vector2>());
}
return _uvs[id];
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5675208650ee81348890a166c109f94e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+30
View File
@@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class PtgFile {
private List<TimFile> _timData = new List<TimFile>();
public List<TimFile> Textures {
get { return _timData; }
}
public static PtgFile Parse(byte[] data) {
PtgFile result = new PtgFile();
MemoryStream src = new MemoryStream(data);
BinaryReader r = new BinaryReader(src);
var texCount = r.ReadInt32();
var texSize = (data.Length - 4) / texCount;
for (int i = 0; i < texCount; ++i) {
var texData = r.ReadBytes(texSize);
result._timData.Add(TimFile.Parse(texData));
}
return result;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7a76348b2eaeb224bb8e8f3814365bf1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f3d7034ef7532fe4ab3e67d37828314c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9fc0d4010bbf28b4594072e72b8655ab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+77
View File
@@ -0,0 +1,77 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Terrain
m_Shader: {fileID: 4800000, guid: bef99a420ff986049a61f700baaebfde, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.29
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0cfce0a529a72184f9de66750cefb67d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,63 @@
Shader "Unlit/Terrain"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float4 color : COLOR0;
};
struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
float4 color : TEXCOORD5;
};
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.color = v.color;
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return i.color * col;
return col;
}
ENDCG
}
}
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: bef99a420ff986049a61f700baaebfde
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
+120
View File
@@ -0,0 +1,120 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using UnityEngine;
public class TimFile {
public enum Format : byte {
Bpp4Bit = 0,
Bpp8Bit = 1,
Bpp16Bit = 2,
Bpp24Bit = 3
}
[Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct Header {
public uint h1;
public uint h2;
public byte Tag {
get { return (byte)(h1 & 0xff); }
}
public byte Version {
get { return (byte)((h1 >> 8) & 0xff); }
}
public Format Format {
get { return (Format)(h2 & 0x3); }
}
public bool ColorLutPresent {
get { return (h2 & 0x08) != 0; }
}
}
[Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct ImageBlockHeader {
public uint length;
public ushort x;
public ushort y;
public ushort width;
public ushort height;
}
public class ImageBlock {
public ImageBlockHeader header;
public ushort[] data;
}
public Header header;
public ImageBlock lut;
public ImageBlock image;
public int ImageWidth {
get {
switch (header.Format) {
case Format.Bpp4Bit:
return image.header.width * 4;
case Format.Bpp8Bit:
return image.header.width * 2;
case Format.Bpp16Bit:
return image.header.width * 1;
case Format.Bpp24Bit:
return (int)(image.header.width / 1.5f);
default:
return image.header.width;
}
}
}
public int ImageHeight {
get {
return image.header.height;
}
}
private static ImageBlock ReadImageBlock(BinaryReader reader) {
ImageBlock result = new ImageBlock();
result.header.length = reader.ReadUInt32();
result.header.x = reader.ReadUInt16();
result.header.y = reader.ReadUInt16();
result.header.width = reader.ReadUInt16();
result.header.height = reader.ReadUInt16();
var dataSize = result.header.length - 12;
result.data = new ushort[dataSize / 2];
for (int i = 0; i < result.data.Length; ++i) {
result.data[i] = reader.ReadUInt16();
}
return result;
}
public static TimFile Parse(byte[] data) {
TimFile result = new TimFile();
MemoryStream src = new MemoryStream(data);
BinaryReader r = new BinaryReader(src);
result.header.h1 = r.ReadUInt32();
result.header.h2 = r.ReadUInt32();
if (result.header.ColorLutPresent) {
result.lut = ReadImageBlock(r);
}
result.image = ReadImageBlock(r);
return result;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 48075a2063acc65469153cb213abe93b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,42 @@
{
"dependencies": {
"com.unity.collab-proxy": "1.2.16",
"com.unity.ide.rider": "1.1.4",
"com.unity.ide.vscode": "1.2.0",
"com.unity.test-framework": "1.1.13",
"com.unity.textmeshpro": "2.0.1",
"com.unity.timeline": "1.2.14",
"com.unity.ugui": "1.0.0",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.cloth": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.physics2d": "1.0.0",
"com.unity.modules.screencapture": "1.0.0",
"com.unity.modules.terrain": "1.0.0",
"com.unity.modules.terrainphysics": "1.0.0",
"com.unity.modules.tilemap": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.uielements": "1.0.0",
"com.unity.modules.umbra": "1.0.0",
"com.unity.modules.unityanalytics": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
"com.unity.modules.unitywebrequestaudio": "1.0.0",
"com.unity.modules.unitywebrequesttexture": "1.0.0",
"com.unity.modules.unitywebrequestwww": "1.0.0",
"com.unity.modules.vehicles": "1.0.0",
"com.unity.modules.video": "1.0.0",
"com.unity.modules.vr": "1.0.0",
"com.unity.modules.wind": "1.0.0",
"com.unity.modules.xr": "1.0.0"
}
}
@@ -0,0 +1,19 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!11 &1
AudioManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Volume: 1
Rolloff Scale: 1
Doppler Factor: 1
Default Speaker Mode: 2
m_SampleRate: 0
m_DSPBufferSize: 1024
m_VirtualVoiceCount: 512
m_RealVoiceCount: 32
m_SpatializerPlugin:
m_AmbisonicDecoderPlugin:
m_DisableAudio: 0
m_VirtualizeEffects: 1
m_RequestedDSPBufferSize: 1024
@@ -0,0 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!236 &1
ClusterInputManager:
m_ObjectHideFlags: 0
m_Inputs: []
@@ -0,0 +1,34 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!55 &1
PhysicsManager:
m_ObjectHideFlags: 0
serializedVersion: 11
m_Gravity: {x: 0, y: -9.81, z: 0}
m_DefaultMaterial: {fileID: 0}
m_BounceThreshold: 2
m_SleepThreshold: 0.005
m_DefaultContactOffset: 0.01
m_DefaultSolverIterations: 6
m_DefaultSolverVelocityIterations: 1
m_QueriesHitBackfaces: 0
m_QueriesHitTriggers: 1
m_EnableAdaptiveForce: 0
m_ClothInterCollisionDistance: 0
m_ClothInterCollisionStiffness: 0
m_ContactsGeneration: 1
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
m_AutoSimulation: 1
m_AutoSyncTransforms: 0
m_ReuseCollisionCallbacks: 1
m_ClothInterCollisionSettingsToggle: 0
m_ContactPairsMode: 0
m_BroadphaseType: 0
m_WorldBounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 250, y: 250, z: 250}
m_WorldSubdivisions: 8
m_FrictionType: 0
m_EnableEnhancedDeterminism: 0
m_EnableUnifiedHeightmaps: 1
m_DefaultMaxAngluarSpeed: 7
@@ -0,0 +1,8 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1045 &1
EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes: []
m_configObjects: {}
@@ -0,0 +1,30 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!159 &1
EditorSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_ExternalVersionControlSupport: Visible Meta Files
m_SerializationMode: 2
m_LineEndingsForNewScripts: 0
m_DefaultBehaviorMode: 0
m_PrefabRegularEnvironment: {fileID: 0}
m_PrefabUIEnvironment: {fileID: 0}
m_SpritePackerMode: 0
m_SpritePackerPaddingPower: 1
m_EtcTextureCompressorBehavior: 1
m_EtcTextureFastCompressor: 1
m_EtcTextureNormalCompressor: 2
m_EtcTextureBestCompressor: 4
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
m_ProjectGenerationRootNamespace:
m_CollabEditorSettings:
inProgressEnabled: 1
m_EnableTextureStreamingInEditMode: 1
m_EnableTextureStreamingInPlayMode: 1
m_AsyncShaderCompilation: 1
m_EnterPlayModeOptionsEnabled: 0
m_EnterPlayModeOptions: 3
m_ShowLightmapResolutionOverlay: 1
m_UseLegacyProbeSampleCount: 0
m_SerializeInlineMappingsOnOneLine: 1
@@ -0,0 +1,63 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!30 &1
GraphicsSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_Deferred:
m_Mode: 1
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
m_DeferredReflections:
m_Mode: 1
m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
m_ScreenSpaceShadows:
m_Mode: 1
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
m_LegacyDeferred:
m_Mode: 1
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
m_DepthNormals:
m_Mode: 1
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
m_MotionVectors:
m_Mode: 1
m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
m_LightHalo:
m_Mode: 1
m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
m_LensFlare:
m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_AlwaysIncludedShaders:
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
m_PreloadedShaders: []
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
type: 0}
m_CustomRenderPipeline: {fileID: 0}
m_TransparencySortMode: 0
m_TransparencySortAxis: {x: 0, y: 0, z: 1}
m_DefaultRenderingPath: 1
m_DefaultMobileRenderingPath: 1
m_TierSettings: []
m_LightmapStripping: 0
m_FogStripping: 0
m_InstancingStripping: 0
m_LightmapKeepPlain: 1
m_LightmapKeepDirCombined: 1
m_LightmapKeepDynamicPlain: 1
m_LightmapKeepDynamicDirCombined: 1
m_LightmapKeepShadowMask: 1
m_LightmapKeepSubtractive: 1
m_FogKeepLinear: 1
m_FogKeepExp: 1
m_FogKeepExp2: 1
m_AlbedoSwatchInfos: []
m_LightsUseLinearIntensity: 0
m_LightsUseColorTemperature: 0
m_LogWhenShaderIsCompiled: 0
m_AllowEnlightenSupportForUpgradedProject: 0
@@ -0,0 +1,295 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!13 &1
InputManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Axes:
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton: left
positiveButton: right
altNegativeButton: a
altPositiveButton: d
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton: down
positiveButton: up
altNegativeButton: s
altPositiveButton: w
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left ctrl
altNegativeButton:
altPositiveButton: mouse 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left alt
altNegativeButton:
altPositiveButton: mouse 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left shift
altNegativeButton:
altPositiveButton: mouse 2
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: space
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse X
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse Y
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Mouse ScrollWheel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 2
joyNum: 0
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 0
type: 2
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 1
type: 2
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 0
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 1
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 2
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 3
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: return
altNegativeButton:
altPositiveButton: joystick button 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: enter
altNegativeButton:
altPositiveButton: space
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Cancel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: escape
altNegativeButton:
altPositiveButton: joystick button 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
@@ -0,0 +1,91 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!126 &1
NavMeshProjectSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
areas:
- name: Walkable
cost: 1
- name: Not Walkable
cost: 1
- name: Jump
cost: 2
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
m_LastAgentTypeID: -887442657
m_Settings:
- serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.75
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_SettingNames:
- Humanoid
@@ -0,0 +1,56 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!19 &1
Physics2DSettings:
m_ObjectHideFlags: 0
serializedVersion: 4
m_Gravity: {x: 0, y: -9.81}
m_DefaultMaterial: {fileID: 0}
m_VelocityIterations: 8
m_PositionIterations: 3
m_VelocityThreshold: 1
m_MaxLinearCorrection: 0.2
m_MaxAngularCorrection: 8
m_MaxTranslationSpeed: 100
m_MaxRotationSpeed: 360
m_BaumgarteScale: 0.2
m_BaumgarteTimeOfImpactScale: 0.75
m_TimeToSleep: 0.5
m_LinearSleepTolerance: 0.01
m_AngularSleepTolerance: 2
m_DefaultContactOffset: 0.01
m_JobOptions:
serializedVersion: 2
useMultithreading: 0
useConsistencySorting: 0
m_InterpolationPosesPerJob: 100
m_NewContactsPerJob: 30
m_CollideContactsPerJob: 100
m_ClearFlagsPerJob: 200
m_ClearBodyForcesPerJob: 200
m_SyncDiscreteFixturesPerJob: 50
m_SyncContinuousFixturesPerJob: 50
m_FindNearestContactsPerJob: 100
m_UpdateTriggerContactsPerJob: 100
m_IslandSolverCostThreshold: 100
m_IslandSolverBodyCostScale: 1
m_IslandSolverContactCostScale: 10
m_IslandSolverJointCostScale: 10
m_IslandSolverBodiesPerJob: 50
m_IslandSolverContactsPerJob: 50
m_AutoSimulation: 1
m_QueriesHitTriggers: 1
m_QueriesStartInColliders: 1
m_CallbacksOnDisable: 1
m_ReuseCollisionCallbacks: 1
m_AutoSyncTransforms: 0
m_AlwaysShowColliders: 0
m_ShowColliderSleep: 1
m_ShowColliderContacts: 0
m_ShowColliderAABB: 0
m_ContactArrowScale: 0.2
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
@@ -0,0 +1,7 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1386491679 &1
PresetManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_DefaultPresets: {}
@@ -0,0 +1,666 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!129 &1
PlayerSettings:
m_ObjectHideFlags: 0
serializedVersion: 20
productGUID: 4620ef951009af8449a4fdd7efa76432
AndroidProfiler: 0
AndroidFilterTouchesWhenObscured: 0
AndroidEnableSustainedPerformanceMode: 0
defaultScreenOrientation: 4
targetDevice: 2
useOnDemandResources: 0
accelerometerFrequency: 60
companyName: DefaultCompany
productName: Unity
defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0}
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
m_ShowUnitySplashScreen: 1
m_ShowUnitySplashLogo: 1
m_SplashScreenOverlayOpacity: 1
m_SplashScreenAnimation: 1
m_SplashScreenLogoStyle: 1
m_SplashScreenDrawMode: 0
m_SplashScreenBackgroundAnimationZoom: 1
m_SplashScreenLogoAnimationZoom: 1
m_SplashScreenBackgroundLandscapeAspect: 1
m_SplashScreenBackgroundPortraitAspect: 1
m_SplashScreenBackgroundLandscapeUvs:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
m_SplashScreenBackgroundPortraitUvs:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
m_SplashScreenLogos: []
m_VirtualRealitySplashScreen: {fileID: 0}
m_HolographicTrackingLossScreen: {fileID: 0}
defaultScreenWidth: 1024
defaultScreenHeight: 768
defaultScreenWidthWeb: 960
defaultScreenHeightWeb: 600
m_StereoRenderingPath: 0
m_ActiveColorSpace: 0
m_MTRendering: 1
mipStripping: 0
numberOfMipsStripped: 0
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
iosShowActivityIndicatorOnLoading: -1
androidShowActivityIndicatorOnLoading: -1
iosUseCustomAppBackgroundBehavior: 0
iosAllowHTTPDownload: 1
allowedAutorotateToPortrait: 1
allowedAutorotateToPortraitUpsideDown: 1
allowedAutorotateToLandscapeRight: 1
allowedAutorotateToLandscapeLeft: 1
useOSAutorotation: 1
use32BitDisplayBuffer: 1
preserveFramebufferAlpha: 0
disableDepthAndStencilBuffers: 0
androidStartInFullscreen: 1
androidRenderOutsideSafeArea: 1
androidUseSwappy: 1
androidBlitType: 0
defaultIsNativeResolution: 1
macRetinaSupport: 1
runInBackground: 1
captureSingleScreen: 0
muteOtherAudioSources: 0
Prepare IOS For Recording: 0
Force IOS Speakers When Recording: 0
deferSystemGesturesMode: 0
hideHomeButton: 0
submitAnalytics: 1
usePlayerLog: 1
bakeCollisionMeshes: 0
forceSingleInstance: 0
useFlipModelSwapchain: 1
resizableWindow: 0
useMacAppStoreValidation: 0
macAppStoreCategory: public.app-category.games
gpuSkinning: 1
xboxPIXTextureCapture: 0
xboxEnableAvatar: 0
xboxEnableKinect: 0
xboxEnableKinectAutoTracking: 0
xboxEnableFitness: 0
visibleInBackground: 1
allowFullscreenSwitch: 1
fullscreenMode: 1
xboxSpeechDB: 0
xboxEnableHeadOrientation: 0
xboxEnableGuest: 0
xboxEnablePIXSampling: 0
metalFramebufferOnly: 0
xboxOneResolution: 0
xboxOneSResolution: 0
xboxOneXResolution: 3
xboxOneMonoLoggingLevel: 0
xboxOneLoggingLevel: 1
xboxOneDisableEsram: 0
xboxOneEnableTypeOptimization: 0
xboxOnePresentImmediateThreshold: 0
switchQueueCommandMemory: 0
switchQueueControlMemory: 16384
switchQueueComputeMemory: 262144
switchNVNShaderPoolsGranularity: 33554432
switchNVNDefaultPoolsGranularity: 16777216
switchNVNOtherPoolsGranularity: 16777216
vulkanNumSwapchainBuffers: 3
vulkanEnableSetSRGBWrite: 0
vulkanEnablePreTransform: 0
m_SupportedAspectRatios:
4:3: 1
5:4: 1
16:10: 1
16:9: 1
Others: 1
bundleVersion: 0.1
preloadedAssets: []
metroInputSource: 0
wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1
xboxOneDisableKinectGpuReservation: 1
xboxOneEnable7thCore: 1
vrSettings:
cardboard:
depthFormat: 0
enableTransitionView: 0
daydream:
depthFormat: 0
useSustainedPerformanceMode: 0
enableVideoLayer: 0
useProtectedVideoMemory: 0
minimumSupportedHeadTracking: 0
maximumSupportedHeadTracking: 1
hololens:
depthFormat: 1
depthBufferSharingEnabled: 1
lumin:
depthFormat: 0
frameTiming: 2
enableGLCache: 0
glCacheMaxBlobSize: 524288
glCacheMaxFileSize: 8388608
oculus:
sharedDepthBuffer: 1
dashSupport: 1
lowOverheadMode: 0
protectedContext: 0
v2Signing: 1
enable360StereoCapture: 0
isWsaHolographicRemotingEnabled: 0
enableFrameTimingStats: 0
useHDRDisplay: 0
D3DHDRBitDepth: 0
m_ColorGamuts: 00000000
targetPixelDensity: 30
resolutionScalingMode: 0
androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1
applicationIdentifier: {}
buildNumber: {}
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 19
AndroidTargetSdkVersion: 0
AndroidPreferredInstallLocation: 1
aotOptions:
stripEngineCode: 1
iPhoneStrippingLevel: 0
iPhoneScriptCallOptimization: 0
ForceInternetPermission: 0
ForceSDCardPermission: 0
CreateWallpaper: 0
APKExpansionFiles: 0
keepLoadedShadersAlive: 0
StripUnusedMeshComponents: 1
VertexChannelCompressionMask: 4054
iPhoneSdkVersion: 988
iOSTargetOSVersionString: 11.0
tvOSSdkVersion: 0
tvOSRequireExtendedGameController: 0
tvOSTargetOSVersionString: 11.0
uIPrerenderedIcon: 0
uIRequiresPersistentWiFi: 0
uIRequiresFullScreen: 1
uIStatusBarHidden: 1
uIExitOnSuspend: 0
uIStatusBarStyle: 0
appleTVSplashScreen: {fileID: 0}
appleTVSplashScreen2x: {fileID: 0}
tvOSSmallIconLayers: []
tvOSSmallIconLayers2x: []
tvOSLargeIconLayers: []
tvOSLargeIconLayers2x: []
tvOSTopShelfImageLayers: []
tvOSTopShelfImageLayers2x: []
tvOSTopShelfImageWideLayers: []
tvOSTopShelfImageWideLayers2x: []
iOSLaunchScreenType: 0
iOSLaunchScreenPortrait: {fileID: 0}
iOSLaunchScreenLandscape: {fileID: 0}
iOSLaunchScreenBackgroundColor:
serializedVersion: 2
rgba: 0
iOSLaunchScreenFillPct: 100
iOSLaunchScreenSize: 100
iOSLaunchScreenCustomXibPath:
iOSLaunchScreeniPadType: 0
iOSLaunchScreeniPadImage: {fileID: 0}
iOSLaunchScreeniPadBackgroundColor:
serializedVersion: 2
rgba: 0
iOSLaunchScreeniPadFillPct: 100
iOSLaunchScreeniPadSize: 100
iOSLaunchScreeniPadCustomXibPath:
iOSUseLaunchScreenStoryboard: 0
iOSLaunchScreenCustomStoryboardPath:
iOSDeviceRequirements: []
iOSURLSchemes: []
iOSBackgroundModes: 0
iOSMetalForceHardShadows: 0
metalEditorSupport: 1
metalAPIValidation: 1
iOSRenderExtraFrameOnPause: 0
appleDeveloperTeamID:
iOSManualSigningProvisioningProfileID:
tvOSManualSigningProvisioningProfileID:
iOSManualSigningProvisioningProfileType: 0
tvOSManualSigningProvisioningProfileType: 0
appleEnableAutomaticSigning: 0
iOSRequireARKit: 0
iOSAutomaticallyDetectAndAddCapabilities: 1
appleEnableProMotion: 0
clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
templatePackageId: com.unity.template.3d@5.0.3
templateDefaultScene: Assets/Scenes/SampleScene.unity
AndroidTargetArchitectures: 1
AndroidSplashScreenScale: 0
androidSplashScreen: {fileID: 0}
AndroidKeystoreName:
AndroidKeyaliasName:
AndroidBuildApkPerCpuArchitecture: 0
AndroidTVCompatibility: 0
AndroidIsGame: 1
AndroidEnableTango: 0
androidEnableBanner: 1
androidUseLowAccuracyLocation: 0
androidUseCustomKeystore: 0
m_AndroidBanners:
- width: 320
height: 180
banner: {fileID: 0}
androidGamepadSupportLevel: 0
AndroidValidateAppBundleSize: 1
AndroidAppBundleSizeToValidate: 150
m_BuildTargetIcons: []
m_BuildTargetPlatformIcons: []
m_BuildTargetBatching:
- m_BuildTarget: Standalone
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: tvOS
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: Android
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: iPhone
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: WebGL
m_StaticBatching: 0
m_DynamicBatching: 0
m_BuildTargetGraphicsJobs:
- m_BuildTarget: MacStandaloneSupport
m_GraphicsJobs: 0
- m_BuildTarget: Switch
m_GraphicsJobs: 1
- m_BuildTarget: MetroSupport
m_GraphicsJobs: 1
- m_BuildTarget: AppleTVSupport
m_GraphicsJobs: 0
- m_BuildTarget: BJMSupport
m_GraphicsJobs: 1
- m_BuildTarget: LinuxStandaloneSupport
m_GraphicsJobs: 1
- m_BuildTarget: PS4Player
m_GraphicsJobs: 1
- m_BuildTarget: iOSSupport
m_GraphicsJobs: 0
- m_BuildTarget: WindowsStandaloneSupport
m_GraphicsJobs: 1
- m_BuildTarget: XboxOnePlayer
m_GraphicsJobs: 1
- m_BuildTarget: LuminSupport
m_GraphicsJobs: 0
- m_BuildTarget: AndroidPlayer
m_GraphicsJobs: 0
- m_BuildTarget: WebGLSupport
m_GraphicsJobs: 0
m_BuildTargetGraphicsJobMode:
- m_BuildTarget: PS4Player
m_GraphicsJobMode: 0
- m_BuildTarget: XboxOnePlayer
m_GraphicsJobMode: 0
m_BuildTargetGraphicsAPIs:
- m_BuildTarget: AndroidPlayer
m_APIs: 150000000b000000
m_Automatic: 0
- m_BuildTarget: iOSSupport
m_APIs: 10000000
m_Automatic: 1
- m_BuildTarget: AppleTVSupport
m_APIs: 10000000
m_Automatic: 0
- m_BuildTarget: WebGLSupport
m_APIs: 0b000000
m_Automatic: 1
m_BuildTargetVRSettings:
- m_BuildTarget: Standalone
m_Enabled: 0
m_Devices:
- Oculus
- OpenVR
openGLRequireES31: 0
openGLRequireES31AEP: 0
openGLRequireES32: 0
m_TemplateCustomTags: {}
mobileMTRendering:
Android: 1
iPhone: 1
tvOS: 1
m_BuildTargetGroupLightmapEncodingQuality: []
m_BuildTargetGroupLightmapSettings: []
playModeTestRunnerEnabled: 0
runPlayModeTestAsEditModeTest: 0
actionOnDotNetUnhandledException: 1
enableInternalProfiler: 0
logObjCUncaughtExceptions: 1
enableCrashReportAPI: 0
cameraUsageDescription:
locationUsageDescription:
microphoneUsageDescription:
switchNMETAOverride:
switchNetLibKey:
switchSocketMemoryPoolSize: 6144
switchSocketAllocatorPoolSize: 128
switchSocketConcurrencyLimit: 14
switchScreenResolutionBehavior: 2
switchUseCPUProfiler: 0
switchUseGOLDLinker: 0
switchApplicationID: 0x01004b9000490000
switchNSODependencies:
switchTitleNames_0:
switchTitleNames_1:
switchTitleNames_2:
switchTitleNames_3:
switchTitleNames_4:
switchTitleNames_5:
switchTitleNames_6:
switchTitleNames_7:
switchTitleNames_8:
switchTitleNames_9:
switchTitleNames_10:
switchTitleNames_11:
switchTitleNames_12:
switchTitleNames_13:
switchTitleNames_14:
switchPublisherNames_0:
switchPublisherNames_1:
switchPublisherNames_2:
switchPublisherNames_3:
switchPublisherNames_4:
switchPublisherNames_5:
switchPublisherNames_6:
switchPublisherNames_7:
switchPublisherNames_8:
switchPublisherNames_9:
switchPublisherNames_10:
switchPublisherNames_11:
switchPublisherNames_12:
switchPublisherNames_13:
switchPublisherNames_14:
switchIcons_0: {fileID: 0}
switchIcons_1: {fileID: 0}
switchIcons_2: {fileID: 0}
switchIcons_3: {fileID: 0}
switchIcons_4: {fileID: 0}
switchIcons_5: {fileID: 0}
switchIcons_6: {fileID: 0}
switchIcons_7: {fileID: 0}
switchIcons_8: {fileID: 0}
switchIcons_9: {fileID: 0}
switchIcons_10: {fileID: 0}
switchIcons_11: {fileID: 0}
switchIcons_12: {fileID: 0}
switchIcons_13: {fileID: 0}
switchIcons_14: {fileID: 0}
switchSmallIcons_0: {fileID: 0}
switchSmallIcons_1: {fileID: 0}
switchSmallIcons_2: {fileID: 0}
switchSmallIcons_3: {fileID: 0}
switchSmallIcons_4: {fileID: 0}
switchSmallIcons_5: {fileID: 0}
switchSmallIcons_6: {fileID: 0}
switchSmallIcons_7: {fileID: 0}
switchSmallIcons_8: {fileID: 0}
switchSmallIcons_9: {fileID: 0}
switchSmallIcons_10: {fileID: 0}
switchSmallIcons_11: {fileID: 0}
switchSmallIcons_12: {fileID: 0}
switchSmallIcons_13: {fileID: 0}
switchSmallIcons_14: {fileID: 0}
switchManualHTML:
switchAccessibleURLs:
switchLegalInformation:
switchMainThreadStackSize: 1048576
switchPresenceGroupId:
switchLogoHandling: 0
switchReleaseVersion: 0
switchDisplayVersion: 1.0.0
switchStartupUserAccount: 0
switchTouchScreenUsage: 0
switchSupportedLanguagesMask: 0
switchLogoType: 0
switchApplicationErrorCodeCategory:
switchUserAccountSaveDataSize: 0
switchUserAccountSaveDataJournalSize: 0
switchApplicationAttribute: 0
switchCardSpecSize: -1
switchCardSpecClock: -1
switchRatingsMask: 0
switchRatingsInt_0: 0
switchRatingsInt_1: 0
switchRatingsInt_2: 0
switchRatingsInt_3: 0
switchRatingsInt_4: 0
switchRatingsInt_5: 0
switchRatingsInt_6: 0
switchRatingsInt_7: 0
switchRatingsInt_8: 0
switchRatingsInt_9: 0
switchRatingsInt_10: 0
switchRatingsInt_11: 0
switchRatingsInt_12: 0
switchLocalCommunicationIds_0:
switchLocalCommunicationIds_1:
switchLocalCommunicationIds_2:
switchLocalCommunicationIds_3:
switchLocalCommunicationIds_4:
switchLocalCommunicationIds_5:
switchLocalCommunicationIds_6:
switchLocalCommunicationIds_7:
switchParentalControl: 0
switchAllowsScreenshot: 1
switchAllowsVideoCapturing: 1
switchAllowsRuntimeAddOnContentInstall: 0
switchDataLossConfirmation: 0
switchUserAccountLockEnabled: 0
switchSystemResourceMemory: 16777216
switchSupportedNpadStyles: 22
switchNativeFsCacheSize: 32
switchIsHoldTypeHorizontal: 0
switchSupportedNpadCount: 8
switchSocketConfigEnabled: 0
switchTcpInitialSendBufferSize: 32
switchTcpInitialReceiveBufferSize: 64
switchTcpAutoSendBufferSizeMax: 256
switchTcpAutoReceiveBufferSizeMax: 256
switchUdpSendBufferSize: 9
switchUdpReceiveBufferSize: 42
switchSocketBufferEfficiency: 4
switchSocketInitializeEnabled: 1
switchNetworkInterfaceManagerInitializeEnabled: 1
switchPlayerConnectionEnabled: 1
ps4NPAgeRating: 12
ps4NPTitleSecret:
ps4NPTrophyPackPath:
ps4ParentalLevel: 11
ps4ContentID: ED1633-NPXX51362_00-0000000000000000
ps4Category: 0
ps4MasterVersion: 01.00
ps4AppVersion: 01.00
ps4AppType: 0
ps4ParamSfxPath:
ps4VideoOutPixelFormat: 0
ps4VideoOutInitialWidth: 1920
ps4VideoOutBaseModeInitialWidth: 1920
ps4VideoOutReprojectionRate: 60
ps4PronunciationXMLPath:
ps4PronunciationSIGPath:
ps4BackgroundImagePath:
ps4StartupImagePath:
ps4StartupImagesFolder:
ps4IconImagesFolder:
ps4SaveDataImagePath:
ps4SdkOverride:
ps4BGMPath:
ps4ShareFilePath:
ps4ShareOverlayImagePath:
ps4PrivacyGuardImagePath:
ps4NPtitleDatPath:
ps4RemotePlayKeyAssignment: -1
ps4RemotePlayKeyMappingDir:
ps4PlayTogetherPlayerCount: 0
ps4EnterButtonAssignment: 1
ps4ApplicationParam1: 0
ps4ApplicationParam2: 0
ps4ApplicationParam3: 0
ps4ApplicationParam4: 0
ps4DownloadDataSize: 0
ps4GarlicHeapSize: 2048
ps4ProGarlicHeapSize: 2560
playerPrefsMaxSize: 32768
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
ps4pnSessions: 1
ps4pnPresence: 1
ps4pnFriends: 1
ps4pnGameCustomData: 1
playerPrefsSupport: 0
enableApplicationExit: 0
resetTempFolder: 1
restrictedAudioUsageRights: 0
ps4UseResolutionFallback: 0
ps4ReprojectionSupport: 0
ps4UseAudio3dBackend: 0
ps4UseLowGarlicFragmentationMode: 1
ps4SocialScreenEnabled: 0
ps4ScriptOptimizationLevel: 0
ps4Audio3dVirtualSpeakerCount: 14
ps4attribCpuUsage: 0
ps4PatchPkgPath:
ps4PatchLatestPkgPath:
ps4PatchChangeinfoPath:
ps4PatchDayOne: 0
ps4attribUserManagement: 0
ps4attribMoveSupport: 0
ps4attrib3DSupport: 0
ps4attribShareSupport: 0
ps4attribExclusiveVR: 0
ps4disableAutoHideSplash: 0
ps4videoRecordingFeaturesUsed: 0
ps4contentSearchFeaturesUsed: 0
ps4attribEyeToEyeDistanceSettingVR: 0
ps4IncludedModules: []
ps4attribVROutputEnabled: 0
monoEnv:
splashScreenBackgroundSourceLandscape: {fileID: 0}
splashScreenBackgroundSourcePortrait: {fileID: 0}
blurSplashScreenBackground: 1
spritePackerPolicy:
webGLMemorySize: 16
webGLExceptionSupport: 1
webGLNameFilesAsHashes: 0
webGLDataCaching: 1
webGLDebugSymbols: 0
webGLEmscriptenArgs:
webGLModulesDirectory:
webGLTemplate: APPLICATION:Default
webGLAnalyzeBuildSize: 0
webGLUseEmbeddedResources: 0
webGLCompressionFormat: 1
webGLWasmArithmeticExceptions: 0
webGLLinkerTarget: 1
webGLThreadsSupport: 0
webGLDecompressionFallback: 0
scriptingDefineSymbols: {}
platformArchitecture: {}
scriptingBackend: {}
il2cppCompilerConfiguration: {}
managedStrippingLevel: {}
incrementalIl2cppBuild: {}
allowUnsafeCode: 0
additionalIl2CppArgs:
scriptingRuntimeVersion: 1
gcIncremental: 1
gcWBarrierValidation: 0
apiCompatibilityLevelPerPlatform: {}
m_RenderingPath: 1
m_MobileRenderingPath: 1
metroPackageName: Template_3D
metroPackageVersion:
metroCertificatePath:
metroCertificatePassword:
metroCertificateSubject:
metroCertificateIssuer:
metroCertificateNotAfter: 0000000000000000
metroApplicationDescription: Template_3D
wsaImages: {}
metroTileShortName:
metroTileShowName: 0
metroMediumTileShowName: 0
metroLargeTileShowName: 0
metroWideTileShowName: 0
metroSupportStreamingInstall: 0
metroLastRequiredScene: 0
metroDefaultTileSize: 1
metroTileForegroundText: 2
metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
metroSplashScreenUseBackgroundColor: 0
platformCapabilities: {}
metroTargetDeviceFamilies: {}
metroFTAName:
metroFTAFileTypes: []
metroProtocolName:
XboxOneProductId:
XboxOneUpdateKey:
XboxOneSandboxId:
XboxOneContentId:
XboxOneTitleId:
XboxOneSCId:
XboxOneGameOsOverridePath:
XboxOnePackagingOverridePath:
XboxOneAppManifestOverridePath:
XboxOneVersion: 1.0.0.0
XboxOnePackageEncryption: 0
XboxOnePackageUpdateGranularity: 2
XboxOneDescription:
XboxOneLanguage:
- enus
XboxOneCapability: []
XboxOneGameRating: {}
XboxOneIsContentPackage: 0
XboxOneEnableGPUVariability: 1
XboxOneSockets: {}
XboxOneSplashScreen: {fileID: 0}
XboxOneAllowedProductIds: []
XboxOnePersistentLocalStorageSize: 0
XboxOneXTitleMemory: 8
XboxOneOverrideIdentityName:
XboxOneOverrideIdentityPublisher:
vrEditorSettings:
daydream:
daydreamIconForeground: {fileID: 0}
daydreamIconBackground: {fileID: 0}
cloudServicesEnabled:
UNet: 1
luminIcon:
m_Name:
m_ModelFolderPath:
m_PortalFolderPath:
luminCert:
m_CertPath:
m_SignPackage: 1
luminIsChannelApp: 0
luminVersion:
m_VersionCode: 1
m_VersionName:
apiCompatibilityLevel: 6
cloudProjectId:
framebufferDepthMemorylessMode: 0
projectName:
organizationId:
cloudEnabled: 0
enableNativePlatformBackendsForNewInputSystem: 0
disableOldInputManagerSupport: 0
legacyClampBlendShapeWeights: 0
virtualTexturingSupportEnabled: 0
@@ -0,0 +1,2 @@
m_EditorVersion: 2019.3.13f1
m_EditorVersionWithRevision: 2019.3.13f1 (d4ddf0d95db9)
@@ -0,0 +1,232 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!47 &1
QualitySettings:
m_ObjectHideFlags: 0
serializedVersion: 5
m_CurrentQuality: 5
m_QualitySettings:
- serializedVersion: 2
name: Very Low
pixelLightCount: 0
shadows: 0
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 15
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 1
textureQuality: 1
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 0
lodBias: 0.3
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 4
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Low
pixelLightCount: 0
shadows: 0
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 20
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 0
lodBias: 0.4
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 16
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Medium
pixelLightCount: 1
shadows: 1
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 20
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 1
lodBias: 0.7
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 64
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: High
pixelLightCount: 2
shadows: 2
shadowResolution: 1
shadowProjection: 1
shadowCascades: 2
shadowDistance: 40
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 1
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 256
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Very High
pixelLightCount: 3
shadows: 2
shadowResolution: 2
shadowProjection: 1
shadowCascades: 2
shadowDistance: 70
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 1.5
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 1024
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Ultra
pixelLightCount: 4
shadows: 2
shadowResolution: 2
shadowProjection: 1
shadowCascades: 4
shadowDistance: 150
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 2
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 4096
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
m_PerPlatformDefaultQuality:
Android: 2
Lumin: 5
Nintendo 3DS: 5
Nintendo Switch: 5
PS4: 5
PSP2: 2
Stadia: 5
Standalone: 5
WebGL: 3
Windows Store Apps: 5
XboxOne: 5
iPhone: 2
tvOS: 2
@@ -0,0 +1,43 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!78 &1
TagManager:
serializedVersion: 2
tags: []
layers:
- Default
- TransparentFX
- Ignore Raycast
-
- Water
- UI
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
m_SortingLayers:
- name: Default
uniqueID: 0
locked: 0
@@ -0,0 +1,9 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!5 &1
TimeManager:
m_ObjectHideFlags: 0
Fixed Timestep: 0.02
Maximum Allowed Timestep: 0.33333334
m_TimeScale: 1
Maximum Particle Timestep: 0.03
@@ -0,0 +1,34 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!310 &1
UnityConnectSettings:
m_ObjectHideFlags: 0
serializedVersion: 1
m_Enabled: 0
m_TestMode: 0
m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
m_ConfigUrl: https://config.uca.cloud.unity3d.com
m_TestInitMode: 0
CrashReportingSettings:
m_EventUrl: https://perf-events.cloud.unity3d.com
m_Enabled: 0
m_LogBufferSize: 10
m_CaptureEditorExceptions: 1
UnityPurchasingSettings:
m_Enabled: 0
m_TestMode: 0
UnityAnalyticsSettings:
m_Enabled: 0
m_TestMode: 0
m_InitializeOnStartup: 1
UnityAdsSettings:
m_Enabled: 0
m_InitializeOnStartup: 1
m_TestMode: 0
m_IosGameId:
m_AndroidGameId:
m_GameIds: {}
m_GameId:
PerformanceReportingSettings:
m_Enabled: 0
@@ -0,0 +1,12 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!937362698 &1
VFXManager:
m_ObjectHideFlags: 0
m_IndirectShader: {fileID: 0}
m_CopyBufferShader: {fileID: 0}
m_SortShader: {fileID: 0}
m_StripUpdateShader: {fileID: 0}
m_RenderPipeSettingsPath:
m_FixedTimeStep: 0.016666668
m_MaxDeltaTime: 0.05
@@ -0,0 +1,8 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!890905787 &1
VersionControlSettings:
m_ObjectHideFlags: 0
m_Mode: Visible Meta Files
m_CollabEditorSettings:
inProgressEnabled: 1
@@ -0,0 +1,10 @@
{
"m_SettingKeys": [
"VR Device Disabled",
"VR Device User Alert"
],
"m_SettingValues": [
"False",
"False"
]
}