void OnWheel(WheelEvent evt)
        {
            var graphView = target as GraphView;
            if (graphView == null)
                return;

            IPanel panel = (evt.target as VisualElement)?.panel;
            if (panel.GetCapturingElement(PointerId.mousePointerId) != null)
                return;

            Vector3 position = graphView.viewTransform.position;
            Vector3 scale = graphView.viewTransform.scale;

            // TODO: augment the data to have the position as well, so we don't have to read in data from the target.
            // 0-1 ranged center relative to size
            Vector2 zoomCenter = target.ChangeCoordinatesTo(graphView.contentViewContainer, evt.localMousePosition);
            float x = zoomCenter.x + graphView.contentViewContainer.layout.x;
            float y = zoomCenter.y + graphView.contentViewContainer.layout.y;

            position += Vector3.Scale(new Vector3(x, y, 0), scale);

            // Apply the new zoom.
            float zoom = CalculateNewZoom(scale.y, -evt.delta.y, scaleStep, referenceScale, minScale, maxScale);
            scale.x = zoom;
            scale.y = zoom;
            scale.z = 1;

            position -= Vector3.Scale(new Vector3(x, y, 0), scale);
            position.x = GraphViewStaticBridge.RoundToPixelGrid(position.x);
            position.y = GraphViewStaticBridge.RoundToPixelGrid(position.y);

            graphView.UpdateViewTransform(position, scale);

            evt.StopPropagation();
        }
 void OnScrollWheel(WheelEvent evt)
 {
     /*
      * // Handled by ScrollView
      * if (!isHorizontal && m_ScrollView.contentContainer.layout.height - layout.height > 0)
      * {
      *  if (evt.delta.y < 0)
      *      m_ScrollView.verticalScroller.ScrollPageUp();
      *  else if (evt.delta.y > 0)
      *      m_ScrollView.verticalScroller.ScrollPageDown();
      * }
      */
     if (isHorizontal && m_ScrollView.contentContainer.layout.width - layout.width > 0)
     {
         // TODO: Does not provide delta.x for sidescrolling mouse wheel. Use delta.y for now.
         if (evt.delta.y < 0)
         {
             m_ScrollView.horizontalScroller.ScrollPageUp();
         }
         else if (evt.delta.y > 0)
         {
             m_ScrollView.horizontalScroller.ScrollPageDown();
         }
     }
     evt.StopPropagation();
 }
    protected void OnMouseWheel(WheelEvent e)
    {
        if (Image == null)
        {
            Image = target.Q <Image>();
        }
        Vector2 mousePosition = target.ChangeCoordinatesTo(Image, e.localMousePosition);
        float   wheelDelta    = -Mathf.Ceil(Mathf.Abs(e.mouseDelta.y)) * Mathf.Sign(e.mouseDelta.y);
        float   aspect        = Image.image.width / Image.image.height;
        Vector2 oldSize       = Image.layout.size;
        float   delta         = wheelDelta > 0 ? 1.25f : 0.8f;
        // Vector2 newSize = new Vector2(wheelDelta + Image.layout.width, wheelDelta * aspect + Image.layout.height);
        Vector2 newSize = oldSize * delta;

        if (newSize.x < Image.image.width || newSize.y < Image.image.height)
        {
            return;
        }
        target.Query <Image>().ForEach((image) =>
        {
            image.style.width  = newSize.x;
            image.style.height = newSize.y;
        });
        Vector2 deltaSize = newSize - oldSize;

        deltaSize       *= mousePosition / newSize;
        Image.style.left = Image.layout.xMin - deltaSize.x;
        Image.style.top  = Image.layout.yMin - deltaSize.y;
    }
