MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_keyboard_server.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_KEYBOARD_SERVER_H_1608985408
12#define INCGUARD_MGL_KEYBOARD_SERVER_H_1608985408
13
15#include <mgl/event/mgl_event.h>
18
19namespace MGL
20{
21class InitializerDelegate;
22}
23
24namespace MGL::Input
25{
27class KeyboardServer final : public SharedSingleton<KeyboardServer>
28{
29public:
31
32 KeyboardServer() noexcept;
33
34 bool Initialize(STL::unique_ptr<KeyboardDelegate> &delegate) noexcept;
35
36 /* ------------------------------------------------------------------------- */
42 /* ------------------------------------------------------------------------- */
43 [[nodiscard]] bool IsAvailable() const noexcept
44 {
45 return _delegate != nullptr;
46 }
47
48 [[nodiscard]] bool IsPressing(Keycode keycode) const noexcept;
49 [[nodiscard]] bool IsTriggered(Keycode keycode) const noexcept;
50 [[nodiscard]] bool IsReleased(Keycode keycode) const noexcept;
51 [[nodiscard]] bool IsARepeat(Keycode keycode) const noexcept;
52
53 /* ------------------------------------------------------------------------- */
58 /* ------------------------------------------------------------------------- */
59 constexpr void SetRepeatSetting(const RepeatSetting &repeatSetting) noexcept
60 {
61 _repeatSetting = repeatSetting;
62 }
63
64 /* ------------------------------------------------------------------------- */
69 /* ------------------------------------------------------------------------- */
70 [[nodiscard]] constexpr const RepeatSetting &GetRepeatSetting() const noexcept
71 {
72 return _repeatSetting;
73 }
74
75 /* ------------------------------------------------------------------------- */
81 /* ------------------------------------------------------------------------- */
82 [[nodiscard]] constexpr bool IsConnecting() const noexcept
83 {
84 return (_delegate != nullptr) ? _delegate->IsConnecting() : false;
85 }
86
87private:
88 static void OnEventPreFrameUpdate(void *callbackArg, void *notifyArg);
89
90 void UpdateModifierKeys() noexcept;
91 void UpdateRepeatInput() noexcept;
92
93 KeycodeArray _state;
94 KeycodeArray _prevState;
95 KeycodeArray _repeatState;
96
97 STL::unique_ptr<KeyboardDelegate> _delegate;
98
99 Event::Handle _eventPreFrameUpdate;
100
101 RepeatSetting _repeatSetting;
102 std::array<float, kKeycodeCount> _repeatTimerArray;
103};
104} // namespace MGL::Input
105#endif // INCGUARD_MGL_KEYBOARD_SERVER_H_1608985408
106
107// vim: et ts=4 sw=4 sts=4
キーボード入力デリゲート基底クラス
Definition mgl_keyboard_delegate.h:20
キーボードサーバ
Definition mgl_keyboard_server.h:28
static STL::unique_ptr< KeyboardServer > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_keyboard_server.cc:24
KeyboardServer() noexcept
コンストラクタ
Definition mgl_keyboard_server.cc:36
bool IsTriggered(Keycode keycode) const noexcept
指定したキーが押された瞬間を取得
Definition mgl_keyboard_server.cc:87
bool IsAvailable() const noexcept
キーボードサーバが有効かどうかを返す
Definition mgl_keyboard_server.h:43
constexpr bool IsConnecting() const noexcept
キーボードが接続されているかを取得
Definition mgl_keyboard_server.h:82
bool IsReleased(Keycode keycode) const noexcept
指定したキーが離された瞬間を取得
Definition mgl_keyboard_server.cc:103
bool IsARepeat(Keycode keycode) const noexcept
指定したキーのリピート入力状態を取得
Definition mgl_keyboard_server.cc:119
constexpr const RepeatSetting & GetRepeatSetting() const noexcept
リピート入力の設定状態を取得
Definition mgl_keyboard_server.h:70
bool Initialize(STL::unique_ptr< KeyboardDelegate > &delegate) noexcept
初期化処理
Definition mgl_keyboard_server.cc:52
bool IsPressing(Keycode keycode) const noexcept
指定したキーが押されているかを取得
Definition mgl_keyboard_server.cc:73
constexpr void SetRepeatSetting(const RepeatSetting &repeatSetting) noexcept
リピート入力を設定
Definition mgl_keyboard_server.h:59
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
MGL イベント
MGL リピート入力関連定義
MGL キーボード入力デリゲート基底クラス
Keycode
キーボード用コード
Definition mgl_keyboard_keycode.h:23
std::bitset< kKeycodeCount > KeycodeArray
キーコード用配列のエイリアス
Definition mgl_keyboard_keycode.h:101
MGL シングルトンクラス
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247
リピート設定
Definition mgl_input_repeat.h:25