Esempio n. 1
0
    public static void Extrude_MultipleEdges_CreatesValidGeometry()
    {
        var pb = ShapeGenerator.CreateShape(ShapeType.Cube);

        try
        {
            int vertexCount = pb.vertexCount;
            UnityEngine.ProBuilder.Edge[] edges = new UnityEngine.ProBuilder.Edge[pb.faceCount];
            for (int i = 0; i < pb.faceCount; i++)
            {
                edges[i] = pb.facesInternal[i].edgesInternal[m_Random.Next(0, pb.facesInternal[i].edgesInternal.Length)];
            }
            // as group, enable manifold extrude
            Assert.IsFalse(pb.Extrude(edges, .5f, true, false) != null, "Do not allow manifold edge extrude");
            Assert.IsTrue(pb.Extrude(edges, .5f, true, true) != null, "Do allow manifold edge extrude");
            pb.ToMesh();
            pb.Refresh();
            TestUtility.AssertMeshAttributesValid(pb.mesh);
            Assert.AreEqual(vertexCount + edges.Length * 4, pb.vertexCount);
        }
        finally
        {
            UObject.DestroyImmediate(pb.gameObject);
        }
    }
Esempio n. 2
0
    public static void Extrude_OneEdge_CreatesValidGeometry()
    {
        var pb = ShapeFactory.Instantiate <Cube>();

        try
        {
            int    vertexCount = pb.vertexCount;
            Edge[] edges       = new UnityEngine.ProBuilder.Edge[1];
            Face   face        = pb.facesInternal[m_Random.Next(0, pb.faceCount)];
            edges[0] = face.edgesInternal[m_Random.Next(0, face.edgesInternal.Length)];
            // as group, enable manifold extrude
            Assert.IsFalse(pb.Extrude(edges, .5f, true, false) != null, "Do not allow manifold edge extrude");
            Assert.IsTrue(pb.Extrude(edges, .5f, true, true) != null, "Do allow manifold edge extrude");
            pb.ToMesh();
            pb.Refresh();
            TestUtility.AssertMeshAttributesValid(pb.mesh);
            Assert.AreEqual(vertexCount + edges.Length * 4, pb.vertexCount);
        }
        finally
        {
            UObject.DestroyImmediate(pb.gameObject);
        }
    }
 public void SetSingleEdge(Edge edge)
 {
     edges.Clear();
     edges.Add(edge);
 }