1
0
mirror of https://github.com/borgesdan/xn65 synced 2024-12-29 21:54:47 +01:00
xn65/framework/platform/mouse-dx.hpp

74 lines
1.7 KiB
C++
Raw Normal View History

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