Пример #1
0
        void Extend(PointList points, MeshBuilder builder)
        {
            Vector3   n       = points.ComputeNormal();
            PointList pointsB = points.Translate(0.4f * n.normalized);

            builder.Cap(points.Bridge(pointsB, PointList.BridgeMode.CloseReuse));
            DigHole(pointsB, builder);
        }
Пример #2
0
        void DigHole(PointList points, MeshBuilder builder)
        {
            Vector3   n       = points.ComputeNormal();
            PointList pointsC = points.Scale(0.5f);
            PointList pointsD = pointsC.Translate(-0.1f * n.normalized);

            builder.Cap(points.Bridge(pointsC, PointList.BridgeMode.CloseReuse));
            builder.Cap(pointsC.Bridge(pointsD, PointList.BridgeMode.CloseReuse));
            builder.Cap(pointsD);
        }
Пример #3
0
        //
        //
        //
        public static Mesh BuildCylinder(Axis axis, float radius, float height, int sides)
        {
            MeshBuilder builder = new MeshBuilder();

            PointList pointsA = CreatePolygon(axis, radius, sides, -0.5f * height);
            PointList pointsB = pointsA.Translate(height * Vector(axis));

            builder.Cap(pointsA.Reverse());
            builder.Cap(pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse));
            builder.Cap(pointsB);

            return(builder.Build());
        }
Пример #4
0
        private GameObject CreatePentagonUp(float x, float z)
        {
            GameObject obj = CreateChild(x, z);

            MeshBuilder builder = new MeshBuilder();
            PointList   pointsA = PrimitiveBuilder.CreateUnitPolygon(5);
            PointList   pointsB = pointsA.Translate(new Vector3(0f, 1f, 0f));

            builder.Cap(pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse));
            builder.Cap(pointsB);
            builder.Cap(pointsA.Reverse());
            Mesh mesh = builder.Build();

            NodeBuilder.SetMesh(obj, mesh);
            return(obj);
        }
Пример #5
0
        //
        // Axis Aligned Box
        //
        public static Mesh BuildBox(float xMin, float xMax, float yMin, float yMax, float zMin, float zMax)
        {
            MeshBuilder builder = new MeshBuilder();

            PointList pointsA = new PointList();

            pointsA.Add(xMin, yMin, zMin);
            pointsA.Add(xMin, yMin, zMax);
            pointsA.Add(xMax, yMin, zMax);
            pointsA.Add(xMax, yMin, zMin);

            PointList pointsB = pointsA.Translate(new Vector3(0f, yMax - yMin, 0f));

            builder.Cap(pointsA.Reverse());
            builder.Cap(pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse));
            builder.Cap(pointsB);

            return(builder.Build());
        }
Пример #6
0
        void Start()
        {
            MeshBuilder builder = new MeshBuilder();

            PointList        pointsZ = PrimitiveBuilder.CreateUnitTile();
            PointList        pointsA = pointsZ.Translate(new Vector3(0f, -0.5f, 0f));
            PointList        pointsB = pointsA.Translate(Vector3.up);
            List <PointList> list    = pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse);

            list.Add(pointsA.Reverse());
            list.Add(pointsB);
            foreach (PointList points in list)
            {
                SphereSide(points, builder, 5);
            }
            Mesh mesh = builder.Build();

            NodeBuilder.SetMesh(gameObject, mesh);
        }
Пример #7
0
        private GameObject CreateUnitTileUp(float x, float z)
        {
            GameObject obj = CreateChild(x, z);

            PointList pointsA = PrimitiveBuilder.CreateUnitTile();
            PointList pointsB = pointsA.Translate(Vector3.up);

            List <PointList> list = pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse);

            MeshBuilder builder = new MeshBuilder();

            builder.Cap(list);
            builder.Cap(pointsB);
            builder.Cap(pointsA.Reverse());
            Mesh mesh = builder.Build();

            NodeBuilder.SetMesh(obj, mesh);
            return(obj);
        }
Пример #8
0
        void Start()
        {
            PointList        pointsA = PrimitiveBuilder.CreateUnitTile();
            PointList        pointsB = pointsA.Translate(0.2f * Vector3.up);
            List <PointList> list    = pointsB.Divide(3, 3);

            MeshBuilder builder = new MeshBuilder();

            builder.Cap(pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse));

            foreach (PointList points in list)
            {
                DigHole(points, builder);
            }

            builder.Cap(pointsA.Reverse());
            Mesh mesh = builder.Build();

            NodeBuilder.SetMesh(gameObject, mesh);
        }
Пример #9
0
        private GameObject CreatePentagonHop(float x, float z)
        {
            GameObject obj = CreateChild(x, z);

            MeshBuilder      builder = new MeshBuilder();
            PointList        pointsA = PrimitiveBuilder.CreateUnitPolygon(5);
            PointList        pointsB = pointsA.Translate(new Vector3(0f, 1f, 0f));
            List <PointList> list    = pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse);

            list.Add(pointsB);
            list.Add(pointsA.Reverse());
            foreach (PointList points in list)
            {
                Extend(points, builder);
            }
            Mesh mesh = builder.Build();

            NodeBuilder.SetMesh(obj, mesh);
            return(obj);
        }
Пример #10
0
        void Start()
        {
            MeshBuilder builder = new MeshBuilder();

            // Create a cube
            PointList        pointsA = PrimitiveBuilder.CreateUnitTile();
            PointList        pointsB = pointsA.Translate(Vector3.up);
            List <PointList> list    = pointsA.Bridge(pointsB, PointList.BridgeMode.CloseReuse);

            list.Add(pointsA.Reverse());
            list.Add(pointsB);

            // Call Branch() on each face
            foreach (PointList points in list)
            {
                Branch(points, builder, 5);
            }
            Mesh mesh = builder.Build();

            NodeBuilder.SetMesh(gameObject, mesh);
        }