Exemple #4
0
        private void OnScrollWheel(WheelEvent evt)
        {
            if (m_mouseDrag)
            {
                evt.StopImmediatePropagation();
                return;
            }

            m_serializedNoise.ApplyModifiedProperties();
            m_serializedNoise.Update();
            {
                Vector3 s   = m_scale.vector3Value;
                Vector2 abs = new Vector2(Mathf.Abs(s.x), Mathf.Abs(s.z));

                abs += Vector2.one * .001f;

                float scroll = evt.delta.y;

                s.x += abs.x * scroll * .05f;
                s.z += abs.y * scroll * .05f;

                m_scale.vector3Value = s;
            }
            m_serializedNoise.ApplyModifiedProperties();
            m_serializedNoise.Update();

            evt.StopPropagation();
        }
        private void OnWheel(WheelEvent evt)
        {
            GraphView graphView = base.target as GraphView;

            if (graphView != null)
            {
                if (!MouseCaptureController.IsMouseCaptureTaken())
                {
                    Vector3 vector  = graphView.viewTransform.position;
                    Vector3 scale   = graphView.viewTransform.scale;
                    Vector2 vector2 = base.target.ChangeCoordinatesTo(graphView.contentViewContainer, evt.localMousePosition);
                    float   x       = vector2.x + graphView.contentViewContainer.layout.x;
                    float   y       = vector2.y + graphView.contentViewContainer.layout.y;
                    vector += Vector3.Scale(new Vector3(x, y, 0f), scale);
                    float num = ContentZoomer.CalculateNewZoom(scale.y, -evt.delta.y, this.scaleStep, this.referenceScale, this.minScale, this.maxScale);
                    scale.x = num;
                    scale.y = num;
                    scale.z = 1f;
                    vector -= Vector3.Scale(new Vector3(x, y, 0f), scale);
                    if (graphView.elementPanel != null && this.keepPixelCacheOnZoom)
                    {
                        graphView.elementPanel.keepPixelCacheOnWorldBoundChange = true;
                        if (this.m_OnTimerTicker == null)
                        {
                            this.m_OnTimerTicker = graphView.schedule.Execute(new Action <TimerState>(this.OnTimer));
                        }
                        this.m_OnTimerTicker.ExecuteLater(500L);
                        this.delayRepaintScheduled = true;
                    }
                    graphView.UpdateViewTransform(vector, scale);
                    evt.StopPropagation();
                }
            }
        }
        void OnScroll(WheelEvent e)
        {
            float zoomScale = 1f - e.delta.y * k_ZoomStep;

            Zoom(m_ZoomedUI.WorldToLocal(e.mousePosition), zoomScale);
            e.StopPropagation();
        }
Exemple #7
0
 public void OnMouseWheel(ElementEvent e)
 {
     WheelEvent ev = (WheelEvent)(object)e;
     //firefox
     //    double delta = event.detail ? event.detail * (-120) : event.wheelDelta;
     double delta = ev.WheelDelta;
 }
Exemple #8
0
 private void OnWheel(WheelEvent evt)
 {
     if (wheel != null)
     {
         wheel(evt);
     }
 }
 /// <summary>
 /// On scroll event.
 /// </summary>
 /// <param name="evt">Event data.</param>
 void OnScroll(WheelEvent evt)
 {
     // Close the window if the user scrolls outside the dialogue.
     if (!worldBound.Contains(evt.mousePosition))
     {
         Close();
     }
 }
        private void OnScroll(WheelEvent e)
        {
            Vector2 zoomCenter = VisualElementExtensions.ChangeCoordinatesTo(base.target, this.targetElement, e.localMousePosition);
            float   zoomScale  = 1f - e.delta.y * zoomStep;

            this.Zoom(zoomCenter, zoomScale);
            e.StopPropagation();
        }
Exemple #11
0
        void OnWheel(WheelEvent evt)
        {
            var graphView = target as GraphView;

            if (graphView == null)
            {
                return;
            }

            IPanel panel = (evt.target as VisualElement)?.panel;

            if (panel.GetCapturingElement(PointerId.mousePointerId) != null)
            {
                return;
            }

            Vector3 position = graphView.viewTransform.position;
            Vector3 scale    = graphView.viewTransform.scale;

            // TODO: augment the data to have the position as well, so we don't have to read in data from the target.
            // 0-1 ranged center relative to size
            Vector2 zoomCenter = target.ChangeCoordinatesTo(graphView.contentViewContainer, evt.localMousePosition);
            float   x          = zoomCenter.x + graphView.contentViewContainer.layout.x;
            float   y          = zoomCenter.y + graphView.contentViewContainer.layout.y;

            position += Vector3.Scale(new Vector3(x, y, 0), scale);

            // Apply the new zoom.
            float zoom = CalculateNewZoom(scale.y, -evt.delta.y, scaleStep, referenceScale, minScale, maxScale);

            scale.x = zoom;
            scale.y = zoom;
            scale.z = 1;

            position  -= Vector3.Scale(new Vector3(x, y, 0), scale);
            position.x = GUIUtility.RoundToPixelGrid(position.x);
            position.y = GUIUtility.RoundToPixelGrid(position.y);

            // Delay updating of the pixel cache so the scrolling appears smooth.
            if (graphView.elementPanel != null && keepPixelCacheOnZoom)
            {
                graphView.elementPanel.keepPixelCacheOnWorldBoundChange = true;

                if (m_OnTimerTicker == null)
                {
                    m_OnTimerTicker = graphView.schedule.Execute(OnTimer);
                }

                m_OnTimerTicker.ExecuteLater(500);

                delayRepaintScheduled = true;
            }

            graphView.UpdateViewTransform(position, scale);

            evt.StopPropagation();
        }
