2024-04-16 19:27:05 -03:00
|
|
|
#ifndef XNA_PLATFORM_MOUSE_DX_HPP
|
|
|
|
#define XNA_PLATFORM_MOUSE_DX_HPP
|
|
|
|
|
|
|
|
#include "../input/mouse.hpp"
|
|
|
|
#include <Mouse.h>
|
|
|
|
|
|
|
|
namespace xna {
|
|
|
|
struct MouseState : public IMouseState {
|
|
|
|
constexpr MouseState() = default;
|
|
|
|
|
|
|
|
constexpr MouseState(DirectX::Mouse::State const& dxMouseState) {
|
|
|
|
LeftButton = static_cast<ButtonState>(dxMouseState.leftButton);
|
2024-04-17 09:48:48 -03:00
|
|
|
RightButton = static_cast<ButtonState>(dxMouseState.rightButton);
|
|
|
|
MiddleButton = static_cast<ButtonState>(dxMouseState.middleButton);
|
|
|
|
XButton1 = static_cast<ButtonState>(dxMouseState.xButton1);
|
|
|
|
XButton2 = static_cast<ButtonState>(dxMouseState.xButton2);
|
2024-04-16 19:27:05 -03:00
|
|
|
X = dxMouseState.x;
|
|
|
|
Y = dxMouseState.y;
|
|
|
|
ScroolWheelValue = dxMouseState.scrollWheelValue;
|
2024-04-17 09:48:48 -03:00
|
|
|
}
|
2024-04-16 19:27:05 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
struct Mouse : public IMouse {
|
2024-04-24 10:11:53 -03:00
|
|
|
inline static void Initialize() {
|
|
|
|
_dxMouse = uNew<DirectX::Mouse>();
|
|
|
|
}
|
|
|
|
|
2024-04-16 19:27:05 -03:00
|
|
|
public:
|
2024-04-19 16:21:45 -03:00
|
|
|
inline static uptr<DirectX::Mouse> _dxMouse = nullptr;
|
|
|
|
|
|
|
|
private:
|
|
|
|
constexpr Mouse() = default;
|
|
|
|
constexpr Mouse(Mouse&&) = default;
|
|
|
|
constexpr Mouse(const Mouse&) = default;
|
2024-04-16 19:27:05 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
inline MouseState IMouse::GetState() {
|
|
|
|
if (!Mouse::_dxMouse)
|
|
|
|
return MouseState();
|
|
|
|
|
|
|
|
const auto state = Mouse::_dxMouse->GetState();
|
|
|
|
return MouseState(state);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline bool IMouse::IsConnected() {
|
|
|
|
if (!Mouse::_dxMouse)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
return Mouse::_dxMouse->IsConnected();
|
|
|
|
}
|
|
|
|
|
|
|
|
inline bool IMouse::IsVisible() {
|
|
|
|
if (!Mouse::_dxMouse)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
return Mouse::_dxMouse->IsVisible();
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void IMouse::IsVisible(bool value) {
|
|
|
|
if (!Mouse::_dxMouse)
|
|
|
|
return;
|
|
|
|
|
|
|
|
Mouse::_dxMouse->SetVisible(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void IMouse::ResetScrollWheel() {
|
|
|
|
if (!Mouse::_dxMouse)
|
|
|
|
return;
|
|
|
|
|
|
|
|
Mouse::_dxMouse->ResetScrollWheelValue();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|