از عملکردهای زیر برای افزودن پشتیبانی از دستگاه ماوس به بازی خود با استفاده از کتابخانه Game Controller استفاده کنید. ما در اینجا از اصطلاح دستگاه های موس برای توصیف موش های سنتی و همچنین پدهای لمسی یا گوی های حرکتی استفاده می کنیم.
یک پاسخ تماس وضعیت ماوس را اضافه کنید
کتابخانه Game Controller از پاسخ تماس وضعیت ماوس برای اطلاع دادن به بازی هنگام اتصال یا قطع ارتباط ماوس استفاده می کند. در هر زمان تنها از یک پاسخ وضعیت ماوس پشتیبانی می کند.
- برای ثبت پاسخ تماس وضعیت ماوس یا جایگزینی هر پاسخ تماس قبلی ثبت شده با یک تابع پاسخ به تماس جدید، تابع
Paddleboat_setMouseStatusCallback
را فراخوانی کنید. - برای حذف هر پاسخ تماس ثبت شده فعلی،
NULL
یاnullptr
را در پارامترstatusCallback
ارسال کنید. - پارامتر
userData
یک اشاره گر اختیاری به داده های تعریف شده توسط کاربر است. پارامترuserData
به تابع callback ارسال می شود. این نشانگر تا زمانی که با فراخوانی دیگری بهPaddleboat_setMouseStatusCallback
تغییر یابد، در داخل حفظ میشود.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
امضای تابع تابع تماس وضعیت ماوس به صورت زیر است:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
پارامتر mouseStatus
enum دارای سه مقدار ممکن است:
-
PADDLEBOAT_MOUSE_NONE
: هیچ دستگاه ماوسی در حال حاضر متصل نیست. -
PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: یک کنترلر متصل در حال شبیه سازی یک ماوس است. -
PADDLEBOAT_MOUSE_PHYSICAL
: یک یا چند دستگاه فیزیکی ماوس متصل هستند. (این دستگاه ها شامل ماوس، پد لمسی، گوی یا سایر دستگاه های مشابه هستند.)
پارامتر userData
حاوی نشانگر userData
است که در آخرین تماس با Paddleboat_setMouseStatusCallback
مشخص شده است. userData
ممکن است NULL یا nullptr
باشد.
همه کنترلرها ماوس را شبیه سازی نمی کنند. کنترلرها ممکن است یک ماوس را با استفاده از یکی از میله های آنالوگ یا با یک پد لمسی یکپارچه شبیه سازی کنند.
کتابخانه Game Controller فقط دادهها را از یک دستگاه موس منفرد گزارش میکند. دستگاه های فیزیکی ماوس نسبت به دستگاه های موس کنترل کننده مجازی اولویت دارند. اگر یک ماوس فیزیکی متصل باشد، از هر ماوس کنترلکننده مجازی فعال قبلی استفاده میکند.
خواندن اطلاعات ماوس
برای دریافت وضعیت دستگاه ماوس، تابع 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 گزارش شده است. پس از تماس با Paddleboat_getMouseData این مقادیر در داخل به 0 بازنشانی میشوند. |
کتابخانه 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
نشان میدهد که یک دستگاه فیزیکی ماوس وجود ندارد و کتابخانه Game Controller در حال شبیهسازی یک ماوس مجازی با استفاده از یک کنترلکننده متصل است. پایین ترین شاخص کنترلر متصل با مجموعه پرچم PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
به عنوان ماوس مجازی استفاده می شود. دستگاههای ماوس مجازی فقط مختصات mouseX
و mouseY
را گزارش میکنند. دستگاه های ماوس مجازی ممکن است فشارهای یک دکمه (سمت چپ) ماوس را گزارش دهند، اما این تضمین نمی شود.