public static BTreeNodeDesigner CreateBTreeNodeDesigner(BTreeEditorNodeConfig[] _configNodes, BTreeEditorNode[] _editorNodes, ref BTreeNodeDesigner[] _nodeDesigners, int _index) { BTreeEditorNode _editorNode = _editorNodes[_index]; for (int i = 0; i < _editorNode.m_Node.m_ChildCount; i++) { int _childIndex = _editorNode.m_Node.m_ChildNodes[i].m_Index; if (_nodeDesigners[_childIndex] == null) { _nodeDesigners[_childIndex] = CreateBTreeNodeDesigner(_configNodes, _editorNodes, ref _nodeDesigners, _childIndex); } } BTreeNodeDesigner _node = new BTreeNodeDesigner(_editorNode); //_node.m_EditorNode = _editorNode; //_node.m_NodeName = _editorNode.m_Node.m_Name; //_node.m_ChildNodeList = new List<BTreeNodeDesigner>(); //_node.m_ChildNodeConnectionList = new List<BTreeNodeConnection>(); for (int i = 0; i < _editorNode.m_Node.m_ChildCount; i++) { int _childIndex = _editorNode.m_Node.m_ChildNodes[i].m_Index; _node.m_ChildNodeList.Add(_nodeDesigners[_childIndex]); BTreeNodeConnection _connection = new BTreeNodeConnection(_nodeDesigners[_childIndex], _node, NodeConnectionType.Outgoing); _node.m_ChildNodeConnectionList.Add(_connection); } return(_node); }
public static BTreeNodeDesigner[] CreateBTreeNodeDesignerFromConfig(BTreeEditorTreeConfig _config) { BTreeNodeDesigner[] _nodeDesigners = new BTreeNodeDesigner[_config.m_EditorNodes.Length]; BTreeEditorNode[] _editorNodes = CreateBTreeEditorNode(_config); //递归创建节点 for (int i = 0; i < _nodeDesigners.Length; i++) { if (_nodeDesigners[i] == null) { _nodeDesigners[i] = CreateBTreeNodeDesigner(_config.m_EditorNodes, _editorNodes, ref _nodeDesigners, i); } } //初始化父节点与连线 for (int i = 0; i < _nodeDesigners.Length; i++) { var _editorNode = _editorNodes[i]; if (_editorNode.m_Node.m_ParentNode != null) { int _parentIndex = _editorNode.m_Node.m_ParentNode.m_Index; _nodeDesigners[i].m_ParentNode = _nodeDesigners[_parentIndex]; BTreeNodeConnection _connection = new BTreeNodeConnection(_nodeDesigners[i], _nodeDesigners[_parentIndex], NodeConnectionType.Incoming); _nodeDesigners[i].m_ParentNodeConnection = _connection; } } return(_nodeDesigners); }
public void AddParentConnectionLine(BTreeNodeDesigner orgNode) { BTreeNodeConnection line = new BTreeNodeConnection(this, orgNode, NodeConnectionType.Incoming); if (m_ParentNodeConnection != null) { m_ParentNodeConnection.m_OriginatingNodeDesigner.delectChildNode(this); } m_ParentNodeConnection = line; m_ParentNode = orgNode; markDirty(); }
public void AddChildNode(BTreeNodeDesigner destNode) { BTreeNodeConnection line = new BTreeNodeConnection(destNode, this, NodeConnectionType.Outgoing); if (m_ChildNodeConnectionList == null) { m_ChildNodeConnectionList = new List<BTreeNodeConnection>(); } for (int i = 0; i < m_ChildNodeConnectionList.Count; i++) { if (m_ChildNodeConnectionList[i].m_DestinationNodeDesigner.Equals(destNode)) { return; } } m_ChildNodeConnectionList.Add(line); m_ChildNodeList.Add(destNode); m_EditorNode.AddChildNode(destNode.m_EditorNode); destNode.AddParentConnectionLine(this); destNode.ReSetIndex(); markDirty(); }