Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
 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("请设置好目标、参考、以及相对值");
            }
        }