Beispiel #1
0
    public void MakeTesselatedPlane(int xRes, int yRes, int size, Material material)
    {
        var vb = new VertexBuffer();

        vb.Init(true);

        for (int x = 0; x <= xRes; x++)
        {
            for (int y = 0; y <= yRes; y++)
            {
                var uv  = new Vector2(x / (float)xRes, y / (float)yRes);
                var pos = uv - new Vector2(0.5f, 0.5f);
                vb.Add(new Vertex(new Vector3(pos.x * size, pos.y * size, 0), Vector3.Down, Vector3.Right, uv));
            }
        }

        for (int y = 0; y < yRes; y++)
        {
            for (int x = 0; x < xRes; x++)
            {
                var i = y + (x * yRes);

                vb.AddRawIndex(i + yRes + 1);
                vb.AddRawIndex(i + 1);
                vb.AddRawIndex(i);

                vb.AddRawIndex(i + 1);
                vb.AddRawIndex(i + yRes + 1);
                vb.AddRawIndex(i + yRes + 2);
            }
        }

        var model = vb.CreateModel($"TesselatedPlane-{NetworkIdent}.vmdl", material);

        SetModel(model);
    }