Example #1
0
    static Mesh GenerateMesh(BSPModelGeometry geometry)
    {
        List <Vector3> vertices  = new List <Vector3>();
        List <int>     triangles = new List <int>();
        List <Vector2> uvs       = new List <Vector2>();

        var g = geometry.mesh;

        for (int vi = 0, ti = 0; vi < g.vertices.Length; vi += 3, ti += 3)
        {
            vertices.Add(BSPFile.TransformVector(g.vertices[vi + 0]));
            vertices.Add(BSPFile.TransformVector(g.vertices[vi + 1]));
            vertices.Add(BSPFile.TransformVector(g.vertices[vi + 2]));

            uvs.Add(g.uvs[vi + 0]);
            uvs.Add(g.uvs[vi + 1]);
            uvs.Add(g.uvs[vi + 2]);

            triangles.Add(ti + 2);
            triangles.Add(ti + 1);
            triangles.Add(ti + 0);
        }

        Mesh mesh = new Mesh();

        mesh.name      = "Brush Mesh";
        mesh.vertices  = vertices.ToArray();
        mesh.uv        = uvs.ToArray();
        mesh.triangles = triangles.ToArray();
        mesh.RecalculateNormals();
        return(mesh);
    }
Example #2
0
    static void GenerateBrush(BSPFile bsp, GameObject brush, BSPModelGeometry geometry, IList <Material> materials)
    {
        var mesh = GenerateMesh(geometry);

        var meshFilter = brush.GetComponent <MeshFilter>();

        meshFilter.sharedMesh = mesh;

        var meshRenderer = brush.GetComponent <MeshRenderer>();

        meshRenderer.material = materials[(int)geometry.tex_id];
    }