เพิ่มการรองรับอุปกรณ์เมาส์

ใช้ฟังก์ชันต่อไปนี้เพื่อเพิ่มการรองรับอุปกรณ์เมาส์ในเกมของคุณโดยใช้ คลังเกมคอนโทรลเลอร์ เราใช้คำว่าอุปกรณ์เมาส์เพื่ออธิบาย เมาส์แบบดั้งเดิม ตลอดจนแทร็กแพดหรือแทร็กบอล

เพิ่มการเรียกกลับสถานะเมาส์

ไลบรารีเกมคอนโทรลเลอร์ใช้การเรียกกลับสถานะเมาส์เพื่อแจ้งเกมเมื่อ เชื่อมต่อหรือตัดการเชื่อมต่อเมาส์แล้ว รองรับการเรียกกลับสถานะเมาส์เพียงครั้งเดียวเท่านั้น ต่อครั้ง

  • หากต้องการลงทะเบียน Callback สถานะเมาส์หรือแทนที่รายการที่บันทึกไว้ก่อนหน้านี้ Callback ด้วยฟังก์ชัน Callback ใหม่เรียก Paddleboat_setMouseStatusCallback
  • หากต้องการนำ Callback ที่ลงทะเบียนไว้ในปัจจุบันออก ให้ส่ง NULL หรือ nullptr ใน พารามิเตอร์ statusCallback
  • พารามิเตอร์ userData คือตัวชี้ที่ไม่บังคับไปยังข้อมูลที่ผู้ใช้กำหนด ระบบจะส่งพารามิเตอร์ userData ไปยังฟังก์ชัน Callback ช่วงเวลานี้ ตัวชี้จะถูกเก็บไว้เป็นการภายใน จนกว่าจะมีการเปลี่ยนแปลงโดยการเรียกอื่นเป็น Paddleboat_setMouseStatusCallback
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

ลายเซ็นของฟังก์ชันของฟังก์ชัน Callback ของสถานะเมาส์คือ

typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
  mouseStatus, void *userData)

พารามิเตอร์ enum mouseStatus มีค่าที่เป็นไปได้ 3 ค่าดังนี้

  • PADDLEBOAT_MOUSE_NONE: ไม่มีอุปกรณ์เมาส์เชื่อมต่ออยู่
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: กำลังจำลองตัวควบคุมที่เชื่อมต่ออยู่ หนู
  • PADDLEBOAT_MOUSE_PHYSICAL: อุปกรณ์เมาส์จริงอย่างน้อย 1 เครื่อง เชื่อมต่อ แล้ว (อุปกรณ์ดังกล่าวรวมถึงเมาส์ ทัชแพด แทร็กบอล หรือ อุปกรณ์ที่คล้ายกัน)

พารามิเตอร์ userData มีเคอร์เซอร์ userData ที่ระบุในช่วงสุดท้าย โทรหา Paddleboat_setMouseStatusCallback userData อาจเป็นค่าว่างหรือ nullptr

ตัวควบคุมบางอย่างไม่มีการจำลองเมาส์ ตัวควบคุมอาจจำลองเมาส์โดยใช้ แอนะล็อกสติ๊กหรือทัชแพดแบบผสานรวม

ไลบรารีเกมคอนโทรลเลอร์จะรายงานเฉพาะข้อมูลจากอุปกรณ์เมาส์เดี่ยวเท่านั้น อุปกรณ์เมาส์ที่ใช้จริงจะมีลำดับความสำคัญเหนือกว่าอุปกรณ์เมาส์ตัวควบคุมเสมือน หากมี เมาส์สามารถเชื่อมต่ออยู่ โดยเล่นต่อจากตัวควบคุมเสมือนที่ใช้งานก่อนหน้านี้ เมาส์คอนโทรลเลอร์

อ่านข้อมูลเมาส์

เรียกฟังก์ชัน Paddleboat_getMouseStatus เพื่อดูสถานะของอุปกรณ์เมาส์

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

ใช้Paddleboat_getMouseData เพื่อรับข้อมูลปัจจุบันของเมาส์ ฟังก์ชันนี้แสดงผล PADDLEBOAT_NO_ERROR หากอ่านข้อมูลสำเร็จ มิฉะนั้น แสดงรหัสข้อผิดพลาดที่เหมาะสม

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

โครงสร้าง Paddleboat_Mouse_Data มีข้อมูลเกี่ยวกับสิ่งต่อไปนี้

  • การประทับเวลาเหตุการณ์อินพุตเมาส์ล่าสุด
  • ตำแหน่งตัวชี้ปัจจุบัน
  • สถานะของปุ่มเมาส์
  • สถานะของล้อเลื่อนของเมาส์
struct Paddleboat_Mouse_Data {
    uint64_t timestamp;
    uint32_t buttonsDown;
    int32_t mouseScrollDeltaH;
    int32_t mouseScrollDeltaV;
    float mouseX;
    float mouseY;
}
สมาชิกในบ้าน คำอธิบาย
timestamp การประทับเวลาเหตุการณ์การป้อนข้อมูลด้วยเมาส์ล่าสุด โดยค่าการประทับเวลาจะเป็นหน่วยไมโครวินาทีนับตั้งแต่นั้น ของ Epoch ของนาฬิกา
buttonsDown Bitfield แต่ละบิตเริ่มจากบิต 0 หมายถึงสถานะของปุ่มดาวน์ หากมีการตั้งค่า
mouseX
mouseY
ตำแหน่งของเมาส์ในพิกัดพิกเซล พิกัดของตำแหน่งมีช่วงตั้งแต่ 0.0 ถึง ความกว้างและความสูงของหน้าจอ
mouseScrollDeltaH
mouseScrollDeltaV
จำนวนเหตุการณ์ล้อเลื่อนของเมาส์สะสม : ตั้งแต่การโทรครั้งก่อนไปยัง Paddleboat_getMouseData ค่าเหล่านี้ไม่ใช่ รับประกันความถูกต้องแม่นยำ มีแต่การให้ ตัวบ่งชี้กิจกรรมของล้อเลื่อนใน คำแนะนำเฉพาะ เมาส์ส่วนใหญ่มีตัวเดียว ซึ่งมีการรายงานใน mouseScrollDeltaV ถ้าเมาส์มีด้าน จะรายงานใน mouseScrollDeltaH ค่าเหล่านี้จะรีเซ็ตเป็น 0 เป็นการภายในหลังจากการโทรไปหา Paddleboat_getMouseData

ไลบรารีตัวควบคุมเกมกำหนดค่าคงที่บิตมาสก์สำหรับปุ่มเมาส์ใน ไฟล์ส่วนหัวของอินเทอร์เฟซ 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)
};

อุปกรณ์เมาส์จริงและอุปกรณ์เมาส์เสมือน

Paddleboat_MouseStatus จาก PADDLEBOAT_MOUSE_CONTROLLER_EMULATED บ่งชี้ว่า ไม่มีอุปกรณ์เมาส์จริงและคลังเกมคอนโทรลเลอร์ การจำลองเมาส์เสมือนโดยใช้ตัวควบคุมที่เชื่อมต่อ ราคาต่ำสุดที่เชื่อมต่อ ดัชนีตัวควบคุมที่มีการตั้งค่าแฟล็ก PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE คือ ที่ใช้เป็นเมาส์เสมือน อุปกรณ์เมาส์เสมือนได้รับการรับประกันว่าจะรายงาน พิกัด mouseX และ mouseY อุปกรณ์เมาส์เสมือนอาจรายงานการกดจาก ปุ่มเมาส์ (ซ้าย) ปุ่มเดียว แต่ไม่มีการรับประกันใดๆ