Example #1
0
    public Mesh GenerateMesh(int w)
    {
        width   = w;
        halfPix = 0.5f / width;

        Mesh m = new Mesh();

        int pixls = width * width;

        verts = new vert[pixls * 4];
        tris.Clear();

        Vector3[]      fverts = new Vector3[verts.Length];
        List <Vector4> uvs    = new List <Vector4>();//[verts.Length];

        for (int i = 0; i < verts.Length; i++)
        {
            uvs.Add(new Vector4());
        }

        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < width; y++)
            {
                for (int p = 0; p < 4; p++)
                {
                    int ind = getIndOf(x, y, (picV)p);
                    verts[ind]  = new vert(x, y, (picV)p, thickness);
                    fverts[ind] = verts[ind].pos;
                    uvs[ind]    = verts[ind].uv;
                }

                FillPixel(x, y);
                if (thickness > 0)
                {
                    thickness = Mathf.Min(thickness, 0.9f);
                    if (x < width - 1)
                    {
                        JoinRight(x, y);
                    }
                    if (y < width - 1)
                    {
                        JoinDown(x, y);
                    }
                    if ((x < width - 1) && (y < width - 1))
                    {
                        JoinDiagonal(x, y);
                    }
                }
            }
        }

        m.vertices = fverts;
        m.SetUVs(0, uvs);
        m.triangles = tris.ToArray();

        //m.UploadMeshData(false);

        return(m);
    }
Example #2
0
 var(vert, hor) = ((nextVerDir, verCurrent.power), (nextHorDir, horCurrent.power));