A game framework written with osu! in mind.
1// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2// See the LICENCE file in the repository root for full licence text.
3
4using osu.Framework.Extensions.TypeExtensions;
5using osu.Framework.Input.States;
6using osuTK;
7using osuTK.Input;
8
9namespace osu.Framework.Input.Events
10{
11 /// <summary>
12 /// Represents events of a mouse button.
13 /// </summary>
14 public abstract class MouseButtonEvent : MouseEvent
15 {
16 public readonly MouseButton Button;
17 public readonly Vector2 ScreenSpaceMouseDownPosition;
18
19 public Vector2 MouseDownPosition => ToLocalSpace(ScreenSpaceMouseDownPosition);
20
21 protected MouseButtonEvent(InputState state, MouseButton button, Vector2? screenSpaceMouseDownPosition)
22 : base(state)
23 {
24 Button = button;
25 ScreenSpaceMouseDownPosition = screenSpaceMouseDownPosition ?? ScreenSpaceMousePosition;
26 }
27
28 public override string ToString() => $"{GetType().ReadableName()}({Button})";
29 }
30}