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