Example #1
0
        public static Vertex2D Create(GeometryEditor editor, Vertex2D vertex1, Vertex2D vertex2, ViewSide viewSide)
        {
            var vertex2D = CreateBase <Vertex2D>(editor);

            vertex2D.Vertex1  = vertex1;
            vertex2D.Vertex2  = vertex2;
            vertex2D.ViewSide = viewSide;

            vertex2D.transform.position = vertex2D.GetPosition();
            vertex2D.PositionLastFrame  = vertex2D.GetPosition();

            editor.Vertices2D.Add(vertex2D);
            vertex2D.name += $" {editor.Vertices2D.IndexOf(vertex2D)}";

            return(vertex2D);
        }
Example #2
0
        /// <summary>
        /// Sets up this editor using cube shaped geometry.
        /// </summary>
        /// <param name="position">The position to create the cube.</param>
        protected void SetupCubeEditing(Vector3 position)
        {
            const float cubeSize = 3f;

            // GeometryEditor always starts as a cube
            // This creates eight vertices in a cube shape
            Vertex.Create(this, position + new Vector3(cubeSize, cubeSize, cubeSize));
            Vertex.Create(this, position + new Vector3(-cubeSize, cubeSize, cubeSize));
            Vertex.Create(this, position + new Vector3(cubeSize, cubeSize, -cubeSize));
            Vertex.Create(this, position + new Vector3(-cubeSize, cubeSize, -cubeSize));

            Vertex.Create(this, position + new Vector3(cubeSize, -cubeSize, cubeSize));
            Vertex.Create(this, position + new Vector3(-cubeSize, -cubeSize, cubeSize));
            Vertex.Create(this, position + new Vector3(cubeSize, -cubeSize, -cubeSize));
            Vertex.Create(this, position + new Vector3(-cubeSize, -cubeSize, -cubeSize));

            // Create the edges of the cube
            Edge.Create(this, Vertices[0], Vertices[1]);
            Edge.Create(this, Vertices[0], Vertices[2]);
            Edge.Create(this, Vertices[1], Vertices[3]);
            Edge.Create(this, Vertices[2], Vertices[3]);

            Edge.Create(this, Vertices[4], Vertices[5]);
            Edge.Create(this, Vertices[4], Vertices[6]);
            Edge.Create(this, Vertices[5], Vertices[7]);
            Edge.Create(this, Vertices[6], Vertices[7]);

            Edge.Create(this, Vertices[0], Vertices[4]);
            Edge.Create(this, Vertices[1], Vertices[5]);
            Edge.Create(this, Vertices[2], Vertices[6]);
            Edge.Create(this, Vertices[3], Vertices[7]);

            // Create the face objects
            // Order of vertices within triangles is important, defines normals, UVs
            var top    = Face4.Create(this, new Triangle(Vertices[0], Vertices[2], Vertices[1]), new Triangle(Vertices[2], Vertices[3], Vertices[1]));  // top
            var bottom = Face4.Create(this, new Triangle(Vertices[6], Vertices[4], Vertices[7]), new Triangle(Vertices[4], Vertices[5], Vertices[7]));  // bottom

            var front = Face4.Create(this, new Triangle(Vertices[6], Vertices[2], Vertices[4]), new Triangle(Vertices[2], Vertices[0], Vertices[4]));   // front
            var back  = Face4.Create(this, new Triangle(Vertices[5], Vertices[1], Vertices[7]), new Triangle(Vertices[1], Vertices[3], Vertices[7]));   // back

            var left  = Face4.Create(this, new Triangle(Vertices[4], Vertices[0], Vertices[5]), new Triangle(Vertices[0], Vertices[1], Vertices[5]));   // right
            var right = Face4.Create(this, new Triangle(Vertices[7], Vertices[3], Vertices[6]), new Triangle(Vertices[3], Vertices[2], Vertices[6]));   // left

            // Create elements used for 2D editing
            const float offset = 1f;

            Vertex2D.Create(this, front, ViewSide.Top | ViewSide.Front, new Vector3(offset, 0f, 0f));
            Vertex2D.Create(this, back, ViewSide.Top | ViewSide.Front, new Vector3(-offset, 0f, 0f));

            Vertex2D.Create(this, left, ViewSide.Top | ViewSide.Side, new Vector3(0f, 0f, offset));
            Vertex2D.Create(this, right, ViewSide.Top | ViewSide.Side, new Vector3(0f, 0f, -offset));

            Vertex2D.Create(this, top, ViewSide.Front | ViewSide.Side, new Vector3(0f, offset, 0f));
            Vertex2D.Create(this, bottom, ViewSide.Front | ViewSide.Side, new Vector3(0f, -offset, 0f));

            //Vertex2D.Create(this, dbottom, dright, ViewSide.Top);

            // Create anchor point
            Anchor = Anchor.Create(this);
            Selection.activeGameObject = Anchor.gameObject;

            // Create mesh preview tool
            MeshPreview = MeshPreview.Create(this);
        }