Exemple #12
0
        public void OnMouseWheel(WheelEvent e)
        {
            Point position = new Point(e.PageX, e.PageY);
            int   delta    = e.DeltaY > 0 ? -100 : 100;

            if (ProcessMouseEvent(new RawMouseWheelEventArgs(delta, position, GetTimestamp())))
            {
                e.PreventDefault();
            }
        }
        void OnWheel(WheelEvent evt)
        {
            if (MouseCaptureController.IsMouseCaptured())
            {
                return;
            }

            Zoom(-evt.delta.y, evt.localMousePosition);
            evt.StopPropagation();
        }
        private void OnScrollWheel(WheelEvent evt)
        {
            var newScale = (int)(m_Scale - evt.delta.y);

            UpdateScale(ClampScale(newScale));
            evt.StopPropagation();

            m_FitToScreenEnabled = false;
            m_FitToScreenToggle.SetValueWithoutNotify(m_FitToScreenEnabled);
        }
Exemple #15
0
 private void OnMouseWheelEvent(WheelEvent evt)
 {
     if (evt.delta.y > 0)
     {
         NextResult();
     }
     else
     {
         PrevResult();
     }
 }
        private void OnMouseWheel(Event e)
        {
            WheelEvent wheelEvent = (WheelEvent)e;

            Point position = new Point(wheelEvent.PageX, wheelEvent.PageY);
            int   delta    = wheelEvent.DeltaY > 0 ? -100 : 100;

            if (ProcessMouseEvent(new RawMouseWheelEventArgs(delta, position, GetTimestamp())))
            {
                e.PreventDefault();
            }
        }
Exemple #17
0
        public void OnMouseWheel(ElementEvent e)
        {
            WheelEvent ev = (WheelEvent)(object)e;
            //firefox
            //    double delta = event.detail ? event.detail * (-120) : event.wheelDelta;
            double delta = ev.WheelDelta;

            if (delta > 0)
            {
                Zoom(0.9);
            }
            else
            {
                Zoom(1.1);
            }
        }
        void OnWheel(WheelEvent evt)
        {
            if (MouseCaptureController.IsMouseCaptured())
            {
                return;
            }

            if (wheelTarget != null)
            {
                wheelTarget.OnWheel(evt, GetWheelDelta(evt.delta.y));
            }

            if (zoomTarget != null && evt.modifiers == zoomModifiers)
            {
                zoomCurrentScale = CalculateNewZoom(zoomCurrentScale, -evt.delta.y, zoomScaleStep, zoomMinScale, zoomMaxScale);
                zoomTarget.OnZoom(evt, new Vector3(zoomCurrentScale, zoomCurrentScale, 1f));
            }
        }
    protected virtual void OnMouseWheel(WheelEvent e)
    {
        if (e.shiftKey)
        {
            uPixel.CyclePalette((int)Mathf.Sign(-e.mouseDelta.y));
        }
        else
        {
            m_Size += (int)Mathf.Sign(-e.mouseDelta.y);
            m_Size  = Mathf.Max(1, m_Size);
        }
        Vector2Int mouseCoord = GetImageCoord(Image, e.localMousePosition);

        uPixel.ClearBuffer();
        Vector2Int[] coords = GetTargetCoords(mouseCoord);
        uPixel.DrawBuffer(coords);
        e.StopPropagation();
    }
