public DirectedGraphVisualizer convertToDirectedVisualization(Graph graph) { DirectedGraphVisualizer dataGraph = new DirectedGraphVisualizer(); foreach (GraphPart part in graph.GraphPart) { NodeV nodeV = new NodeV() { Label = part.Node.Label, Uid = part.Node.Uid, ID = part.Node.Id }; dataGraph.AddVertex(nodeV); } var nodes = dataGraph.Vertices.ToList(); foreach (GraphPart part in graph.GraphPart) { foreach (Edge edge in part.Edge) { EdgeV edgeV = new EdgeV() { Source = findNode(nodes, part.Node.Id), Target = findNode(nodes, edge.Destination.Id), ID = edge.Id, Uid = edge.Uid, Weight = edge.Weight, }; dataGraph.AddEdge(edgeV); } } return(dataGraph); }
private float GetWorldOffset(EdgeV edgeV) { if (edgeV.OffsetUnit == UnitType.World) { return(edgeV.Offset); } else if (edgeV.OffsetUnit == UnitType.Self) { return(edgeV.Offset * _rectTran.lossyScale.y); } else { return(edgeV.Offset * edgeV.Ref.lossyScale.y); } }
private float GetWBaseV(EdgeV edge) { if (edge.Anchor == RectAnchorV.None) { return(GetWorldRect(edge.Ref).yMin + GetWorldOffset(edge)); } else if (edge.Anchor == RectAnchorV.Bottom) { return(GetWorldRect(edge.Ref).yMin + GetWorldOffset(edge)); } else { return(GetWorldRect(edge.Ref).yMax + GetWorldOffset(edge)); } }
private void OnGUI() { GUILayout.BeginVertical(); GUILayout.Space(20); _tar = (RectTransform)EditorGUILayout.ObjectField("目标", _tar, typeof(RectTransform), true); _tarEdge = (Edge)EditorGUILayout.EnumPopup("目标边:", _tarEdge); GUILayout.Space(20); _ref = (RectTransform)EditorGUILayout.ObjectField("参考", _ref, typeof(RectTransform), true); if (_tarEdge == Edge.Left || _tarEdge == Edge.Right) { _refEdge0 = (EdgeH)EditorGUILayout.EnumPopup("参考边:", _refEdge0); } else { _refEdge1 = (EdgeV)EditorGUILayout.EnumPopup("参考边:", _refEdge1); } GUILayout.Space(20); _keepPos = GUILayout.Toggle(_keepPos, "保持目标位置"); GUILayout.Space(20); _val = EditorGUILayout.FloatField("相对值", _val); GUILayout.Space(20); GUILayout.EndVertical(); if (_tar != null && _ref != null) { if (GUILayout.Button("应用")) { Apply(); } } else { GUILayout.Label("请设置好目标、参考、以及相对值"); } }