Проверьте, находится ли мышь внутри игрового окна - PullRequest
0 голосов
/ 24 августа 2011

Я использую XNA для визуализации 3D-сцены в окне (= не в полноэкранном режиме). Пользователь может щелкнуть и перетащить мышь, чтобы переместить камеру:

Public Sub New()
    ...
    Me.IsMouseVisible = True
    Me.Window.AllowUserResizing = True
    ...
End Sub

Protected Overrides Sub Update(ByVal gameTime As Microsoft.Xna.Framework.GameTime)
    Dim m = Mouse.GetState()

    ' Change camera position based on m
    ...
End Sub

Это работает. Проблема в том, что это работает даже тогда, когда мышь находится внутри , а не внутри игрового окна, что выглядит немного странно (я перемещаю почту в Outlook, и 3D-сцена в другом окне начинает вращаться).

Я не нашел Mouse.IsInsideGameWindow() собственности. Есть ли что-нибудь еще, что я могу (легко) сделать, чтобы избежать этого?

1 Ответ

8 голосов
/ 24 августа 2011
bool IsMouseInsideWindow()
{
    MouseState ms = Mouse.GetState();
    Point pos = new Point(ms.X, ms.Y);
    return GraphicsDevice.Viewport.Bounds.Contains(pos);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...