Exemple #20
0
 private void ZoomCallback(WheelEvent evt)
 {
     if (scale <= 0.6f)
     {
         RemoveFromClassList("zoom-in");
         AddToClassList("zoom-out");
     }
     else if (scale >= 1.5f)
     {
         RemoveFromClassList("zoom-out");
         AddToClassList("zoom-in");
     }
     else
     {
         RemoveFromClassList("zoom-out");
         RemoveFromClassList("zoom-in");
     }
 }
Exemple #21
0
        public void OnZoom(WheelEvent evt, Vector3 scale)
        {
            workspace.transform.scale = scale;
            grid.scale = (Vector2)scale;

            if (scale.x < 0.3f)
            {
                Debug.Log("TempCollapse");
                foreach (var view in nodeTable.Values)
                {
                    view.MacroView(true);
                }
            }
            else
            {
                foreach (var view in nodeTable.Values)
                {
                    view.MacroView(false);
                }
            }
        }
Exemple #22
0
        void OnScrollWheel(WheelEvent evt)
        {
            var layout   = scrollView.x.layout;
            var content  = scrollView.x.contentContainer;
            var vertical = scrollView.x.verticalScroller;

            if (prefs.useSmoothScrolling)
            {
                var delta = evt.delta.y / 20;

                vertical.experimental.animation.Start(0, delta, SmoothScrollMS, (e, value) =>
                {
                    Scroll(value);
                });
            }
            else
            {
                Scroll(evt.delta.y);
            }

            void Scroll(float delta)
            {
                if (delta != vertical.value)
                {
                    evt.StopPropagation();
                }

                if (content.layout.height - layout.height > 0)
                {
                    if (delta < 0)
                    {
                        vertical.ScrollPageUp(Mathf.Abs(delta));
                    }
                    else if (delta > 0)
                    {
                        vertical.ScrollPageDown(Mathf.Abs(delta));
                    }
                }
            }
        }
