আমি জানি এই প্রশ্নটি বেশ কয়েকবার জিজ্ঞাসা করা হয়েছিল, তবে আমি এখনও নিশ্চিত নই যে কীভাবে কোনও উপাদান ভিত্তিক ইঞ্জিনে ইনপুট হ্যান্ডলিং প্রয়োগ করা যায়।
আমি যে উপাদানটি ব্যবহার করেছি তার উপর ভিত্তি করে ডিজাইন টি = মেশিনের ব্লগ সিরিজ এবং আর্টেমিসের উপর ভিত্তি করে ছিল যেখানে সত্ত্বা কেবল আইডি।
ইনপুট হ্যান্ডলিং বাস্তবায়নে আমার কাছে তিনটি প্রধান ধারণা রয়েছে:
- ইনপুট উপাদানটি আগ্রহী এমন ইভেন্টগুলিকে ধারণ করবে। ইনপুট সিস্টেমটি কী এবং মাউস ইভেন্টগুলিকে গেম ইভেন্টগুলিতে এবং ইনপুট উপাদানগুলির সাথে সত্ত্বার মাধ্যমে লুপে অনুবাদ করবে এবং যদি তারা ইভেন্টে আগ্রহী হয় তবে ইনপুট সিস্টেমের দ্বারা উপযুক্ত ব্যবস্থা নেওয়া হবে। এই ক্রিয়াটি ইনপুট সিস্টেমে কঠোরভাবে কোড করা হবে।
- কোনও ইনপুট উপাদান নেই। আপনি ইনপুট সিস্টেমে সুনির্দিষ্ট ইভেন্ট সহ সত্ত্বাকে নিবন্ধভুক্ত করবেন। ইনপুট সিস্টেমটি তখন অন্য সিস্টেমে বার্তা (সত্তা আইডি এবং ইভেন্টের ধরণ সহ) প্রেরণ করবে যাতে এগুলি যথাযথ পদক্ষেপ নিতে পারে। বা প্রথম ক্ষেত্রে হিসাবে, ক্রিয়াগুলি ইনপুট সিস্টেমে কঠোর কোড করা হবে।
- প্রথম পদ্ধতির মতো, তবে ইনপুট সিস্টেমে ক্রিয়াকলাপটি কোডিংয়ের পরিবর্তে উপাদানটিতে ফাংশনগুলিতে ইভেন্টগুলির মানচিত্র (যেমন
std::map<std::function>
) থাকে যা ইনপুট সিস্টেম বলে। এটি একই ক্রিয়াকলাপটিকে বিভিন্ন ক্রিয়ায় জুটিতে সক্ষম হওয়ার অতিরিক্ত প্রভাব ফেলেছে।
আপনি কি উপরোক্ত পদ্ধতির কোনওটি সুপারিশ করবেন বা আপনার কাছে এমন কোনও পরামর্শ রয়েছে যা আমাকে নমনীয় ইনপুট হ্যান্ডলিং সিস্টেমটি কার্যকর করতে সহায়তা করবে? এছাড়াও, আমি এখনও মাল্টি-থ্রেডিংয়ের সাথে পরিচিত নই তবে বাস্তবায়ন থ্রেড-বান্ধব করে তোলে এমন কোনও পরামর্শও স্বাগত।
দ্রষ্টব্য: আমি বাস্তবায়নটি পূরণ করতে চাইবে এমন একটি অতিরিক্ত প্রয়োজনীয়তা হ'ল আমি অনেক সত্তায় একই ইনপুটটি পাস করতে সক্ষম হব যেমন উদাহরণস্বরূপ ক্যামেরা সত্তা এবং প্লেয়ারকে একই সাথে স্থানান্তরিত করা।