Dodaj obsługę myszy

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 lub nullptr w statusCallback.
  • Parametr userData jest opcjonalnym wskaźnikiem do danych zdefiniowanych przez użytkownika. Parametr userData zostanie przekazany do funkcji wywołania zwrotnego. Ten wskaźnik jest zachowywany wewnętrznie, dopóki nie zostanie zmieniony przez inne wywołanie do Paddleboat_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.