Exemple #23
0
        // ######################## FUNCTIONALITY ######################## //

        #region FUNCTIONALITY

        #region EVENT HANDLING

        private void OnMouseWheel(WheelEvent evt)
        {
            // do nothing if the mouse is captured
            if (MouseCaptureController.IsMouseCaptured())
            {
                return;
            }

            // update zoom origin
            Vector2 localMousePos = this.ChangeCoordinatesTo(_origin, evt.localMousePosition);

            _origin.style.left           = evt.localMousePosition.x;
            _origin.style.top            = evt.localMousePosition.y;
            _contentContainer.style.left = _contentContainer.layout.xMin - localMousePos.x;
            _contentContainer.style.top  = _contentContainer.layout.yMin - localMousePos.y;

            // calculate zoom value
            int   wheelDir    = (int)Mathf.Sign(-evt.delta.y);
            float scrollValue = wheelDir * _zoomSpeed;

            // zoom
            UpdateZoom(scrollValue);
        }
        void SelectAllTypes(bool state, EventTypeSelection eventTypeSelection = EventTypeSelection.All)
        {
            foreach (KeyValuePair <long, bool> v in m_State.ToList())
            {
                long eventTypeId = v.Key;

                if (eventTypeSelection == EventTypeSelection.All ||
                    (eventTypeSelection == EventTypeSelection.Mouse &&
                     (eventTypeId == MouseMoveEvent.TypeId() ||
                      eventTypeId == MouseOverEvent.TypeId() ||
                      eventTypeId == MouseDownEvent.TypeId() ||
                      eventTypeId == MouseUpEvent.TypeId() ||
                      eventTypeId == WheelEvent.TypeId() ||
                      eventTypeId == ContextClickEvent.TypeId())) ||
                    (eventTypeSelection == EventTypeSelection.Keyboard &&
                     (eventTypeId == KeyDownEvent.TypeId() ||
                      eventTypeId == KeyUpEvent.TypeId())) ||
                    (eventTypeSelection == EventTypeSelection.Drag &&
                     (eventTypeId == DragUpdatedEvent.TypeId() ||
                      eventTypeId == DragPerformEvent.TypeId() ||
                      eventTypeId == DragExitedEvent.TypeId())) ||
                    (eventTypeSelection == EventTypeSelection.Command &&
                     (eventTypeId == ValidateCommandEvent.TypeId() ||
                      eventTypeId == ExecuteCommandEvent.TypeId())))
                {
                    m_State[eventTypeId] = state;
                }
                else
                {
                    // Unaffected should be reset to false
                    m_State[eventTypeId] = false;
                }
            }

            UpdateValue();
        }
        void UpdateEventbaseInfo(EventDebuggerEventRecord eventBase, IEventHandler focused, IEventHandler capture)
        {
            ClearEventbaseInfo();

            if (eventBase == null)
            {
                return;
            }

            m_EventbaseInfo.text += "Focused element: " + EventDebugger.GetObjectDisplayName(focused) + "\n";
            m_EventbaseInfo.text += "Capture element: " + EventDebugger.GetObjectDisplayName(capture) + "\n";

            if (eventBase.eventTypeId == MouseMoveEvent.TypeId() ||
                eventBase.eventTypeId == MouseOverEvent.TypeId() ||
                eventBase.eventTypeId == MouseOutEvent.TypeId() ||
                eventBase.eventTypeId == MouseDownEvent.TypeId() ||
                eventBase.eventTypeId == MouseUpEvent.TypeId() ||
                eventBase.eventTypeId == MouseEnterEvent.TypeId() ||
                eventBase.eventTypeId == MouseLeaveEvent.TypeId() ||
                eventBase.eventTypeId == DragEnterEvent.TypeId() ||
                eventBase.eventTypeId == DragLeaveEvent.TypeId() ||
                eventBase.eventTypeId == DragUpdatedEvent.TypeId() ||
                eventBase.eventTypeId == DragPerformEvent.TypeId() ||
                eventBase.eventTypeId == DragExitedEvent.TypeId() ||
                eventBase.eventTypeId == ContextClickEvent.TypeId() ||
                eventBase.eventTypeId == PointerMoveEvent.TypeId() ||
                eventBase.eventTypeId == PointerOverEvent.TypeId() ||
                eventBase.eventTypeId == PointerOutEvent.TypeId() ||
                eventBase.eventTypeId == PointerDownEvent.TypeId() ||
                eventBase.eventTypeId == PointerUpEvent.TypeId() ||
                eventBase.eventTypeId == PointerCancelEvent.TypeId() ||
                eventBase.eventTypeId == PointerStationaryEvent.TypeId() ||
                eventBase.eventTypeId == PointerEnterEvent.TypeId() ||
                eventBase.eventTypeId == PointerLeaveEvent.TypeId())
            {
                m_EventbaseInfo.text += "Mouse position: " + eventBase.mousePosition + "\n";
                m_EventbaseInfo.text += "Modifiers: " + eventBase.modifiers + "\n";
            }

            if (eventBase.eventTypeId == KeyDownEvent.TypeId() ||
                eventBase.eventTypeId == KeyUpEvent.TypeId())
            {
                m_EventbaseInfo.text += "Modifiers: " + eventBase.modifiers + "\n";
            }

            if (eventBase.eventTypeId == MouseDownEvent.TypeId() ||
                eventBase.eventTypeId == MouseUpEvent.TypeId() ||
                eventBase.eventTypeId == PointerDownEvent.TypeId() ||
                eventBase.eventTypeId == PointerUpEvent.TypeId() ||
                eventBase.eventTypeId == DragUpdatedEvent.TypeId() ||
                eventBase.eventTypeId == DragPerformEvent.TypeId() ||
                eventBase.eventTypeId == DragExitedEvent.TypeId())
            {
                m_EventbaseInfo.text += "Button: " + (eventBase.button == 0 ? "Left" : eventBase.button == 1 ? "Middle" : "Right") + "\n";
                m_EventbaseInfo.text += "Click count: " + eventBase.clickCount + "\n";
            }

            if (eventBase.eventTypeId == MouseMoveEvent.TypeId() ||
                eventBase.eventTypeId == MouseOverEvent.TypeId() ||
                eventBase.eventTypeId == MouseOutEvent.TypeId() ||
                eventBase.eventTypeId == MouseDownEvent.TypeId() ||
                eventBase.eventTypeId == MouseUpEvent.TypeId() ||
                eventBase.eventTypeId == MouseEnterEvent.TypeId() ||
                eventBase.eventTypeId == MouseLeaveEvent.TypeId() ||
                eventBase.eventTypeId == DragEnterEvent.TypeId() ||
                eventBase.eventTypeId == DragLeaveEvent.TypeId() ||
                eventBase.eventTypeId == DragUpdatedEvent.TypeId() ||
                eventBase.eventTypeId == DragPerformEvent.TypeId() ||
                eventBase.eventTypeId == DragExitedEvent.TypeId() ||
                eventBase.eventTypeId == ContextClickEvent.TypeId() ||
                eventBase.eventTypeId == WheelEvent.TypeId() ||
                eventBase.eventTypeId == PointerMoveEvent.TypeId() ||
                eventBase.eventTypeId == PointerOverEvent.TypeId() ||
                eventBase.eventTypeId == PointerOutEvent.TypeId() ||
                eventBase.eventTypeId == PointerDownEvent.TypeId() ||
                eventBase.eventTypeId == PointerUpEvent.TypeId() ||
                eventBase.eventTypeId == PointerCancelEvent.TypeId() ||
                eventBase.eventTypeId == PointerStationaryEvent.TypeId() ||
                eventBase.eventTypeId == PointerEnterEvent.TypeId() ||
                eventBase.eventTypeId == PointerLeaveEvent.TypeId())
            {
                m_EventbaseInfo.text += "Pressed buttons: " + eventBase.pressedButtons + "\n";
            }

            if (eventBase.eventTypeId == WheelEvent.TypeId())
            {
                m_EventbaseInfo.text += "Mouse delta: " + eventBase.delta + "\n";
            }

            if (eventBase.eventTypeId == KeyDownEvent.TypeId() ||
                eventBase.eventTypeId == KeyUpEvent.TypeId())
            {
                if (char.IsControl(eventBase.character))
                {
                    m_EventbaseInfo.text += "Character: \\" + (byte)(eventBase.character) + "\n";
                }
                else
                {
                    m_EventbaseInfo.text += "Character: " + eventBase.character + "\n";
                }

                m_EventbaseInfo.text += "Key code: " + eventBase.keyCode + "\n";
            }

            if (eventBase.eventTypeId == ValidateCommandEvent.TypeId() ||
                eventBase.eventTypeId == ExecuteCommandEvent.TypeId())
            {
                m_EventbaseInfo.text += "Command: " + eventBase.commandName + "\n";
            }
        }
