public EdgeView GetEdgeViewByPortIndex(int outportIndex)
        {
            string edgeViewId = SerializedNode
                                .FindPropertyRelative(ANode.OutportsVarName)
                                .GetArrayElementAtIndex(outportIndex)
                                .FindPropertyRelative(OutportEdge.IdVarName)
                                .stringValue;

            return(m_edgeViews[edgeViewId]);
        }
 public void AddEdge(EdgeView edgeView)
 {
     if (edgeView.FirstPort.Node == this)
     {
         SerializedProperty outportsProp   = SerializedNode.FindPropertyRelative(ANode.OutportsVarName);
         SerializedProperty newOutportProp = outportsProp.GetArrayElementAtIndex(edgeView.FirstPort.PortIndex);
         newOutportProp.FindPropertyRelative(OutportEdge.ConnectedNodeIdVarName).stringValue = edgeView.SecondPort.Node.NodeId;
         newOutportProp.serializedObject.ApplyModifiedProperties();
         edgeView.OutportEdgeProp = newOutportProp;
     }
     AddEdgeView(edgeView);
 }
 public void RemoveEdge(EdgeView edgeView)
 {
     if (edgeView.FirstPort.Node == this)
     {
         edgeView.FirstPort.Disconnect(edgeView);
         edgeView.SecondPort.Node.RemoveEdge(edgeView);
         m_nodeGraphView.RemoveElement(edgeView);
         m_edgeViews.Remove(edgeView.EdgeId);
         OutportEdge.SetInvalid(SerializedNode.FindPropertyRelative(ANode.OutportsVarName)
                                .GetArrayElementAtIndex(edgeView.FirstPort.PortIndex));
     }
     else if (edgeView.SecondPort.Node == this)
     {
         edgeView.SecondPort.Disconnect(edgeView);
     }
 }
 public void CreateOutports()
 {
     m_outports.Clear();
     for (int j = 0; j < SerializedNode.FindPropertyRelative(ANode.OutportsVarName).arraySize; j++)
     {
         PortView newPort = new PortView(this,
                                         Orientation.Horizontal,
                                         Direction.Output,
                                         Port.Capacity.Single,
                                         typeof(bool),
                                         j,
                                         m_nodeViewDrawer.NodeColor,
                                         m_edgeConnectorListener);
         newPort.portName = "";
         m_outports.Add(newPort);
     }
 }
        public void OnLoadView()
        {
            m_nodeGraphView.OnBlackboardElementChanged += HandleOnBlackboardElementChanged;

            SerializedProperty outports = SerializedNode.FindPropertyRelative(ANode.OutportsVarName);

            for (int k = 0; k < outports.arraySize; k++)
            {
                SerializedProperty outportProp = outports.GetArrayElementAtIndex(k);
                if (!OutportEdge.IsValid(outportProp))
                {
                    continue;
                }
                EdgeView edgeView = new EdgeView()
                {
                    OutportEdgeProp = outportProp,
                    input           = m_nodeGraphView.GetNodeViewById(outportProp.FindPropertyRelative(OutportEdge.ConnectedNodeIdVarName).stringValue).m_inport,
                    output          = m_outports[k],
                };
                edgeView.Setup();
                AddEdgeView(edgeView);
            }
        }
 public void UpdateNodeDataPosition()
 {
     SerializedNode.FindPropertyRelative(ANode.PositionVarName).vector2Value = this.GetPosition().position;
     SerializedNode.serializedObject.ApplyModifiedProperties();
 }
 public bool OutportHasEdge(int outportIndex)
 {
     return(OutportEdge.IsValid(SerializedNode.FindPropertyRelative(ANode.OutportsVarName).GetArrayElementAtIndex(outportIndex)));
 }