Files
Phillip Stephens c21a7f75ab Add experimental mouse API (#126)
* Add experimental mouse API

* Add aurora::core library for aurora::ms

* Add absl::flat_hash_map library for aurora::ms

* Add comment clarifying MS is an aurora extension

* Clear MSStatus::buttons to prevent spurious values

* Minor cleanup for MSRead and MS_BUTTON_* bits

* Switch to Poll -> Read paradigm

* Clear mouse scroll state before polling for events
2026-04-16 12:57:10 -07:00

33 lines
813 B
C++

#include "dolphin/ms.h"
#include <SDL3/SDL_mouse.h>
#include "../../input.hpp"
extern "C" {
static MSStatus gStatus{};
void MSPoll() {
const uint32_t buttons = SDL_GetGlobalMouseState(&gStatus.x, &gStatus.y);
SDL_GetRelativeMouseState(&gStatus.xrel, &gStatus.yrel);
aurora::input::get_mouse_scroll(&gStatus.scrollX, &gStatus.scrollY);
gStatus.buttons = 0;
if (buttons & SDL_BUTTON_LEFT) {
gStatus.buttons |= MS_BUTTON_LEFT;
}
if (buttons & SDL_BUTTON_MIDDLE) {
gStatus.buttons |= MS_BUTTON_MIDDLE;
}
if (buttons & SDL_BUTTON_RIGHT) {
gStatus.buttons |= MS_BUTTON_RIGHT;
}
if (buttons & SDL_BUTTON_X1) {
gStatus.buttons |= MS_BUTTON_X1;
}
if (buttons & SDL_BUTTON_X2) {
gStatus.buttons |= MS_BUTTON_X2;
}
}
void MSRead(MSStatus* status) { *status = gStatus; }
}