MGL::Input::Mouse#

概要#

MGL::Input::Mouseはマウス入力を取得するためのクラスです。

宣言#

namespace MGL::Input
{
    class Mouse;
}

メンバ情報#

種類

名前

内容

関数

IsAvailable

マウスが利用可能かを取得

関数

IsConnecting

マウスの接続状態を取得

関数

IsPressing

ボタンの押下状態を取得

関数

IsPressingAny

指定されたいずれかのボタンが押されているかを取得

関数

IsTriggered

ボタンが押された瞬間を取得

関数

IsReleased

ボタンが離された瞬間を取得

関数

GetPosition

マウスカーソルの位置を取得

関数

GetUVPosition

マウスカーソルの位置をUV座標で取得

関数

GetDeltaMove

マウスカーソルの移動量を取得

関数

GetUVDeltaMove

マウスカーソルの移動量をUV座標で取得

関数

SetBounds

マウスカーソルの基準範囲と論理サイズの設定

関数

SetCursorMode

マウスのカーソルモードを設定

関数

GetCursorMode

マウスのカーソルモードを取得

関数

SetCursorVisibleMode

マウスカーソルの表示モードを設定

関数

GetCursorVisibleMode

マウスカーソルの表示モードを取得


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;
}

関連#