MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_mouse_server.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_MOUSE_SERVER_H_1609144679
12#define INCGUARD_MGL_MOUSE_SERVER_H_1609144679
13
15#include <mgl/event/mgl_event.h>
19
20
21namespace MGL
22{
23class InitializerDelegate;
24}
25
26namespace MGL::Input
27{
29class MouseServer final : public SharedSingleton<MouseServer>
30{
31public:
33
34 MouseServer() noexcept;
35
36 bool Initialize(STL::unique_ptr<MouseDelegate> &delegate) noexcept;
37
38 /* ------------------------------------------------------------------------- */
44 /* ------------------------------------------------------------------------- */
45 [[nodiscard]] bool IsAvailable() const noexcept
46 {
47 return _delegate != nullptr;
48 }
49
50 [[nodiscard]] bool IsPressing(MouseButton button) const noexcept;
51 [[nodiscard]] bool IsPressing(MouseButtonFlags buttonFlags) const noexcept;
52 [[nodiscard]] bool IsPressingAny(MouseButtonFlags buttonFlags = kMouseButtonAll) const noexcept;
53 [[nodiscard]] bool IsTriggered(MouseButton button) const noexcept;
54 [[nodiscard]] bool IsReleased(MouseButton button) const noexcept;
55
56 [[nodiscard]] const Vector2 &GetPosition() const noexcept;
57 [[nodiscard]] const Vector2 &GetUVPosition() const noexcept;
58 [[nodiscard]] const Vector2 &GetDeltaMove() const noexcept;
59 [[nodiscard]] const Vector2 &GetUVDeltaMove() const noexcept;
60
61 void SetBounds(const Rectangle &bounds) noexcept;
62 void SetBounds(const Rectangle &bounds, const Vector2 &logicalSize) noexcept;
63
64 bool SetCursorMode(CursorMode cursorMode) noexcept;
65 [[nodiscard]] CursorMode GetCursorMode() const noexcept;
66
67 void SetCursorVisibleMode(CursorVisibleMode visibleMode) noexcept;
68 [[nodiscard]] CursorVisibleMode GetCursorVisibleMode() const noexcept;
69
70 /* ------------------------------------------------------------------------- */
76 /* ------------------------------------------------------------------------- */
77 [[nodiscard]] constexpr bool IsConnecting() const noexcept
78 {
79 return (_delegate != nullptr) ? _delegate->IsConnecting() : false;
80 }
81
82private:
83 static void OnEventPreFrameUpdate(void *callbackArg, void *notifyArg) noexcept;
84 static void OnEventChangeClientSize(void *callbackArg, void *notifyArg) noexcept;
85
86 void UpdatePosition() noexcept;
87
88 STL::unique_ptr<MouseDelegate> _delegate;
89 Event::Handle _eventPreFrameUpdate;
90 Event::Handle _eventChangeClientSize;
91 MouseState _state;
92
93 InputBounds _bounds;
94 Vector2 _clientSize;
95};
96} // namespace MGL::Input
97
98#endif // INCGUARD_MGL_MOUSE_SERVER_H_1609144679
99
100// vim: et ts=4 sw=4 sts=4
MGL 入力範囲
Definition mgl_input_bounds.h:21
マウス入力デリゲート基底クラス
Definition mgl_mouse_delegate.h:20
マウスサーバクラス
Definition mgl_mouse_server.h:30
constexpr bool IsConnecting() const noexcept
マウスの接続状態を取得
Definition mgl_mouse_server.h:77
const Vector2 & GetDeltaMove() const noexcept
マウスポインタの移動量を取得
Definition mgl_mouse_server.cc:230
bool IsPressing(MouseButton button) const noexcept
ボタンが押されているかを取得
Definition mgl_mouse_server.cc:138
bool IsPressingAny(MouseButtonFlags buttonFlags=kMouseButtonAll) const noexcept
指定したボタンが全て押されているかを取得
Definition mgl_mouse_server.cc:166
bool IsTriggered(MouseButton button) const noexcept
ボタンが押された瞬間を取得
Definition mgl_mouse_server.cc:180
const Vector2 & GetUVPosition() const noexcept
マウスポインタの位置をUV座標で取得
Definition mgl_mouse_server.cc:218
bool SetCursorMode(CursorMode cursorMode) noexcept
カーソルモードを設定
Definition mgl_mouse_server.cc:283
bool IsAvailable() const noexcept
マウスサーバが有効かどうかを返す
Definition mgl_mouse_server.h:45
CursorMode GetCursorMode() const noexcept
カーソルモードを取得
Definition mgl_mouse_server.cc:300
CursorVisibleMode GetCursorVisibleMode() const noexcept
カーソルの表示モードを取得
Definition mgl_mouse_server.cc:332
bool Initialize(STL::unique_ptr< MouseDelegate > &delegate) noexcept
初期化処理
Definition mgl_mouse_server.cc:50
void SetCursorVisibleMode(CursorVisibleMode visibleMode) noexcept
カーソルの表示モードを設定
Definition mgl_mouse_server.cc:317
const Vector2 & GetPosition() const noexcept
マウスポインタの位置を取得
Definition mgl_mouse_server.cc:206
void SetBounds(const Rectangle &bounds) noexcept
マウスの入力範囲を設定
Definition mgl_mouse_server.cc:254
const Vector2 & GetUVDeltaMove() const noexcept
マウスポインタの移動量をUV座標で取得
Definition mgl_mouse_server.cc:242
MouseServer() noexcept
コンストラクタ
Definition mgl_mouse_server.cc:34
bool IsReleased(MouseButton button) const noexcept
ボタンが離された瞬間を取得
Definition mgl_mouse_server.cc:194
static STL::unique_ptr< MouseServer > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_mouse_server.cc:22
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
MGL イベント
MGL 入力範囲
MGL マウス入力デリゲート基底クラス
CursorVisibleMode
表示設定
Definition mgl_mouse_state.h:75
MouseButton
マウスボタン
Definition mgl_mouse_state.h:23
CursorMode
カーソルモード
Definition mgl_mouse_state.h:67
MGL シングルトンクラス
MGL STLのメモリ関連の代替
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247
マウスの状態
Definition mgl_mouse_state.h:52
矩形
Definition mgl_rectangle.h:20
2Dベクトル
Definition mgl_vector2.h:23