Exemplo n.º 1
0
        public override MeshDraft Construct(Vector2 parentLayoutOrigin)
        {
            List <Vector2> roofPolygon2;
            List <Vector3> roofPolygon3;
            var            roofDraft = ConstructRoofBase(out roofPolygon2, out roofPolygon3);

            var skeletonGenerator = new StraightSkeletonGenerator();
            var skeleton          = skeletonGenerator.Generate(roofPolygon2);

            var roofTop = new MeshDraft();

            foreach (var skeletonPolygon2 in skeleton.polygons)
            {
                if (skeletonPolygon2.Count == 3)
                {
                    roofTop.Add(ConstructGableDraft(skeletonPolygon2, RoofPitch));
                }
                else
                {
                    roofTop.Add(ConstructContourDraft(skeletonPolygon2, RoofPitch));
                }
            }
            roofTop.Move(Vector3.up * roofConfig.thickness);

            roofDraft.Add(roofTop)
            .Paint(roofColor);
            return(roofDraft);
        }
Exemplo n.º 2
0
        private static void TestEquality(List <Vector2> vertices, List <List <Vector2> > expectedSkeleton)
        {
            var generator = new StraightSkeletonGenerator();
            var skeleton  = generator.Generate(vertices);

            Assert.AreEqual(expectedSkeleton.Count, skeleton.polygons.Count);

            for (int polygonIndex = 0; polygonIndex < expectedSkeleton.Count; polygonIndex++)
            {
                var expectedPolygon = expectedSkeleton[polygonIndex];
                var polygon         = skeleton.polygons[polygonIndex];

                Assert.AreEqual(expectedPolygon.Count, polygon.Count);

                for (int vertexIndex = 0; vertexIndex < expectedPolygon.Count; vertexIndex++)
                {
                    Vector2 expectedVertex = expectedPolygon[vertexIndex];
                    Vector2 vertex         = polygon[vertexIndex];

                    AreEqual(vertex, expectedVertex);
                }
            }
        }