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);
        }
Esempio n. 2
0
 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);
     }
 }
Esempio n. 3
0
        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);
                }
            }
        }