ใช้ฟังก์ชันต่อไปนี้เพื่อเพิ่มการรองรับอุปกรณ์เมาส์ลงในเกมโดยใช้ไลบรารี Game Controller เราใช้คำว่าอุปกรณ์เมาส์ที่นี่เพื่ออธิบาย เมาส์แบบดั้งเดิม รวมถึงแทร็กแพดหรือแทร็กบอล
เพิ่มการเรียกกลับสถานะเมาส์
ไลบรารีตัวควบคุมเกมใช้การเรียกกลับสถานะเมาส์เพื่อแจ้งให้เกมทราบเมื่อมีการ เชื่อมต่อหรือยกเลิกการเชื่อมต่อเมาส์ โดยจะรองรับการเรียกกลับสถานะเมาส์ได้ครั้งละ 1 รายการเท่านั้น
- หากต้องการลงทะเบียนการเรียกกลับสถานะเมาส์หรือแทนที่การเรียกกลับที่ลงทะเบียนไว้ก่อนหน้า
ด้วยฟังก์ชันการเรียกกลับใหม่ ให้เรียกใช้ฟังก์ชัน
Paddleboat_setMouseStatusCallback
- หากต้องการนำการเรียกกลับที่ลงทะเบียนไว้ในปัจจุบันออก ให้ส่ง
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)
พารามิเตอร์ mouseStatus
enum มีค่าที่เป็นไปได้ 3 ค่า ดังนี้
PADDLEBOAT_MOUSE_NONE
: ขณะนี้ไม่ได้เชื่อมต่ออุปกรณ์เมาส์PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: คอนโทรลเลอร์ที่เชื่อมต่อจะจำลอง เมาส์PADDLEBOAT_MOUSE_PHYSICAL
: มีการเชื่อมต่ออุปกรณ์เมาส์จริงอย่างน้อย 1 เครื่อง (อุปกรณ์เหล่านี้รวมถึงเมาส์ ทัชแพด แทร็กบอล หรืออุปกรณ์อื่นๆ ที่คล้ายกัน)
พารามิเตอร์ userData
มีพอยน์เตอร์ userData
ที่ระบุในการเรียกใช้ Paddleboat_setMouseStatusCallback
ครั้งสุดท้าย
userData
อาจเป็น NULL หรือ
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
|
ฟิลด์บิต โดยแต่ละบิตเริ่มต้นจากบิต 0 จะแสดงสถานะกดปุ่มหากตั้งค่าไว้ |
mouseX mouseY
|
ตำแหน่งเมาส์ในพิกัดพิกเซล
พิกัดตำแหน่งมีช่วงตั้งแต่ 0.0 ถึงความกว้างและความสูงของหน้าจอ |
mouseScrollDeltaH mouseScrollDeltaV
|
จำนวนเหตุการณ์ล้อเลื่อนของเมาส์สะสม :
ตั้งแต่การเรียกใช้ครั้งก่อนไปจนถึง
Paddleboat_getMouseData ค่าเหล่านี้ไม่รับประกันความแม่นยำ แต่จะให้
ข้อมูลเกี่ยวกับกิจกรรมของล้อเลื่อนใน
ทิศทางใดทิศทางหนึ่งเท่านั้น เมาส์ส่วนใหญ่มีล้อเลื่อน 1 ล้อ ซึ่งรายงานใน mouseScrollDeltaV หากเมาส์มีล้อเลื่อนด้านข้าง ระบบจะรายงานใน mouseScrollDeltaH ระบบจะรีเซ็ตค่าเหล่านี้เป็น
0 ภายในหลังจากเรียกใช้
Paddleboat_getMouseData |
ไลบรารี Game Controller จะกำหนดค่าคงที่บิตมาสก์สำหรับปุ่มเมาส์ใน
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
เท่านั้น อุปกรณ์เมาส์เสมือนอาจรายงานการกดจากปุ่มเมาส์ปุ่มเดียว (ซ้าย) แต่ก็ไม่ได้รับประกันว่าจะรายงาน