static void Build14(int gridSize, out VertexModifier vertexModifier, out Dictionary<string, MeshRebuilder> rebuilders)
{
List<Vector3B> vertices = new List<Vector3B>();
for (int y = 0; y < gridSize; ++y)
for (int x = 0; x < gridSize; ++x)
vertices.Add(new Vector3B(2 * x, 0, 2 * y));
List<int> triangles = new List<int>();
for (int y = 0; y < gridSize - 1; ++y)
for (int x = 0; x < gridSize - 1; ++x)
{
triangles.Add(gridSize * (y) + (x));
triangles.Add(gridSize * (y) + (x + 1));
triangles.Add(gridSize * (y + 1) + (x + 1));
triangles.Add(gridSize * (y) + (x));
triangles.Add(gridSize * (y + 1) + (x + 1));
triangles.Add(gridSize * (y + 1) + (x));
}
var physicsMesh = new BEPUphysics.BroadPhaseEntries.StaticMesh(vertices.ToArray(), triangles.ToArray(), BEPUutilities.AffineTransform.Identity);
vertexModifier = (Random random) =>
{
for (int vertexIndex = 0; vertexIndex < physicsMesh.Mesh.Data.Vertices.Length; ++vertexIndex)
physicsMesh.Mesh.Data.Vertices[vertexIndex].Y = (float)random.NextDouble() * 2;
};
rebuilders = new Dictionary<string, MeshRebuilder>();
rebuilders.Add("v1.4.0 Reconstruct", (i) =>
{
physicsMesh.Mesh.Tree.Reconstruct();
physicsMesh.UpdateBoundingBox();
});
rebuilders.Add("v1.4.0 Refit", (i) =>
{
physicsMesh.Mesh.Tree.Refit();
physicsMesh.UpdateBoundingBox();
});
}