public void AddTree(EdgeTree tree) { edgeTreeList.Add(tree); }
/// <summary> /// 根据给定的长和宽初始化纸张 /// </summary> /// <param name="width"></param> /// <param name="height"></param> public void Initialize(float width, float height) { Vertex.Vertex_count = 0; Face.Face_count = 0; Edge.Edge_count = 0; faceLayer = new FaceLayer(); edgeLayer = new EdgeLayer(); vertexLayer = new VertexLayer(); // Create 4 original vertices Vertex[] vertices = new Vertex[4]; vertices[0] = new Vertex(-width / 2, height / 2, 0); vertices[1] = new Vertex(-width / 2, -height / 2, 0); vertices[2] = new Vertex(width / 2, -height / 2, 0); vertices[3] = new Vertex(width / 2, height / 2, 0); // 初始化纹理坐标 vertices[0].u = 0; vertices[0].v = 0; vertices[1].u = 0; vertices[1].v = 1; vertices[2].u = 1; vertices[2].v = 1; vertices[3].u = 1; vertices[3].v = 0; // add to vertex layer foreach (Vertex v in vertices) { vertexLayer.InsertVertex(v); renderController.AddVisualInfoToVertex(v); } // create a face Face face = new Face(0); // creates 4 edges Edge[] edges = new Edge[4]; // create one face and four edges for (int i = 0; i < 4; i++) { edges[i] = new Edge(vertices[i], vertices[i + 1 < 4 ? i + 1 : 0]); EdgeTree tree = new EdgeTree(edges[i]); edgeLayer.AddTree(tree); face.AddEdge(edges[i]); edges[i].Face1 = face; } // use root to initialize facecell tree and lookuptable faceLayer.Initliaze(face); face.UpdateVertices(); faceLayer.UpdateLeaves(); faceGroupLookupTable = new FaceGroupLookupTable(face); // 此处也应该拍一张快照 SnapshotNode node = new SnapshotNode(faceLayer.Leaves); // 为了方便revert设计,详情联系 ET node.Type = SnapshotNodeKind.CutKind; node.OriginVertexListCount = vertexLayer.VertexCellTable.Count; node.OriginEdgeListCount = edgeLayer.Count; shadowSystem.Snapshot(node); // 调用渲染层,更新纸张 CreatePaper(face); }
void _EdgeLayer() { if (!ReadHeader("Edge Layer")) return; int number = reader.ReadInt32(); for (int i = 0; i < number; i++) { EdgeTree tree = new EdgeTree(EdgeTree()); edgeLayer.AddTree(tree); } }
public void Initialize(float width, float height) { // Create 4 original vertices Vertex[] vertices = new Vertex[4]; vertices[0] = new Vertex(-width / 2, height / 2, 0); vertices[1] = new Vertex(width / 2, height / 2, 0); vertices[2] = new Vertex(width / 2, -height / 2, 0); vertices[3] = new Vertex(-width / 2, -height / 2, 0); // add to vertex layer foreach (Vertex v in vertices) { vertexLayer.InsertVertex(v); } // create a face Face face = new Face(); // creates 4 edges Edge[] edges = new Edge[4]; // create one face and four edges for (int i = 0; i < 4; i++) { edges[i] = new Edge(vertices[i], vertices[i + 1 < 4 ? i + 1 : 0]); EdgeTree tree = new EdgeTree(edges[i]); edgeLayer.AddTree(tree); face.AddEdge(edges[i]); } // use root to initialize facecell tree and lookuptable faceLayer.Initliaze(face); }