মাউস ডিভাইস সমর্থন যোগ করুন

গেম কন্ট্রোলার লাইব্রেরি ব্যবহার করে আপনার গেমে মাউস ডিভাইস সমর্থন যোগ করতে নিম্নলিখিত ফাংশনগুলি ব্যবহার করুন। আমরা এখানে প্রথাগত ইঁদুর, সেইসাথে ট্র্যাকপ্যাড বা ট্র্যাকবল বর্ণনা করতে মাউস ডিভাইস শব্দটি ব্যবহার করি।

একটি মাউস স্ট্যাটাস কলব্যাক যোগ করুন

গেম কন্ট্রোলার লাইব্রেরি একটি মাউস স্ট্যাটাস কলব্যাক ব্যবহার করে যখন একটি মাউস সংযুক্ত বা সংযোগ বিচ্ছিন্ন হয় তখন একটি গেমকে অবহিত করতে। এটি একটি সময়ে শুধুমাত্র একটি মাউস স্ট্যাটাস কলব্যাক সমর্থন করে।

  • একটি মাউস স্ট্যাটাস কলব্যাক নিবন্ধন করতে বা একটি নতুন কলব্যাক ফাংশন দিয়ে পূর্বে নিবন্ধিত কলব্যাক প্রতিস্থাপন করতে, Paddleboat_setMouseStatusCallback ফাংশনটি কল করুন।
  • বর্তমানে নিবন্ধিত কলব্যাক অপসারণ করতে, statusCallback প্যারামিটারে NULL বা nullptr পাস করুন।
  • userData প্যারামিটার হল ব্যবহারকারীর সংজ্ঞায়িত ডেটার একটি ঐচ্ছিক পয়েন্টার। userData প্যারামিটারটি কলব্যাক ফাংশনে পাঠানো হবে। 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 প্যারামিটারে Paddleboat_setMouseStatusCallback কলব্যাকের শেষ কলে নির্দিষ্ট করা userData পয়েন্টার রয়েছে। 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 বিটফিল্ড, বিট 0 থেকে শুরু হওয়া প্রতিটি বিট সেট করা থাকলে একটি বোতাম ডাউন স্টেট নির্দেশ করে।
mouseX
mouseY
পিক্সেল স্থানাঙ্কে মাউসের অবস্থান। অবস্থান স্থানাঙ্কগুলির স্ক্রীনের প্রস্থ এবং উচ্চতা থেকে 0.0 এর পরিসর রয়েছে৷
mouseScrollDeltaH
mouseScrollDeltaV
ক্রমবর্ধমান মাউস স্ক্রোল হুইল ইভেন্টের একটি গণনা : Paddleboat_getMouseData তে আগের কল থেকে। এই মানগুলি সুনির্দিষ্ট হওয়ার গ্যারান্টি দেওয়া হয় না, শুধুমাত্র একটি নির্দিষ্ট দিকে স্ক্রোল চাকার কার্যকলাপের একটি ইঙ্গিত দিতে। বেশিরভাগ ইঁদুরের একটি স্ক্রোল চাকা থাকে, যা mouseScrollDeltaV -তে রিপোর্ট করা হয়। যদি একটি মাউসের একটি সাইড স্ক্রোল হুইল থাকে, তাহলে তা mouseScrollDeltaH এ রিপোর্ট করা হয়। Paddleboat_getMouseData এ কল করার পরে এই মানগুলি অভ্যন্তরীণভাবে 0 তে রিসেট করা হয়েছে।

গেম কন্ট্রোলার লাইব্রেরি 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_MOUSE_CONTROLLER_EMULATED এর একটি Paddleboat_MouseStatus নির্দেশ করে যে একটি ফিজিক্যাল মাউস ডিভাইস অনুপস্থিত এবং গেম কন্ট্রোলার লাইব্রেরি একটি সংযুক্ত কন্ট্রোলার ব্যবহার করে একটি ভার্চুয়াল মাউস অনুকরণ করছে। PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE পতাকা সেট সহ সর্বনিম্ন সংযুক্ত কন্ট্রোলার সূচক ভার্চুয়াল মাউস হিসাবে ব্যবহৃত হয়। ভার্চুয়াল মাউস ডিভাইসগুলি শুধুমাত্র mouseX এবং mouseY স্থানাঙ্ক রিপোর্ট করার নিশ্চয়তা দেয়। ভার্চুয়াল মাউস ডিভাইসগুলি একটি একক (বাম) মাউস বোতাম থেকে প্রেসের রিপোর্ট করতে পারে, তবে এটি নিশ্চিত নয়।