public static void SubmeshIndexes_AreMappedToCorrectMaterial() { var mesh = ShapeGenerator.CreateShape(ShapeType.Cube); mesh.renderer.sharedMaterials = new Material[2] { TestUtility.redMaterial, TestUtility.blueMaterial }; mesh.facesInternal[0].submeshIndex = 1; mesh.ToMesh(); var submesh0 = mesh.facesInternal.Where((x, i) => i > 0).SelectMany(y => y.indexes).ToArray(); var submesh1 = mesh.facesInternal[0].indexes; var compiled0 = mesh.mesh.GetTriangles(0); var compiled1 = mesh.mesh.GetTriangles(1); TestUtility.AssertSequenceEqual(submesh0, compiled0); TestUtility.AssertSequenceEqual(submesh1, compiled1); UObject.DestroyImmediate(mesh); }
public static void SubmeshIndexes_AreClamped() { var mesh = ShapeGenerator.CreateShape(ShapeType.Cube); mesh.renderer.sharedMaterials = new Material[3] { TestUtility.redMaterial, TestUtility.blueMaterial, TestUtility.greenMaterial }; // Should map to 0 mesh.facesInternal[0].submeshIndex = -1; // Should map to 1 mesh.facesInternal[1].submeshIndex = 1; // Should map to 2 mesh.facesInternal[2].submeshIndex = 10; mesh.ToMesh(); Assert.AreEqual(3, mesh.mesh.subMeshCount); var submesh0 = mesh.facesInternal.Where((x, i) => i != 1 && i != 2).SelectMany(y => y.indexes).ToArray(); var submesh1 = mesh.facesInternal[1].indexes; var submesh2 = mesh.facesInternal[2].indexes; var compiled0 = mesh.mesh.GetTriangles(0); var compiled1 = mesh.mesh.GetTriangles(1); var compiled2 = mesh.mesh.GetTriangles(2); TestUtility.AssertSequenceEqual(submesh0, compiled0); TestUtility.AssertSequenceEqual(submesh1, compiled1); TestUtility.AssertSequenceEqual(submesh2, compiled2); UObject.DestroyImmediate(mesh); }