public void ApplySettings()
{
if (width < 4 || height < 4)
return;
MeshFilter meshFilter = GetComponent<MeshFilter>();
if (meshFilter == null)
meshFilter = gameObject.AddComponent<MeshFilter>();
MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
if (meshRenderer == null)
meshRenderer = gameObject.AddComponent<MeshRenderer>();
Mesh mesh = meshFilter.sharedMesh;
if (mesh == null)
mesh = new Mesh();
Vector3[] verts = new Vector3[4];
Vector2[] uv = new Vector2[4];
int[] triangles = new int[6];
int u = 0;
uv[u++] = new Vector2(0f, 0f);
uv[u++] = new Vector2(1f, 0f);
uv[u++] = new Vector2(1f, 1f);
uv[u++] = new Vector2(0f, 1f);
int v = 0;
verts[v++] = new Vector2(0f, 0f);
verts[v++] = new Vector2(1f, 0f);
verts[v++] = new Vector2(1f, 1f);
verts[v++] = new Vector2(0f, 1f);
int t = 0;
triangles[t++] = 0;
triangles[t++] = 1;
triangles[t++] = 2;
triangles[t++] = 0;
triangles[t++] = 2;
triangles[t++] = 3;
mesh.vertices = verts;
mesh.uv = uv;
mesh.triangles = triangles;
meshFilter.sharedMesh = mesh;
if (texture != null)
DestroyImmediate(texture);
texture = new Texture2D(width, height, TextureFormat.ARGB32, false);
texture.filterMode = FilterMode.Point;
pixels = new Color32[width * height];
for (int x = 0; x < width; x++)
{
pixels[x] = new Color32(255, 255, 255, 255);
pixels[width * height - x - 1] = new Color32(255, 255, 255, 255);
}
for (int y = 0; y < height; y++)
{
pixels[y * width] = new Color32(255, 255, 255, 255);
pixels[(y + 1) * width - 1] = new Color32(255, 255, 255, 255);
}
texture.SetPixels32(pixels);
texture.Apply();
if (meshRenderer.sharedMaterials.Length == 0)
meshRenderer.sharedMaterials = new Material[1];
if (meshRenderer.sharedMaterials[0] == null)
{
Material[] materials = meshRenderer.sharedMaterials;
materials[0] = new Material(Shader.Find("Fupixel"));
meshRenderer.sharedMaterials = materials;
}
if (Camera.mainCamera != null)
{
transform.position = Camera.mainCamera.transform.position + Camera.mainCamera.transform.forward;
Camera.mainCamera.clearFlags = CameraClearFlags.Nothing;
}
mesh.name = "Fupixel Mesh";
mesh.bounds = new Bounds(Vector3.zero, new Vector3(100000f, 100000f, 100000f));
meshRenderer.sharedMaterials[0].SetTexture("_MainTex", texture);
}