mirror of
https://github.com/encounter/aurora.git
synced 2026-07-09 18:19:33 -07:00
c21a7f75ab
* 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
33 lines
813 B
C++
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; }
|
|
} |