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); }
/// <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); }