MGL::Input::Mouse
Contents
MGL::Input::Mouse#
概要#
MGL::Input::Mouseはマウス入力を取得するためのクラスです。
宣言#
namespace MGL::Input
{
class Mouse;
}
メンバ情報#
種類 |
名前 |
内容 |
---|---|---|
関数 |
マウスが利用可能かを取得 |
|
関数 |
マウスの接続状態を取得 |
|
関数 |
ボタンの押下状態を取得 |
|
関数 |
指定されたいずれかのボタンが押されているかを取得 |
|
関数 |
ボタンが押された瞬間を取得 |
|
関数 |
ボタンが離された瞬間を取得 |
|
関数 |
マウスカーソルの位置を取得 |
|
関数 |
マウスカーソルの位置をUV座標で取得 |
|
関数 |
マウスカーソルの移動量を取得 |
|
関数 |
マウスカーソルの移動量をUV座標で取得 |
|
関数 |
マウスカーソルの基準範囲と論理サイズの設定 |
|
関数 |
マウスのカーソルモードを設定 |
|
関数 |
マウスのカーソルモードを取得 |
|
関数 |
マウスカーソルの表示モードを設定 |
|
関数 |
マウスカーソルの表示モードを取得 |
IsAvailable#
マウスが利用可能かを取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] bool IsAvailable() const noexcept;
};
}
戻り値#
- bool
利用可能な場合は
true
、利用不可能な場合はfalse
説明#
実行中の環境においてマウスが利用可能かを取得します。
この関数はマウスを認識可能な環境であれば接続状態に関わらずtrue
を返します。ユーザーがマウスを使える状態であるかを判別する場合はIsConnectingを利用してください。
標準構成におけるWindowsとmacOSでは、この関数は常にtrue
を返します。iOS/iPadOSとtvOSは現時点では常にfalse
を返します。
注釈
iOS/iPadOSとtvOSにおいては、将来マウス入力に対応する可能性がありますが、現時点では対応していません。
利用例#
MGL::Input::Mouse mouse;
if (mouse.IsAvailable())
{
MGL_TRACE("マウス利用可能");
}
else
{
MGL_TRACE("マウス利用不可");
}
関連#
IsConnecting#
マウスの接続状態を取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] constexpr bool IsConnecting() const noexcept;
};
}
戻り値#
- bool
マウスが接続されていれば
true
、接続されていなければfalse
説明#
マウスの接続状況を取得します。
マウスを認識できない環境では常にfalse
を返します。ユーザーがマウスを使える状態であるかを判別する場合はIsAvailableよりもこちらを利用してください。
標準構成におけるWindowsとmacOSでは、この関数は常にtrue
を返します。iOS/iPadOSとtvOSは現時点では常にfalse
を返します。
注釈
iOS/iPadOSとtvOSにおいては、将来マウス入力に対応する可能性がありますが、現時点では対応していません。
利用例#
MGL::Input::Mouse mouse;
if (mouse.IsConnecting())
{
MGL_TRACE("マウスが接続されている");
}
else
{
MGL_TRACE("マウスが接続されていない");
}
関連#
IsPressing#
ボタンの押下状態を取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
// (1) ボタンの押下状態を取得
[[nodiscard]] bool IsPressing(MouseButton button) const noexcept;
// (2) 複数ボタンの押下状態を取得
[[nodiscard]] bool IsPressing(MouseButtonFlags buttonFlags) const noexcept;
};
}
引数#
- (1) ボタンの押下状態を取得
- MGL::Input::MouseButton button
取得するボタンの種類
- (2) 複数ボタンの押下状態を取得
- MGL::Input::MouseButtonFlags buttonFlags
取得するボタンのビットフラグ
戻り値#
- bool
指定されたボタンが押されていれば
true
、押されていなければfalse
説明#
マウスのボタンの押下状態を取得します。
(1) は1つのボタンの判定に使用します。 (2) は2つ以上のボタンの組み合わせを同時に判定する場合に使用します。
ビットフラグによるボタンの組み合わせはMouseButtonに|
(or)演算子を使用することでMouseButtonFlagsへと変換可能です。
マウスが認識できない、または接続されていない環境においては、この関数は常にfalse
を返します。
利用例#
MGL::Input::Mouse mouse;
// マウスの右ボタンの押下状態を取得
if (mouse.IsPressing(MGL::Input::MouseButton::Left))
{
MGL_TRACE("マウスの右ボタンが押されている");
}
// マウスの右ボタンと左ボタンが同時に押されているかを取得
if (mouse.IsPressing(MGL::Input::MouseButton::Left | MGL::Input::MouseButton::Right))
{
MGL_TRACE("マウスの左右のボタンが押されている");
}
関連#
IsPressingAny#
指定されたいずれかのボタンが押されているかを取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] bool IsPressingAny(MouseButtonFlags buttonFlags = kMouseButtonAll) const noexcept
};
}
引数#
- MGL::Input::MouseButtonFlags buttonFlags
取得するボタンのビットフラグ。省略時は全てのボタン
戻り値#
- bool
指定されたボタンのいずれかが押されていれば
true
、どれも押されていなければfalse
説明#
引数で指定したボタンのいずれかが押されているかを取得します。引数を省略した場合は全てのボタンを対象にして取得します。
ビットフラグによるボタンの組み合わせはMouseButtonに|
(or)演算子を使用することでMouseButtonFlagsへと変換可能です。
マウスが認識できない、または接続されていない環境においては、この関数は常にfalse
を返します。
利用例#
MGL::Input::Mouse mouse;
// マウスの右ボタンと左ボタンのどちらかが押されているかを取得
if (mouse.IsPressingAny(MGL::Input::MouseButton::Left | MGL::Input::MouseButton::Right))
{
MGL_TRACE("マウスの左右どちらかのボタンが押されている");
}
// いずれかのマウスボタンが押されているかを取得
if (mouse.IsPressingAny())
{
MGL_TRACE("マウスのいずれかのボタンが押されている");
}
関連#
IsTriggered#
ボタンが押された瞬間を取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] bool IsTriggered(MouseButton button) const noexcept;
};
}
引数#
- MGL::Input::MouseButton button
取得するボタンの種類
戻り値#
- bool
押された瞬間であれば
true
、それ以外はfalse
説明#
ボタンを認識した最初のフレームだけtrue
を返します。具体的には、指定されたボタンがそのフレームで入力されていて、前回のフレームでは入力されていない場合にtrue
となります。
マウスが認識できない、または接続されていない環境においては、この関数は常にfalse
を返します。
利用例#
MGL::Input::Mouse mouse;
// マウスの右ボタンが押された瞬間を取得
if (mouse.IsTriggered(MGL::Input::MouseButton::Left))
{
MGL_TRACE("マウスの右ボタンが押された");
}
関連#
IsReleased#
ボタンが離された瞬間を取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] bool IsReleased(MouseButton button) const noexcept;
};
}
引数#
- MGL::Input::MouseButton button
取得するボタンの種類
戻り値#
- bool
離された瞬間であれば
true
、それ以外はfalse
説明#
ボタンが離された最初のフレームだけtrue
を返します。具体的には、指定されたボタンがそのフレームで入力されておらず、前回のフレームでは入力されていた場合にtrue
となります。
マウスが認識できない、または接続されていない環境においては、この関数は常にfalse
を返します。
利用例#
MGL::Input::Mouse mouse;
// マウスの右ボタンが離された瞬間を取得
if (mouse.IsReleased(MGL::Input::MouseButton::Left))
{
MGL_TRACE("マウスの右ボタンが離された");
}
関連#
GetPosition#
マウスカーソルの位置を取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] const Vector2 &GetPosition() const noexcept;
};
}
戻り値#
- const MGL::Vector2 &
マウスカーソルの位置
説明#
現在のマウスカーソルの位置を取得します。
マウスカーソルの座標の基準範囲と単位は、デフォルトでは画面またはウィンドウの物理解像度に準じています。この基準はSetBoundsで調整可能です。
マウスが認識できない、または接続されていない環境においては、この関数は常にMGL::Vector2(0.0f, 0.0f)
を返します。
利用例#
MGL::Input::Mouse mouse;
// カーソル位置を取得して表示
auto cursorPosition = mouse.GetPosition();
MGL_TRACE("カーソル位置: %f, %f", cursorPosition.x, cursorPosition.y);
関連#
GetUVPosition#
マウスカーソルの位置をUV座標系で取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] const Vector2 &GetUVPosition() const noexcept;
};
}
戻り値#
- const MGL::Vector2 &
正規化されたマウスカーソルの位置
説明#
現在のマウスカーソルの位置をUV座標系で取得します。
この関数が返す座標は、基準となる範囲内において0.0から1.0で正規化された値となります。カーソルが基準の範囲外にある場合は負数や1.0以上となります。
基準となる範囲はデフォルトでは画面またはウィンドウの全領域であり、SetBoundsで調整可能です。
マウスが認識できない、または接続されていない環境においては、この関数は常にMGL::Vector2(0.0f, 0.0f)
を返します。
利用例#
MGL::Input::Mouse mouse;
// カーソル位置を取得して表示
auto cursorPosition = mouse.GetUVPosition();
MGL_TRACE("カーソル位置(UV): %f, %f", cursorPosition.x, cursorPosition.y);
関連#
GetDeltaMove#
マウスカーソルの移動量を取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] const Vector2 &GetDeltaMove() const noexcept
};
}
戻り値#
- const MGL::Vector2 &
マウスカーソルの移動量
説明#
前フレームからのマウスの総移動量を取得します。この関数が返す値は、GetPositionで取得できる座標の前フレームからの差分となります。
マウスが認識できない、または接続されていない環境においては、この関数は常にMGL::Vector2(0.0f, 0.0f)
を返します。
利用例#
MGL::Input::Mouse mouse;
// カーソル位置を取得して表示
auto deltaMove = mouse.GetDeltaMove();
MGL_TRACE("カーソル移動量: %f, %f", deltaMove.x, deltaMove.y);
関連#
GetUVDeltaMove#
マウスカーソルの移動量をUV座標系で取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] const Vector2 &GetUVDeltaMove() const noexcept;
};
}
戻り値#
- const MGL::Vector2 &
正規化されたマウスカーソルの移動量
説明#
前フレームからのマウスの総移動量をUV座標系で取得します。この関数が返す値は、GetUVPositionで取得できる座標の前フレームからの差分となります。
マウスが認識できない、または接続されていない環境においては、この関数は常にMGL::Vector2(0.0f, 0.0f)
を返します。
利用例#
MGL::Input::Mouse mouse;
// カーソル位置を取得して表示
auto deltaMove = mouse.GetUVDeltaMove();
MGL_TRACE("カーソル移動量(UV): %f, %f", deltaMove.x, deltaMove.y);
関連#
SetBounds#
マウスカーソルの基準範囲と論理サイズの設定
宣言#
namespace MGL::Input
{
class Mouse
{
public:
// (1) 基準範囲を設定
void SetBounds(const Rectangle &bounds) noexcept;
// (2) 基準範囲と論理サイズで設定
void SetBounds(
const Rectangle &bounds,
const Vector2 &pseudoSize) noexcept;
};
}
引数#
- (1) 基準範囲を設定
- const MGL::Rectangle &bounds
基準範囲の矩形
- (2) 基準範囲と論理サイズで設定
- const MGL::Rectangle &bounds
基準範囲の矩形
- const MGL::Vector2 &logicalSize
論理サイズ
説明#
マウスカーソルの座標の基準範囲を設定します。この関数は主にゲーム内の解像度とクライアントサイズが一致していない場合に利用します。
(1) は基準となる範囲のみを設定します。ゲーム内の解像度とは比率のみが異なる場合はこちらを利用します。
(2) は基準範囲に加えて論理サイズも設定します。ゲーム画面をスケーリングして表示している場合などはこちらを利用します。
本関数の詳細については取得座標への論理解像度の適用を参照してください。
利用例#
取得座標への論理解像度の適用を参照してください。
関連#
SetCursorMode#
マウスのカーソルモードを設定
宣言#
namespace MGL::Input
{
class Mouse
{
public:
bool SetCursorMode(CursorMode cursorMode) noexcept;
};
}
引数#
- MGL::Input::CursorMode cursorMode
設定するカーソルモード
戻り値#
成功した場合は
true
、失敗した場合はfalse
説明#
マウスのカーソルモードを変更します。指定するモードの詳細についてはMGL::Input::CursorModeを参照してください。
引数にDeltaMove
を指定した場合、SetCursorVisibleModeの設定値に関わらずマウスカーソルは非表示となります。
使用中のマウスデリゲートが対応していないモードを指定した場合、関数は処理に失敗しfalse
を返します。
利用例#
MGL::Input::Mouse mouse;
// 移動量取得モードに変更
if (!mouse.SetCursorMode(MGL::Input::CursorMode::DeltaMove))
{
MGL_TRACE("移動量取得モードに対応していない");
}
関連#
GetCursorMode#
マウスのカーソルモードを取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] CursorMode GetCursorMode() const noexcept;
};
}
戻り値#
- MGL::Input::CursorMode
現在のカーソルモード
説明#
現在のカーソルモードを取得します。
利用例#
MGL::Input::Mouse mouse;
switch (mouse.GetCursorMode())
{
case MGL::Input::CursorMode::None:
MGL_TRACE("モードなし");
break;
case MGL::Input::CursorMode::Pointer:
MGL_TRACE("ポインタモード");
break;
case MGL::Input::CursorMode::DeltaMove:
MGL_TRACE("移動量取得モード");
break;
}
関連#
SetCursorVisibleMode#
マウスカーソルの表示モードを設定
宣言#
namespace MGL::Input
{
class Mouse
{
public:
void SetCursorVisibleMode(CursorVisibleMode visibleMode) noexcept;
};
}
引数#
- MGL::Input::CursorVisibleMode visibleMode
カーソルの表示モード
説明#
カーソルの表示モードを変更します。主にカーソルの表示・非表示を切り替える際に利用します。
指定するモードの詳細についてはMGL::Input::CursorVisibleModeを参照してください。
利用例#
MGL::Input::Mouse mouse;
// マウスカーソルを非表示に切り替え
mouse.SetCursorVisibleMode(MGL::Input::CursorVisibleMode::Invisible);
関連#
GetCursorVisibleMode#
マウスカーソルの表示モードを取得
宣言#
namespace MGL::Input
{
class Mouse
{
public:
[[nodiscard]] CursorVisibleMode GetCursorVisibleMode() const noexcept;
};
}
戻り値#
- MGL::Input::CursorVisibleMode
現在の表示モード
説明#
現在のカーソルの表示モードを取得します。
利用例#
MGL::Input::Mouse mouse;
switch (mouse.GetCursorVisibleMode())
{
case MGL::Input::CursorVisibleMode::Visible:
MGL_TRACE("カーソル表示設定中");
break;
case MGL::Input::CursorVisibleMode::Invisible:
MGL_TRACE("カーソル非表示設定中");
break;
case MGL::Input::CursorVisibleMode::AutoInvisible:
MGL_TRACE("カーソル自動消去設定中");
break;
}