אפשר להשתמש בפונקציות הבאות כדי להוסיף למשחק תמיכה במכשירי עכבר באמצעות ספריית בקרי המשחקים. אנחנו משתמשים כאן במונח 'מכשירי עכבר' כדי לתאר בעכברים מסורתיים, וגם במשטחים או כדורי עקיבה.
הוספת קריאה חוזרת (callback) של סטטוס העכבר
הספרייה של בקר המשחקים משתמשת בקריאה חוזרת (callback) של סטטוס העכבר כדי להודיע למשחק כאשר שהעכבר מחובר או מנותק. הוא תומך בקריאה חוזרת (callback) אחת בלבד של סטטוס העכבר בכל פעם.
- כדי לרשום קריאה חוזרת (callback) של סטטוס העכבר או להחליף מכשירים שנרשמו בעבר
עם פונקציית קריאה חוזרת חדשה, מפעילים את הפונקציה
Paddleboat_setMouseStatusCallback
. - כדי להסיר קריאה חוזרת (callback) שרשומה כרגע, צריך להעביר את
NULL
אוnullptr
אלstatusCallback
. - הפרמטר
userData
הוא מצביע אופציונלי לנתונים בהגדרת המשתמש. הפרמטרuserData
יועבר לפונקציית הקריאה החוזרת. הזה הסמן נשמר באופן פנימי עד שישנה על ידי קריאה אחרת ל-Paddleboat_setMouseStatusCallback
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
חתימת הפונקציה של פונקציית הקריאה החוזרת של סטטוס העכבר היא:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
לפרמטר enum mouseStatus
יש שלושה ערכים אפשריים:
PADDLEBOAT_MOUSE_NONE
: אין עכבר מחובר כרגע.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: מדמה שלט רחוק מחובר עכבר.PADDLEBOAT_MOUSE_PHYSICAL
: עכבר פיזי אחד או יותר מחובר. (המכשירים האלה כוללים עכבר, לוח מגע, כדור עקיבה או מכשירים דומים).
הפרמטר 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
|
חותמת הזמן של אירוע קלט העכבר האחרון. ערך חותמת הזמן נמצא במיליוניות השנייה מאז. פרק זמן של שעון. |
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
. התקני עכבר וירטואליים יכולים לדווח על לחיצות שבוצעו
לחצן (שמאלי) יחיד בעכבר, אך הדבר לא מובטח.