Fare cihazı desteği ekle

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 parametresinde NULL veya nullptr 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 bir Paddleboat_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.