public bool BubbleEvent(Action <IDrawer> action, MouseEvent e) { if (DrawersAtMouse == null) { return(true); } foreach (var item in DrawersAtMouse.OrderByDescending(p => p.ZOrder)) { // if (!item.Enabled) continue; action(item); if (e.NoBubble) { e.NoBubble = false; return(false); //break; } } return(true); }
public override void OnMouseDown(MouseEvent mouseEvent) { base.OnMouseDown(mouseEvent); DiagramViewModel.LastMouseEvent = mouseEvent; if (DrawersAtMouse == null) { return; } if (!DrawersAtMouse.Any()) { DiagramViewModel.NothingSelected(); if (mouseEvent.ModifierKeyStates.Ctrl) { DiagramViewModel.ShowQuickAdd(); } mouseEvent.Begin(SelectionRectHandler); } else { BubbleEvent(d => d.OnMouseDown(mouseEvent), mouseEvent); } }
public override void OnMouseMove(MouseEvent e) { base.OnMouseMove(e); DiagramViewModel.LastMouseEvent = e; if (e.IsMouseDown && e.MouseButton == 0 && !e.ModifierKeyStates.Any) { foreach (var item in Children.OfType <DiagramNodeDrawer>()) { if (item.ViewModelObject.IsSelected) { #if UNITY_EDITOR if (DiagramViewModel.Settings.Snap) { item.ViewModel.Position += e.MousePositionDeltaSnapped; item.ViewModel.Position = item.ViewModel.Position.Snap(DiagramViewModel.Settings.SnapSize); } else { #endif item.ViewModel.Position += e.MousePositionDelta; #if UNITY_EDITOR } #endif if (item.ViewModel.Position.x < 0) { item.ViewModel.Position = new Vector2(0f, item.ViewModel.Position.y); } if (item.ViewModel.Position.y < 0) { item.ViewModel.Position = new Vector2(item.ViewModel.Position.x, 0f); } item.Dirty = true; //item.Refresh((IPlatformDrawer)InvertGraphEditor.PlatformDrawer,item.Bounds.position,false); } } } else { var nodes = GetDrawersAtPosition(this, e.MousePosition).ToArray(); //NodeDrawerAtMouse = nodes.FirstOrDefault(); if (DrawersAtMouse != null) { foreach (var item in nodes) { var alreadyInside = DrawersAtMouse.Contains(item); if (!alreadyInside) { item.OnMouseEnter(e); } } } if (DrawersAtMouse != null) { foreach (var item in DrawersAtMouse) { if (!nodes.Contains(item)) { item.OnMouseExit(e); } } } DrawersAtMouse = nodes; foreach (var node in DrawersAtMouse) { node.OnMouseMove(e); } } }