Oyun Denetleyici kitaplığını kullanarak oyununuza fare cihazı desteği eklemek için aşağıdaki işlevleri kullanın. Burada fare cihazları terimini geleneksel farelerin yanı sıra izleme düzlemlerini veya iztoplarını tanımlamak için kullanıyoruz.
Fare durumu geri çağırması ekle
Oyun Denetleyici kitaplığı, bir fare bağlandığında veya bağlantısı kesildiğinde oyunu bildirmek için fare durumunu geri çağırma işlevini kullanır. Aynı anda yalnızca bir fare durumu geri çağırma işlemini destekler.
- Bir fare durumu geri çağırması kaydetmek veya daha önce kaydedilmiş bir geri çağırma işlevini yeni bir geri çağırma işleviyle değiştirmek için
Paddleboat_setMouseStatusCallback
işlevini çağırın. - Kayıtlı durumdaki herhangi bir geri çağırmayı kaldırmak için
statusCallback
parametresindeNULL
veyanullptr
parametresini iletin. userData
parametresi, kullanıcı tanımlı verilere yönelik isteğe bağlı bir işaretçidir.userData
parametresi, geri çağırma işlevine aktarılır. Bu işaretçi, başka birPaddleboat_setMouseStatusCallback
çağrısıyla değiştirilene kadar dahili olarak tutulur.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
Fare durumu geri çağırma işlevinin işlev imzası şudur:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
mouseStatus
sıralama parametresinde üç olası değer vardır:
PADDLEBOAT_MOUSE_NONE
: Şu anda bağlı bir fare cihazı yok.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: Bağlı bir kumanda fare simüle ediyor.PADDLEBOAT_MOUSE_PHYSICAL
: Bir veya daha fazla fiziksel fare cihazı bağlı. (Bu cihazlar fare, dokunmatik alan, iztopu veya başka benzer cihazlar içerir.)
userData
parametresi, Paddleboat_setMouseStatusCallback
için yapılan son çağrıda belirtilen userData
işaretçisini içerir. userData
, NULL veya nullptr
olabilir.
Tüm kumandalar fare simülasyonu yapmaz. Kumandalar analog çubuklardan birini veya entegre dokunmatik bir alanı kullanarak fareyi simüle edebilir.
Oyun Kumandası kitaplığı yalnızca tek bir fare cihazından gelen verileri raporlar. Fiziksel fare cihazları, sanal denetleyici fare cihazlarına göre önceliklidir. Fiziksel bir fare bağlıysa, fareyi daha önce etkin olan sanal denetleyici fareden devralır.
Fare verilerini oku
Fare cihazının durumunu almak için Paddleboat_getMouseStatus
işlevini çağırın.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Geçerli fare verilerini almak için Paddleboat_getMouseData
işlevini kullanın. Bu işlev, veriler başarıyla okunursa PADDLEBOAT_NO_ERROR
değerini döndürür; aksi takdirde, uygun bir hata kodu döndürülür.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
Paddleboat_Mouse_Data
yapısı aşağıdakilerle ilgili bilgiler içerir:
- En son fare girişi etkinliği zaman damgası
- Geçerli işaretçi konumu
- Fare düğmelerinin durumu
- Fare tekerleklerinin durumu
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
Üyeyi yapılandırın | Açıklama |
---|---|
timestamp
|
En son fare girişi etkinliğinin zaman damgası. Zaman damgası değeri, saat döneminden itibaren mikrosaniye cinsindendir. |
buttonsDown
|
Bit alanı, bit 0'dan başlayan her bir bit, ayarlanmışsa bir düğmenin aşağı durumunu belirtir. |
mouseX mouseY
|
Piksel koordinatlarındaki fare konumu.
Konum koordinatları, 0.0 ile ekran genişliği ve yüksekliği arasında bir aralıktadır. |
mouseScrollDeltaH mouseScrollDeltaV
|
Fare kaydırma tekerleği etkinliklerinin sayısı: Önceki Paddleboat_getMouseData çağrısından bu yana. Bu değerlerin kesin olacağı garanti edilmez. Değerler yalnızca belirli bir yöndeki kaydırma tekerleği hareketini belirtir. Çoğu farenin bir kaydırma tekerleği vardır. Bu tekerlek mouseScrollDeltaV içinde raporlanır. Bir farenin kenar kaydırma tekerleği varsa bu tekerlek mouseScrollDeltaH içinde bildirilir. Bu değerler, Paddleboat_getMouseData çağrısından sonra dahili olarak 0 değerine sıfırlanır. |
Oyun Denetleyici kitaplığı, paddleboat.h
arayüzü başlık dosyasındaki fare düğmeleri için bit maskesi sabitlerini tanımlar:
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)
};
Fiziksel fare cihazları ile sanal fare cihazların karşılaştırması
PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
değerinin Paddleboat_MouseStatus
olması, fiziksel bir fare cihazının olmadığını ve Oyun Denetleyici kitaplığının bağlı bir kumanda kullanarak sanal fare simülasyonu yaptığını gösterir. PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
işaretinin ayarlandığı en düşük bağlı denetleyici dizini, sanal fare olarak kullanılır. Sanal fare cihazlarının yalnızca mouseX
ve mouseY
koordinatlarını bildirmesi garanti edilir. Sanal fare cihazları tek bir (sol) fare düğmesinden basılanları bildirebilir ancak bu garanti edilmez.