Fare cihazı desteği ekle

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