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); }