Exemple #26
0
 void HandleMouseWheelEvent(WheelEvent evt)
 {
     m_Handler(evt.delta.y);
     evt.StopPropagation();
 }
 void OnWheelEvent(WheelEvent evt)
 {
     OnRefresh();
 }
Exemple #28
0
        internal void CommitElementUnderPointers(EventDispatcher dispatcher)
        {
            for (var i = 0; i < m_TopElementUnderPointer.Length; i++)
            {
                if (m_TopElementUnderPointer[i] == m_PendingTopElementUnderPointer[i])
                {
                    continue;
                }

                if (m_TriggerPointerEvent[i] == null && m_TriggerMouseEvent[i] == null)
                {
                    using (new EventDispatcherGate(dispatcher))
                    {
                        Vector2 position = PointerDeviceState.GetPointerPosition(i);

                        PointerEventsHelper.SendOverOut(m_TopElementUnderPointer[i],
                                                        m_PendingTopElementUnderPointer[i], null,
                                                        position, i);
                        PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                            m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i], null, position, i);

                        if (i == PointerId.mousePointerId)
                        {
                            MouseEventsHelper.SendMouseOverMouseOut(m_TopElementUnderPointer[i],
                                                                    m_PendingTopElementUnderPointer[i],
                                                                    null, position);
                            MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i], null, position);
                        }
                    }
                }

                if (m_TriggerPointerEvent[i] != null)
                {
                    if ((m_TriggerPointerEvent[i] as EventBase)?.eventTypeId == PointerMoveEvent.TypeId() ||
                        (m_TriggerPointerEvent[i] as EventBase)?.eventTypeId == PointerDownEvent.TypeId() ||
                        (m_TriggerPointerEvent[i] as EventBase)?.eventTypeId == PointerUpEvent.TypeId() ||
                        (m_TriggerPointerEvent[i] as EventBase)?.eventTypeId == PointerCancelEvent.TypeId())
                    {
                        using (new EventDispatcherGate(dispatcher))
                        {
                            PointerEventsHelper.SendOverOut(m_TopElementUnderPointer[i],
                                                            m_PendingTopElementUnderPointer[i],
                                                            m_TriggerPointerEvent[i], m_TriggerPointerEvent[i].position, i);
                            PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                                m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i],
                                m_TriggerPointerEvent[i], m_TriggerPointerEvent[i].position, i);
                        }
                    }

                    m_TriggerPointerEvent[i] = null;
                }

                if (m_TriggerMouseEvent[i] != null)
                {
                    if ((m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == MouseMoveEvent.TypeId() ||
                        (m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == MouseDownEvent.TypeId() ||
                        (m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == MouseUpEvent.TypeId() ||
                        (m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == WheelEvent.TypeId())
                    {
                        using (new EventDispatcherGate(dispatcher))
                        {
                            MouseEventsHelper.SendMouseOverMouseOut(m_TopElementUnderPointer[i],
                                                                    m_PendingTopElementUnderPointer[i],
                                                                    m_TriggerMouseEvent[i], m_TriggerMouseEvent[i].mousePosition);
                            MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i],
                                m_TriggerMouseEvent[i], m_TriggerMouseEvent[i].mousePosition);
                        }
                    }
                    else if ((m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == MouseEnterWindowEvent.TypeId() ||
                             (m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == MouseLeaveWindowEvent.TypeId()
                             )
                    {
                        using (new EventDispatcherGate(dispatcher))
                        {
                            PointerEventsHelper.SendOverOut(m_TopElementUnderPointer[i],
                                                            m_PendingTopElementUnderPointer[i], null,
                                                            m_TriggerMouseEvent[i].mousePosition, i);
                            PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                                m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i], null,
                                m_TriggerMouseEvent[i].mousePosition, i);

                            if (i == PointerId.mousePointerId)
                            {
                                MouseEventsHelper.SendMouseOverMouseOut(m_TopElementUnderPointer[i],
                                                                        m_PendingTopElementUnderPointer[i],
                                                                        m_TriggerMouseEvent[i], m_TriggerMouseEvent[i].mousePosition);
                                MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                    m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i],
                                    m_TriggerMouseEvent[i], m_TriggerMouseEvent[i].mousePosition);
                            }
                        }
                    }
                    else if ((m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == DragUpdatedEvent.TypeId() ||
                             (m_TriggerMouseEvent[i] as EventBase)?.eventTypeId == DragExitedEvent.TypeId())
                    {
                        using (new EventDispatcherGate(dispatcher))
                        {
                            PointerEventsHelper.SendOverOut(m_TopElementUnderPointer[i],
                                                            m_PendingTopElementUnderPointer[i], null,
                                                            m_TriggerMouseEvent[i].mousePosition, i);
                            PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                                m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i], null,
                                m_TriggerMouseEvent[i].mousePosition, i);

                            MouseEventsHelper.SendMouseOverMouseOut(m_TopElementUnderPointer[i],
                                                                    m_PendingTopElementUnderPointer[i],
                                                                    m_TriggerMouseEvent[i], m_TriggerMouseEvent[i].mousePosition);
                            MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i],
                                m_TriggerMouseEvent[i], m_TriggerMouseEvent[i].mousePosition);
                            MouseEventsHelper.SendEnterLeave <DragLeaveEvent, DragEnterEvent>(
                                m_TopElementUnderPointer[i], m_PendingTopElementUnderPointer[i],
                                m_TriggerMouseEvent[i], m_TriggerMouseEvent[i].mousePosition);
                        }
                    }

                    m_TriggerMouseEvent[i] = null;
                }

                m_TopElementUnderPointer[i] = m_PendingTopElementUnderPointer[i];
            }
        }
