প্রতিটি ফ্রেম আপডেট করতে সক্ষম হওয়ার জন্য উপাদানগুলি পেতে (এবং এই কার্যকারিতাটি যে উপাদানগুলির প্রয়োজন হয় না তার বাইরে রেখে দিন) আমি একটি আপডেটকোম্পোন উপাদান তৈরি করার ধারণা পেয়েছি। অন্যান্য উপাদান যেমন MovableComponent
(যা বেগ ধারণ করে) IUpdatable
বিমূর্ত শ্রেণীর দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয় । এটি MovableComponent
একটি Update(gametime dt)
পদ্ধতি এবং অন্যটি RegisterWithUpdater()
যা UpdateComponent
একটি পয়েন্টার দেয় তা প্রয়োগ করতে বাধ্য করে MovableComponent
। অনেক উপাদান এটি করতে পারে এবং তারপরে কে বা কী সেগুলি যত্ন না করেই UpdateComponent
তাদের সমস্ত Update(gametime dt)
পদ্ধতি কল করতে পারে ।
আমার প্রশ্নগুলি হ'ল:
- এটিকে কি এমন কিছু মনে হয় যা সাধারণ বা কারও দ্বারা ব্যবহৃত হয়? বিষয়টিতে আমি কিছুই খুঁজে পাচ্ছি না।
- পদার্থবিজ্ঞানের মতো পদক্ষেপের পরে অবস্থান পরিবর্তনের মতো কীভাবে আমি একটি অর্ডার বজায় রাখতে পারি? এটি কি প্রয়োজনীয়?
- প্রতিটি ফ্রেমের প্রক্রিয়া হওয়া উচিত এমন উপাদানগুলি প্রকৃতপক্ষে প্রক্রিয়াজাত করা উচিত কিনা তা নিশ্চিত করার অন্যান্য উপায়গুলি কী কী?
সম্পাদনা করুন
আমি মনে করি কীভাবে সত্তা পরিচালককে আপডেটযোগ্য are তারপরে সেই ধরণের সমস্ত উপাদানই সত্তা অনুযায়ী এটি পরিচালনা করার পরিবর্তে আপডেট করতে পারে (যা যাইহোক আমার সিস্টেমে কেবল সূচকগুলি)।
এখনও। আমার প্রশ্নগুলি আমার কাছে বৈধ থাকে। আমি জানি না এটি যুক্তিযুক্ত / সাধারণ কিনা, বা অন্যেরা কী ঝোঁক করে।
এছাড়াও, নিদ্রাহীন লোকেরা দুর্দান্ত! / সম্পাদনা
পূর্ববর্তী উদাহরণের জন্য সিদ্ধ ডাউন কোড:
class IUpdatable
{
public:
virtual void Update(float dt) = 0;
protected:
virtual void RegisterAsUpdatable() = 0;
};
class Component
{
...
};
class MovableComponent: public Component, public IUpdatable
{
public:
...
virtual void Update(float dt);
private:
...
virtual void RegisterWithUpdater();
};
class UpdateComponent: public Component
{
public:
...
void UpdateAll();
void RegisterUpdatable(Component* component);
void RemoveUpdatable(Component* component);
private:
...
std::set<Component*> updatables_;
};