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
ataunullptr
dalam parameterstatusCallback
. - Parameter
userData
adalah pointer opsional untuk data yang ditetapkan pengguna. ParameteruserData
akan diteruskan ke fungsi callback. Pointer ini disimpan secara internal sampai diubah oleh panggilan lain kePaddleboat_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.