示例#1
0
        public FsmGraphView(FsmGraphObject fsmGraphObject)
        {
            VisualElementExtensions.AddManipulator(this, new ContentDragger());
            VisualElementExtensions.AddManipulator(this, new SelectionDragger());
            style.flexGrow = 1f;

            foreach (StateInstanceNode node in fsmGraphObject.GetNodes())
            {
                StateInstanceNodeView nodeView = new StateInstanceNodeView(node);
                nodeView.SetPosition(FindPosition(nodeView));

                nodeViews.Add(node.stateInstance.name, nodeView);
                AddElement(nodeView);
            }

            foreach (TransitionInstanceEdge transitionEdge in fsmGraphObject.edges)
            {
                TransitionEdgeView transitionView = new TransitionEdgeView(transitionEdge)
                {
                    input  = nodeViews[transitionEdge.transitionInstance.originState].inputPort,
                    output = nodeViews[transitionEdge.transitionInstance.targetState].outputPort
                };

                AddElement(transitionView);
            }
        }
示例#2
0
        private Rect FindPosition(StateInstanceNodeView nodeView)
        {
            Rect position = nodeView.GetPosition();

            position.x += 150f * (nodes.ToList().Count % 2);
            position.y += 150f * (nodes.ToList().Count / 2);
            return(position);
        }