Aby dodać obsługę myszy do gry, użyj tych funkcji – Biblioteka kontrolera gier. Używamy tu terminu „myszki”, aby opisać myszy, ale też trackpady i kulki.
Dodaj wywołanie zwrotne dla stanu myszy
Biblioteka kontrolera gier wykorzystuje wywołanie zwrotne stanu myszy, aby powiadomić grę, gdy mysz jest podłączona lub odłączona. Obsługuje tylko jedno wywołanie zwrotne stanu myszy za jednym razem.
- Aby zarejestrować wywołanie zwrotne stanu myszy lub zastąpić dowolne wcześniej zarejestrowane
z nową funkcją wywołania zwrotnego, wywołaj metodę
Paddleboat_setMouseStatusCallback
. - Aby usunąć aktualnie zarejestrowane wywołanie zwrotne, przekaż
NULL
lubnullptr
wstatusCallback
. - Parametr
userData
jest opcjonalnym wskaźnikiem do danych zdefiniowanych przez użytkownika. ParametruserData
zostanie przekazany do funkcji wywołania zwrotnego. Ten wskaźnik jest zachowywany wewnętrznie, dopóki nie zostanie zmieniony przez inne wywołanie doPaddleboat_setMouseStatusCallback
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
Podpis funkcji wywołania zwrotnego stanu myszy:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
Parametr wyliczenia mouseStatus
ma 3 możliwe wartości:
PADDLEBOAT_MOUSE_NONE
: nie jest obecnie podłączona żadna mysz.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: podłączony kontroler jest symulowany mysz.PADDLEBOAT_MOUSE_PHYSICAL
: co najmniej 1 fizyczna mysz jest – podłączono (urządzenia te to np. mysz, touchpad, kulka lub inne na podobnych urządzeniach).
Parametr userData
zawiera wskaźnik userData
określony w ostatnim
połączenie z numerem Paddleboat_setMouseStatusCallback
. userData
może mieć wartość NULL lub
nullptr
Nie wszystkie kontrolery symulują mysz. Kontrolery mogą symulować mysz za pomocą jednego z nich np. gałki analogowej lub zintegrowanego touchpada.
Biblioteka kontrolera gier raportuje dane tylko z jednego urządzenia myszy. Fizyczne myszki mają wyższy priorytet niż myszki kontrolera wirtualnego. Jeśli podłączona jest fizyczna mysz, zajmuje ona miejsce za pomocą myszy kontrolera.
Odczyt danych myszy
Wywołaj funkcję Paddleboat_getMouseStatus
, aby poznać stan myszy.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Korzystanie z Paddleboat_getMouseData
pobierze bieżące dane myszy. Ta funkcja zwraca
PADDLEBOAT_NO_ERROR
, jeśli dane zostały odczytane. W przeciwnym razie
zwracany jest odpowiedni kod błędu.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
Struktura Paddleboat_Mouse_Data
zawiera informacje o:
- Najnowsza sygnatura czasowa zdarzenia wejściowego użycia myszy
- Aktualne położenie wskaźnika.
- Stan przycisków myszy
- Stan kółek myszy
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
Członek struktury | Opis |
---|---|
timestamp
|
Sygnatura czasowa ostatniego zdarzenia użycia myszy. Wartość sygnatury czasowej jest podana w mikrosekundach od tego czasu. epoki zegara. |
buttonsDown
|
Pole bitowe, każdy bit od bitu 0 oznacza stan wyłączenia przycisku, jeśli jest ustawiony. |
mouseX mouseY
|
Pozycja myszy we współrzędnych pikseli.
Współrzędne położenia mają zakres od 0.0 do
szerokości i wysokości ekranu. |
mouseScrollDeltaH mouseScrollDeltaV
|
Łączna liczba zdarzeń przewijania kółkiem myszy :
od poprzedniego połączenia do
Paddleboat_getMouseData Te wartości nie są
musi być precyzyjna, a jedynie podać
o aktywności kółka przewijania w
w konkretnym kierunku. Większość myszy ma
kółko do przewijania, które jest podawane w
mouseScrollDeltaV Jeśli mysz ma bok
kółkiem przewijania, jest wyświetlany w
mouseScrollDeltaH Te wartości są resetowane do
0 wewnętrznie po połączeniu z
Paddleboat_getMouseData |
Biblioteka kontrolera gier definiuje stałe maski bitowe dla przycisków myszy
Plik nagłówka interfejsu paddleboat.h
:
enum Paddleboat_Mouse_Buttons {
PADDLEBOAT_MOUSE_BUTTON_LEFT = (1U << 0),
PADDLEBOAT_MOUSE_BUTTON_RIGHT = (1U << 1),
PADDLEBOAT_MOUSE_BUTTON_MIDDLE = (1U << 2),
PADDLEBOAT_MOUSE_BUTTON_BACK = (1U << 3),
PADDLEBOAT_MOUSE_BUTTON_FORWARD = (1U << 4),
PADDLEBOAT_MOUSE_BUTTON_6 = (1U << 5),
PADDLEBOAT_MOUSE_BUTTON_7 = (1U << 6),
PADDLEBOAT_MOUSE_BUTTON_8 = (1U << 7)
};
Myszki fizyczne a wirtualne
Wartość Paddleboat_MouseStatus
o wartości PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
oznacza
że brakuje fizycznej myszy, a biblioteka kontrolera gier jest
symulację myszy wirtualnej za pomocą podłączonego kontrolera. Najniższe połączenie
indeks kontrolera z ustawioną flagą PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
to
w taki sam sposób jak mysz wirtualna. Gwarantowane są tylko zgłoszenia wirtualnych myszek
Współrzędne mouseX
i mouseY
. Wirtualne myszki mogą zgłaszać naciśnięcia
jeden (lewy) przycisk myszy, ale nie jest to gwarantowane.