Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }