Użyj poniższych funkcji, aby dodać obsługę myszy do gry za pomocą biblioteki kontrolera gier. Termin „urządzenia myszy” odnosi się do tradycyjnych myszy oraz trackpadów i trackballów.
Dodaj wywołanie zwrotne stanu myszy
Biblioteka kontrolera gier korzysta z wywołania zwrotnego stanu myszy, aby powiadamiać grę o połączeniu lub rozłączeniu myszy. Obsługuje tylko jedno wywołanie zwrotne stanu myszy.
- Aby zarejestrować wywołanie zwrotne stanu myszy lub zastąpić wcześniej zarejestrowane wywołanie zwrotne nową funkcją wywołania zwrotnego, wywołaj funkcję
Paddleboat_setMouseStatusCallback
. - Aby usunąć obecnie zarejestrowane wywołanie zwrotne, przekaż parametr
NULL
lubnullptr
w parametrzestatusCallback
. - Parametr
userData
jest opcjonalnym wskaźnikiem danych zdefiniowanych przez użytkownika. ParametruserData
jest przekazywany do funkcji wywołania zwrotnego. Ten wskaźnik jest zachowywany wewnętrznie, dopóki nie zostanie zmienione przez inne wywołanie funkcjiPaddleboat_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 myszka.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: podłączony kontroler symuluje mysz.PADDLEBOAT_MOUSE_PHYSICAL
: podłączona jest co najmniej 1 fizyczna mysz. (Urządzenia te obejmują mysz, touchpad, kulkę lub inne podobne urządzenia).
Parametr userData
zawiera wskaźnik userData
określony w ostatnim wywołaniu funkcji Paddleboat_setMouseStatusCallback
. userData
może mieć wartość NULL lub nullptr
.
Nie wszystkie kontrolery symulują mysz. Kontrolery mogą symulować mysz za pomocą gałków analogowych lub zintegrowanego touchpada.
Biblioteka kontrolerów gier przekazuje dane tylko z jednej myszy. Fizyczne myszy mają wyższy priorytet niż myszy kontrolery wirtualne. Jeśli podłączona jest mysz fizyczna, przejmuje ona dowolną aktywną wcześniej mysz wirtualną kontrolera.
Odczyt danych myszy
Wywołaj funkcję Paddleboat_getMouseStatus
, aby sprawdzić stan myszy.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Aby pobrać bieżące dane myszy, użyj funkcji Paddleboat_getMouseData
. Jeśli dane zostały odczytane, funkcja zwraca PADDLEBOAT_NO_ERROR
. W przeciwnym razie zwraca odpowiedni kod błędu.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
Struktura Paddleboat_Mouse_Data
zawiera te informacje:
- Sygnatura czasowa ostatniej sygnatury czasowej zdarzenia dotyczącego danych wejściowych myszy
- Bieżąca pozycja 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;
}
Użytkownik struktury | Opis |
---|---|
timestamp
|
Sygnatura czasowa ostatniego zdarzenia wpisywania danych myszą. Wartość sygnatury czasowej jest podana w mikrosekundach od. Epoka zegara. |
buttonsDown
|
Pole bitowe, każdy bit, zaczynający się od bitu 0, oznacza ustawiony stan przycisku. |
mouseX mouseY
|
Położenie myszy we współrzędnych w pikselach.
Współrzędne pozycji mają zakres od 0.0
do szerokości i wysokości ekranu. |
mouseScrollDeltaH mouseScrollDeltaV
|
Liczba wszystkich zdarzeń kółka przewijania myszy od poprzedniego wywołania Paddleboat_getMouseData . Wartości te nie muszą być dokładne, ale wskazują tylko aktywność kółka przewijania we wskazanym kierunku. Większość myszy jest wyposażona w 1 koło przewijania, którego stan jest ujęty w mouseScrollDeltaV . Jeśli mysz jest wyposażona w koło przewijania, jej stan w raportach jest widoczny w raporcie mouseScrollDeltaH . Po wywołaniu Paddleboat_getMouseData te wartości są wewnętrznie resetowane do wartości 0 . |
Biblioteka kontrolera gier definiuje stałe maski bitowe przycisków myszy w pliku 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)
};
Fizyczne i wirtualne urządzenia myszy
Wartość Paddleboat_MouseStatus
o wartości PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
oznacza, że nie ma fizycznego urządzenia myszy, a biblioteka kontrolera gier symuluje mysz wirtualną za pomocą podłączonego kontrolera. Jako mysz wirtualna używany jest najniższy indeks połączonego kontrolera z ustawioną flagą PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
. Wirtualne urządzenia myszy mają gwarancję, że będą raportować tylko współrzędne mouseX
i mouseY
. Wirtualne urządzenia myszy mogą zgłaszać naciśnięcia
pojedynczego (lewego) przycisku myszy, ale nie jest to gwarantowane.