Menambahkan dukungan perangkat mouse

Gunakan fungsi berikut untuk menambahkan dukungan perangkat mouse ke game menggunakan library Pengontrol Game. Di sini kami menggunakan istilah perangkat mouse untuk mendeskripsikan mouse tradisional, serta trackpad atau trackball.

Menambahkan callback status mouse

Library Pengontrol Game menggunakan callback status mouse untuk memberi tahu game saat mouse terhubung atau terputus. Hanya mendukung satu callback status mouse dalam satu waktu.

  • Untuk mendaftarkan callback status mouse atau mengganti callback yang sebelumnya telah terdaftar dengan fungsi callback baru, panggil fungsi Paddleboat_setMouseStatusCallback.
  • Untuk menghapus callback yang terdaftar saat ini, teruskan NULL atau nullptr dalam parameter statusCallback.
  • Parameter userData adalah pointer opsional untuk data yang ditetapkan pengguna. Parameter userData akan diteruskan ke fungsi callback. Pointer ini disimpan secara internal sampai diubah oleh panggilan lain ke Paddleboat_setMouseStatusCallback.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

Tanda tangan fungsi dari fungsi callback status mouse adalah:

typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
  mouseStatus, void *userData)

Parameter enum mouseStatus memiliki tiga kemungkinan nilai:

  • PADDLEBOAT_MOUSE_NONE: Tidak ada perangkat mouse yang saat ini terhubung.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: Pengontrol yang terhubung menyimulasikan mouse.
  • PADDLEBOAT_MOUSE_PHYSICAL: Satu atau beberapa perangkat mouse fisik terhubung. (Perangkat ini meliputi mouse, touchpad, trackball, atau perangkat serupa lainnya.)

Parameter userData berisi pointer userData yang ditentukan dalam panggilan terakhir ke Paddleboat_setMouseStatusCallback. userData mungkin NULL atau nullptr.

Tidak semua pengontrol menyimulasikan mouse. Pengontrol dapat menyimulasikan mouse menggunakan salah satu stick analog atau dengan touchpad yang terintegrasi.

Library Pengontrol Game hanya melaporkan data dari satu perangkat mouse. Perangkat mouse fisik lebih diprioritaskan daripada perangkat mouse pengontrol virtual. Jika mouse fisik terhubung, mouse ini akan mengambil alih dari mouse pengontrol virtual yang sebelumnya aktif.

Membaca data mouse

Panggil fungsi Paddleboat_getMouseStatus untuk mendapatkan status perangkat mouse.

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

Gunakan fungsi Paddleboat_getMouseData untuk mendapatkan data mouse saat ini. Fungsi ini menampilkan PADDLEBOAT_NO_ERROR jika data berhasil dibaca, jika tidak, kode error yang sesuai akan ditampilkan.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

Struktur Paddleboat_Mouse_Data berisi informasi tentang:

  • Stempel waktu peristiwa input mouse terbaru
  • Posisi pointer saat ini
  • Status tombol mouse
  • Status roda mouse
struct Paddleboat_Mouse_Data {
    uint64_t timestamp;
    uint32_t buttonsDown;
    int32_t mouseScrollDeltaH;
    int32_t mouseScrollDeltaV;
    float mouseX;
    float mouseY;
}
Anggota struktur Deskripsi
timestamp Stempel waktu peristiwa input mouse terbaru. Nilai stempel waktu dalam mikrodetik karena. epoch jam.
buttonsDown Bitfield, setiap bit yang dimulai dari bit 0 menandakan status tombol ke bawah jika ditetapkan.
mouseX
mouseY
Posisi mouse dalam koordinat piksel. Koordinat posisi memiliki rentang antara 0.0 hingga lebar dan tinggi layar.
mouseScrollDeltaH
mouseScrollDeltaV
Jumlah peristiwa roda scroll mouse kumulatif: sejak panggilan sebelumnya ke Paddleboat_getMouseData. Nilai ini tidak dijamin akurat karena hanya untuk memberikan indikasi aktivitas roda scroll ke arah tertentu. Sebagian besar mouse memiliki satu roda scroll yang dilaporkan dalam mouseScrollDeltaV. Jika mouse memiliki roda scroll samping, ini diinfokan dalam mouseScrollDeltaH. Nilai ini direset ke 0 secara internal setelah panggilan ke Paddleboat_getMouseData.

Library Pengontrol Game menentukan konstanta bitmask untuk tombol mouse dalam file header antarmuka 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)
};

Perangkat fisik dibandingkan perangkat mouse virtual

Paddleboat_MouseStatus dari PADDLEBOAT_MOUSE_CONTROLLER_EMULATED menunjukkan bahwa perangkat mouse fisik tidak ada dan library Pengontrol Game sedang menyimulasikan mouse virtual menggunakan pengontrol yang terhubung. Indeks pengontrol terendah yang terhubung dengan kumpulan flag PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE digunakan sebagai mouse virtual. Perangkat mouse virtual hanya dijamin untuk melaporkan koordinat mouseX dan mouseY. Perangkat mouse virtual dapat melaporkan tekanan dari satu tombol mouse tunggal, tetapi tidak dijamin.