public override bool HandleMouseInput(InputState input) { if (State == UIState.Inactive) return false; int before = value; isDragging &= input.CurrentMouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed || input.CurrentMouseState.RightButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed; var rect1 = new Rectangle((int)leftArrowPosition.X, (int)leftArrowPosition.Y - 10, 20, 20); var rect2 = new Rectangle((int)rightArrowPosition.X, (int)rightArrowPosition.Y - 10, 20, 20); bool click_in_slider = rect1.Right + 5 < input.CurrentMouseState.X && rect2.Left - 5 > input.CurrentMouseState.X && rect1.Top < input.CurrentMouseState.Y && rect1.Bottom > input.CurrentMouseState.Y; if (input.IsNewLeftMouseClick() || input.IsNewRightMouseClick()) { if (rect1.Contains(input.CurrentMouseState.X, input.CurrentMouseState.Y)) value -= 5; else if (rect2.Contains(input.CurrentMouseState.X, input.CurrentMouseState.Y)) value += 5; else if (click_in_slider ) value = (int)(input.CurrentMouseState.X - (rect1.Right + 5)) / 2; } else if (isDragging) value = (int)(input.CurrentMouseState.X - (rect1.Right + 5)) / 2; else if ((input.IsNewLeftMousePress() || input.IsNewRightMousePress()) && click_in_slider) { value = (int)(input.CurrentMouseState.X - (rect1.Right + 5)) / 2; isDragging = true; } else return base.HandleMouseInput(input); OnPressedElement(PlayerIndex.One, 0); return true; }