Fupixel.ApplySettings C# (CSharp) Method

ApplySettings() public method

public ApplySettings ( ) : void
return void
    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);
    }