MonoGameUi.Control.InternalMouseMove C# (CSharp) Method

InternalMouseMove() private method

Wird vom Parent aufgerufen wenn sich die Maus bewegt
private InternalMouseMove ( MouseEventArgs args ) : bool
args MouseEventArgs
return bool
        internal bool InternalMouseMove(MouseEventArgs args)
        {
            // Children first (Order by Z-Order)
            bool passive = false;
            foreach (var child in Children.InZOrder())
            {
                args.LocalPosition = CalculateLocalPosition(args.GlobalPosition, child);
                bool handled = child.InternalMouseMove(args);
                passive |= handled;
                args.Bubbled = handled || args.Bubbled;
            }

            // Ermitteln ob hovered ist (Aktive & Passive)
            args.LocalPosition = CalculateLocalPosition(args.GlobalPosition, this);
            bool hovered =
                args.LocalPosition.X >= 0 &&
                args.LocalPosition.Y >= 0 &&
                args.LocalPosition.X < ActualSize.X &&
                args.LocalPosition.Y < ActualSize.Y;

            // Wenn sich der Hover-Status verändert hat -> Enter & Exit-Events
            if ((Hovered != TreeState.None) != hovered)
            {
                if (hovered)
                {
                    OnMouseEnter(args);
                    if (MouseEnter != null)
                        MouseEnter(this, args);
                }
                else
                {
                    // Pressed-State abgeben
                    Pressed = false;

                    OnMouseLeave(args);
                    if (MouseLeave != null)
                        MouseLeave(this, args);
                }
            }

            // Event für Mausbewegung
            OnMouseMove(args);
            if (MouseMove != null)
                MouseMove(this, args);

            // Hover-State neu setzen
            TreeState newState = TreeState.None;
            if (hovered) newState = passive ? TreeState.Passive : TreeState.Active;
            Hovered = newState;

            return hovered;
        }