Oyun Kumandası 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 yüzeyi ya da izleme topları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 oyuna bildirimde bulunmak için fare durumu geri çağırma işlevini kullanır. Aynı anda yalnızca bir fare durumunu geri çağırmayı destekler.
- Fare durumu geri çağırmasını kaydetmek veya önceden kaydedilmiş herhangi 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önlendiren 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
enum parametresinin üç olası değeri vardır:
PADDLEBOAT_MOUSE_NONE
: Şu anda bağlı bir fare cihazı yok.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: Bağlı bir kumanda, fareyi simüle ediyor.PADDLEBOAT_MOUSE_PHYSICAL
: Bir veya daha fazla fiziksel fare cihazı bağlı. (Bu cihazlar fare, dokunmatik alan, izleme topu 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 bir dokunmatik 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 fare bağlıysa, daha önce etkin olan sanal denetleyici faresinin yerini alır.
Fare verilerini oku
Fare cihazının durumunu almak için Paddleboat_getMouseStatus
işlevini çağırın.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Mevcut fare verilerini almak için Paddleboat_getMouseData
işlevini kullanın. Veriler başarıyla okunursa bu işlev 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ş 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;
}
Yapı üyesi | Açıklama |
---|---|
timestamp
|
En son fare giriş etkinliğinin zaman damgası. Zaman damgası değeri, saat döneminden itibaren mikrosaniye cinsindendir. |
buttonsDown
|
Bit alanı, 0. bitten başlayan her bir bit, ayarlanırsa bir düğmenin aşağı durumunu gösterir. |
mouseX mouseY
|
Piksel koordinatlarındaki fare konumu.
Konum koordinatları, 0.0 ile ekran genişliği ve yüksekliği arasında bir aralıktır. |
mouseScrollDeltaH mouseScrollDeltaV
|
Fare kaydırma tekerleğindeki önceki Paddleboat_getMouseData çağrısından bu yana gerçekleşen kümülatif fare kaydırma tekerleği etkinlikleri sayısı. Bu değerlerin kesin olacağı garanti edilmez, yalnızca kaydırma tekerleği hareketini belirli bir yönde belirtirsiniz. Çoğu farenin tek
bir kaydırma tekerleği vardır. Bu tekerlek
mouseScrollDeltaV içinde bildirilmiştir. Farenin bir yan 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 Denetleyicisi 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ı ve sanal fare cihazları
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 denetleyici 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ı bildirmeleri garanti edilir. Sanal fare cihazları tek bir (sol) fare düğmesiyle basıldığını bildirebilir, ancak bu garanti edilmez.