Exemple #29
0
        internal void CommitElementUnderPointers(EventDispatcher dispatcher)
        {
            for (var i = 0; i < m_TopElementUnderPointer.Length; i++)
            {
                var triggerPointerEvent = m_TriggerPointerEvent[i];
                var previous            = m_TopElementUnderPointer[i];
                var current             = m_PendingTopElementUnderPointer[i];

                if (current == previous)
                {
                    if (triggerPointerEvent != null)
                    {
                        var pos3d = triggerPointerEvent.position;
                        m_PickingPointerPositions[i] = new Vector2(pos3d.x, pos3d.y);
                    }
                    else if (m_TriggerMouseEvent[i] != null)
                    {
                        m_PickingPointerPositions[i] = m_TriggerMouseEvent[i].mousePosition;
                    }

                    continue;
                }

                m_TopElementUnderPointer[i] = current;

                if (triggerPointerEvent == null && m_TriggerMouseEvent[i] == null)
                {
                    using (new EventDispatcherGate(dispatcher))
                    {
                        Vector2 position = PointerDeviceState.GetPointerPosition(i);

                        PointerEventsHelper.SendOverOut(previous, current, null, position, i);
                        PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                            previous, current, null, position, i);

                        m_PickingPointerPositions[i] = position;
                        if (i == PointerId.mousePointerId)
                        {
                            MouseEventsHelper.SendMouseOverMouseOut(previous, current, null, position);
                            MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                previous, current, null, position);
                        }
                    }
                }

                if (triggerPointerEvent != null)
                {
                    var pos3d = triggerPointerEvent.position;
                    m_PickingPointerPositions[i] = new Vector2(pos3d.x, pos3d.y);

                    var baseEvent = triggerPointerEvent as EventBase;
                    if (baseEvent != null && (
                            baseEvent.eventTypeId == PointerMoveEvent.TypeId() ||
                            baseEvent.eventTypeId == PointerDownEvent.TypeId() ||
                            baseEvent.eventTypeId == PointerUpEvent.TypeId() ||
                            baseEvent.eventTypeId == PointerCancelEvent.TypeId()))
                    {
                        using (new EventDispatcherGate(dispatcher))
                        {
                            PointerEventsHelper.SendOverOut(previous, current, triggerPointerEvent, pos3d, i);
                            PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                                previous, current, triggerPointerEvent, pos3d, i);
                        }
                    }
                }

                m_TriggerPointerEvent[i] = null;

                var triggerMouseEvent = m_TriggerMouseEvent[i];
                if (triggerMouseEvent != null)
                {
                    Vector2 mousePos = triggerMouseEvent.mousePosition;
                    m_PickingPointerPositions[i] = mousePos;
                    var baseEvent = triggerMouseEvent as EventBase;
                    if (baseEvent != null)
                    {
                        if (baseEvent.eventTypeId == MouseMoveEvent.TypeId() ||
                            baseEvent.eventTypeId == MouseDownEvent.TypeId() ||
                            baseEvent.eventTypeId == MouseUpEvent.TypeId() ||
                            baseEvent.eventTypeId == WheelEvent.TypeId())
                        {
                            using (new EventDispatcherGate(dispatcher))
                            {
                                MouseEventsHelper.SendMouseOverMouseOut(previous, current, triggerMouseEvent, mousePos);
                                MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                    previous, current, triggerMouseEvent, mousePos);
                            }
                        }
                        else if (baseEvent.eventTypeId == MouseEnterWindowEvent.TypeId() ||
                                 baseEvent.eventTypeId == MouseLeaveWindowEvent.TypeId()
                                 )
                        {
                            using (new EventDispatcherGate(dispatcher))
                            {
                                PointerEventsHelper.SendOverOut(previous, current, null, mousePos, i);
                                PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                                    previous, current, null, mousePos, i);

                                if (i == PointerId.mousePointerId)
                                {
                                    MouseEventsHelper.SendMouseOverMouseOut(previous, current, triggerMouseEvent, mousePos);
                                    MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                        previous, current, triggerMouseEvent, mousePos);
                                }
                            }
                        }
                        else if (baseEvent.eventTypeId == DragUpdatedEvent.TypeId() ||
                                 baseEvent.eventTypeId == DragExitedEvent.TypeId())
                        {
                            using (new EventDispatcherGate(dispatcher))
                            {
                                PointerEventsHelper.SendOverOut(previous, current, null, mousePos, i);
                                PointerEventsHelper.SendEnterLeave <PointerLeaveEvent, PointerEnterEvent>(
                                    previous, current, null, mousePos, i);

                                MouseEventsHelper.SendMouseOverMouseOut(previous, current, triggerMouseEvent, mousePos);
                                MouseEventsHelper.SendEnterLeave <MouseLeaveEvent, MouseEnterEvent>(
                                    previous, current, triggerMouseEvent, mousePos);
                                MouseEventsHelper.SendEnterLeave <DragLeaveEvent, DragEnterEvent>(
                                    previous, current, triggerMouseEvent, mousePos);
                            }
                        }
                    }

                    m_TriggerMouseEvent[i] = null;
                }
            }
        }