本文整理汇总了C#中Behaviac.Design.Nodes.Node.CloneBranch方法的典型用法代码示例。如果您正苦于以下问题:C# Node.CloneBranch方法的具体用法?C# Node.CloneBranch怎么用?C# Node.CloneBranch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Behaviac.Design.Nodes.Node
的用法示例。
在下文中一共展示了Node.CloneBranch方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnMouseMove
/// <summary>
/// Handles when the mouse is moved.
/// </summary>
protected override void OnMouseMove(MouseEventArgs e) {
if (_lostFocus) {
_lostFocus = false;
// update the last ouse position
_lastMousePosition = e.Location;
base.OnMouseMove(e);
return;
}
// returns the mouse under the mouse cursor
NodeViewData nodeFound = _rootNodeView.GetInsideNode(e.Location);
NodeViewData.SubItem subItemFound = null;
if (nodeFound != null) {
subItemFound = nodeFound.GetSubItem(nodeFound, _nodeLayoutManager.ViewToGraph(e.Location));
} else {
this.toolTip.Hide(this);
}
// clear previously stored node which can cause problems when dragging to another view
//_dragTargetNode = null;
if (nodeFound != null || _currentExpandNode != null || subItemFound != null) {
if (_dragAttachment == null) {
_currentNode = nodeFound;
}
if (Settings.Default.ShowNodeToolTips) {
if (nodeFound != null) {
_nodeToolTip = (subItemFound != null) ? subItemFound.ToolTip : nodeFound.ToolTip;
}
if (!string.IsNullOrEmpty(_nodeToolTip)) {
this.toolTipTimer.Start();
}
}
Invalidate();
}
// check if we are currently dragging the graph
if ((e.Button == MouseButtons.Middle || (e.Button == MouseButtons.Left && _objectDragType == ObjectDragTypes.kGraph)) && _lastMousePosition != e.Location && !this.contextMenu.Visible) {
Cursor = Cursors.SizeAll;
// move the graph according to the last mouse position
_nodeLayoutManager.Offset = new PointF(_nodeLayoutManager.Offset.X - (_lastMousePosition.X - e.X), _nodeLayoutManager.Offset.Y - (_lastMousePosition.Y - e.Y));
Invalidate();
}
// check if we start duplicating an existing node step 1
else if (e.Button == MouseButtons.Left && KeyCtrlIsDown && _lastMousePosition != e.Location && _dragNodeDefaults == null && _copiedNode == null && _currentNode != null && !(_currentNode.Node is BehaviorNode)) {
if (_objectDragType == ObjectDragTypes.kNode) { // node
_movedNode = null;
_copiedNode = _currentNode.Node;
// create the layout manager used to draw the graph
_movedNodeGraph = new NodeLayoutManager(_copiedNode.CloneBranch().CreateNodeViewData(null, _rootNodeView.RootBehavior), _nodeLayoutManager.EdgePen, _nodeLayoutManager.EdgePenSelected, _nodeLayoutManager.EdgePenHighlighted, _nodeLayoutManager.EdgePenUpdate, _nodeLayoutManager.EdgePenReadOnly, true);
_movedNodeGraph.Scale = 0.3f;
_movedNodeGraph.RenderDepth = KeyShiftIsDown ? int.MaxValue : 0;
// use the existing node as the node defaults
_dragNodeDefaults = _copiedNode;
} else if (_objectDragType == ObjectDragTypes.kAttachment) { // attachment
if (_dragAttachment == null) {
NodeViewData.SubItem subItem = _currentNode.GetSubItem(_currentNode, _nodeLayoutManager.ViewToGraph(e.Location));
_dragAttachment = subItem as NodeViewData.SubItemAttachment;
}
}
Invalidate();
}
// check if we are duplicating an existing node step 2
else if (e.Button == MouseButtons.Left && KeyCtrlIsDown && (_copiedNode != null || _dragAttachment != null)) {
if (_objectDragType == ObjectDragTypes.kNode) { // node
_movedNodeGraph.RenderDepth = KeyShiftIsDown ? int.MaxValue : 0;
_dragTargetNode = _currentNode;
Cursor = _currentNode == null ? Cursors.No : Cursors.Default;
//Point movedGraphGraphPos= new Point(e.Location.X + _movedNodeGraph.Offset.X, e.Location.Y + _movedNodeGraph.Offset.Y /-2);
//_movedNodeGraph.Location= movedGraphGraphPos;
} else if (_objectDragType == ObjectDragTypes.kAttachment) { // attachment
_dragTargetNode = nodeFound;
if (_dragTargetNode != null) {
NodeViewData.SubItem subItem = _dragTargetNode.GetSubItem(_dragTargetNode, _nodeLayoutManager.ViewToGraph(e.Location));
_dragTargetAttachment = subItem as NodeViewData.SubItemAttachment;
}
//.........这里部分代码省略.........
示例2: OnMouseMove
/// <summary>
/// Handles when the mouse is moved.
/// </summary>
protected override void OnMouseMove(MouseEventArgs e)
{
if (_lostFocus)
{
_lostFocus = false;
// update the last ouse position
_lastMousePosition = e.Location;
base.OnMouseMove(e);
return;
}
// returns the mouse under the mouse cursor
NodeViewData nodeFound = _rootNode.IsInside(e.Location);
// clear previously stored node which can cause problems when dragging to another view
//_dragTargetNode = null;
// if a different node is the current one, update it
if (nodeFound != _currentNode || _currentExpandNode != null)
{
if (_dragAttachment == null)
{
_currentNode = nodeFound;
}
if (nodeFound == null)
{
this.toolTip.Hide(this);
}
else if (Settings.Default.ShowNodeToolTips)
{
if (!string.IsNullOrEmpty(nodeFound.ToolTip))
this.toolTipTimer.Start();
}
Invalidate();
}
// check if we are currently dragging the graph
if ((e.Button == MouseButtons.Middle || e.Button == MouseButtons.Left && IsPanMode) && _lastMousePosition != e.Location && !this.contextMenu.Visible)
{
_isGraphDragged = true;
// move the graph according to the last mouse position
_nodeLayoutManager.Offset = new PointF(_nodeLayoutManager.Offset.X - (_lastMousePosition.X - e.X), _nodeLayoutManager.Offset.Y - (_lastMousePosition.Y - e.Y));
Invalidate();
}
// check if we start duplicating an existing node step 1
else if (e.Button == MouseButtons.Left && KeyCtrlIsDown && _lastMousePosition != e.Location && _dragNodeDefaults == null && _copiedNode == null && _currentNode != null && !(_currentNode.Node is BehaviorNode))
{
_movedNode = null;
_copiedNode = _currentNode.Node;
// create the layout manager used to draw the graph
_movedNodeGraph = new NodeLayoutManager(_copiedNode.CloneBranch().CreateNodeViewData(null, _rootNode.RootBehavior), _nodeLayoutManager.EdgePen, _nodeLayoutManager.EdgePenHighlight, _nodeLayoutManager.EdgePenUpdate, _nodeLayoutManager.EdgePenReadOnly, true);
_movedNodeGraph.Scale = 0.3f;
_movedNodeGraph.RenderDepth = KeyShiftIsDown ? int.MaxValue : 0;
// use the existing node as the node defaults
_dragNodeDefaults = _copiedNode;
Invalidate();
}
// check if we are duplicating an existing node step 2
else if (e.Button == MouseButtons.Left && KeyCtrlIsDown && _copiedNode != null)
{
_movedNodeGraph.RenderDepth = KeyShiftIsDown ? int.MaxValue : 0;
_dragTargetNode = _currentNode;
Cursor = _currentNode == null ? Cursors.No : Cursors.Default;
//Point movedGraphGraphPos= new Point(e.Location.X + _movedNodeGraph.Offset.X, e.Location.Y + _movedNodeGraph.Offset.Y /-2);
//_movedNodeGraph.Location= movedGraphGraphPos;
Invalidate();
}
// check if we start dragging an existing node step 1
else if (e.Button == MouseButtons.Left && _lastMousePosition != e.Location && !KeyCtrlIsDown && _movedNode == null && _currentNode != null && !(_currentNode.Node is BehaviorNode))
{
if (_isNodeDragged) // node
{
if (KeyShiftIsDown || _currentNode.Node.ParentCanAdoptChildren)
{
_movedNode = _currentNode.Node;
// create the layout manager used to draw the graph
if (_movedNodeGraph == null)
_movedNodeGraph = new NodeLayoutManager(_movedNode.CloneBranch().CreateNodeViewData(null, _rootNode.RootBehavior), _nodeLayoutManager.EdgePen, _nodeLayoutManager.EdgePenHighlight, _nodeLayoutManager.EdgePenUpdate, _nodeLayoutManager.EdgePenReadOnly, true);
_movedNodeGraph.Scale = 0.3f;
_movedNodeGraph.RenderDepth = KeyShiftIsDown ? int.MaxValue : 0;
}
}
//.........这里部分代码省略.........