Aby dodać do gry obsługę myszy za pomocą biblioteki Game Controller, użyj tych funkcji. Określenie „urządzenia wskazujące” odnosi się do tradycyjnych myszy, a także trackpadów i trackballi.
Dodawanie wywołania zwrotnego stanu myszy
Biblioteka Game Controller używa wywołania zwrotnego stanu myszy, aby powiadamiać grę o podłączeniu lub odłączeniu myszy. Obsługuje tylko 1 wywołanie zwrotne stanu myszy naraz.
- 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ąć zarejestrowane wywołanie zwrotne, przekaż wartość
NULL
lubnullptr
w parametrzestatusCallback
. - Parametr
userData
jest opcjonalnym wskaźnikiem danych zdefiniowanych przez użytkownika. ParametruserData
zostanie przekazany do funkcji wywołania zwrotnego. Ten wskaźnik jest przechowywany wewnętrznie, dopóki nie zostanie zmieniony przez inne wywołanie funkcjiPaddleboat_setMouseStatusCallback
.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
Podpis funkcji wywołania zwrotnego stanu myszy jest następujący:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
Parametr wyliczeniowy mouseStatus
ma 3 możliwe wartości:
PADDLEBOAT_MOUSE_NONE
: brak połączonych urządzeń wskazujących.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: Podłączony kontroler symuluje mysz.PADDLEBOAT_MOUSE_PHYSICAL
: podłączone są co najmniej 2 myszy. (Do tych urządzeń należą mysz, touchpad, trackball i inne podobne urządzenia).
Parametr userData
zawiera wskaźnik userData
określony w ostatnim wywołaniu funkcji Paddleboat_setMouseStatusCallback
. Wartość userData
może być równa NULL lub nullptr
.
Nie wszystkie kontrolery symulują mysz. Kontrolery mogą symulować mysz za pomocą jednego z drążków analogowych lub zintegrowanego touchpada.
Biblioteka Game Controller zgłasza dane tylko z jednego urządzenia wskazującego. Fizyczne myszy mają wyższy priorytet niż wirtualne myszy kontrolera. Jeśli podłączysz mysz fizyczną, zastąpi ona wcześniej aktywną mysz wirtualnego kontrolera.
Odczytywanie danych myszy
Wywołaj funkcję Paddleboat_getMouseStatus
, aby uzyskać stan urządzenia wskazującego.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Użyj funkcji Paddleboat_getMouseData
, aby uzyskać bieżące dane myszy. Jeśli dane zostaną odczytane, funkcja zwraca wartość PADDLEBOAT_NO_ERROR
. W przeciwnym razie zwracany jest odpowiedni kod błędu.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
Struktura Paddleboat_Mouse_Data
zawiera informacje o:
- Sygnatura czasowa ostatniego zdarzenia wejścia myszy
- bieżące 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 związanego z wejściem z myszy. Wartość sygnatury czasowej jest podana w mikrosekundach od początku epoki zegara. |
buttonsDown
|
Pole bitowe, w którym każdy bit, począwszy od bitu 0, oznacza stan naciśnięcia przycisku, jeśli jest ustawiony. |
mouseX mouseY
|
Położenie myszy we współrzędnych pikseli.
Współrzędne pozycji mieszczą się w zakresie od 0.0 do szerokości i wysokości ekranu. |
mouseScrollDeltaH mouseScrollDeltaV
|
Liczba zdarzeń przewijania kółkiem myszy od poprzedniego wywołania funkcji Paddleboat_getMouseData . Wartości te nie muszą być dokładne, a jedynie wskazywać aktywność kółka przewijania w określonym kierunku. Większość myszy ma 1 kółko przewijania, co jest zgłaszane w polu mouseScrollDeltaV . Jeśli mysz ma boczne kółko przewijania, jest ono zgłaszane w mouseScrollDeltaH . Wartości te są resetowane wewnętrznie do 0 po wywołaniu Paddleboat_getMouseData . |
Biblioteka Game Controller definiuje stałe masek bitowych dla przycisków myszy w pliku nagłówkowym 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 wskazujące
Wartość Paddleboat_MouseStatus
w przypadku PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
oznacza, że nie ma fizycznej myszy, a biblioteka Game Controller symuluje wirtualną mysz za pomocą podłączonego kontrolera. Najniższy indeks podłączonego kontrolera z ustawioną flagą PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
jest używany jako wirtualna mysz. Wirtualne urządzenia wskazujące gwarantują tylko raportowanie współrzędnychmouseX
i mouseY
. Wirtualne urządzenia wskazujące mogą zgłaszać naciśnięcia tylko jednego (lewego) przycisku myszy, ale nie jest to gwarantowane.