हर फ्रेम को अपडेट करने में सक्षम होने के लिए घटकों को प्राप्त करने के लिए (और इस कार्यक्षमता को उन घटकों से बाहर करने की आवश्यकता नहीं है) जिन्हें मुझे अपडेटकंपोनेंट घटक बनाने का विचार मिला। अन्य घटक जैसे MovableComponent
(जो वेग रखता है) IUpdatable
अमूर्त वर्ग से विरासत में मिला होगा । यह MovableComponent
एक Update(gametime dt)
विधि को लागू करने के लिए मजबूर करता है और दूसरा RegisterWithUpdater()
जो UpdateComponent
एक संकेतक देता है MovableComponent
। कई घटक ऐसा कर सकते थे और फिर UpdateComponent
अपने सभी Update(gametime dt)
तरीकों को कॉल कर सकते थे बिना इस बात की परवाह किए कि वे कौन हैं या क्या हैं।
मेरे प्रश्न हैं:
- क्या यह ऐसा कुछ भी प्रतीत होता है जो सामान्य है या किसी के द्वारा उपयोग किया जाता है? मुझे इस विषय पर कुछ नहीं मिल रहा है।
- मैं भौतिकी जैसे घटकों के लिए एक आदेश कैसे बना सकता हूं फिर स्थिति बदल सकती है? क्या यह भी आवश्यक है?
- यह सुनिश्चित करने के अन्य तरीके क्या हैं कि हर फ्रेम को प्रोसेस करने वाले घटकों को वास्तव में संसाधित किया जाना चाहिए?
EDIT
मुझे लगता है कि मैं इस बात पर ध्यान दूंगा कि कैसे इकाई प्रबंधक को उन प्रकारों की एक सूची दी जाए जो अद्यतन करने योग्य हैं। फिर उस प्रकार के सभी घटक प्रति इकाई (जो मेरे सिस्टम में अभी भी अनुक्रमित हैं) को प्रबंधित करने के बजाय अपडेट कर सकते हैं।
फिर भी। मेरे प्रश्न मेरे लिए मान्य हैं। मुझे नहीं पता कि यह तर्कपूर्ण / सामान्य है, या अन्य क्या करते हैं।
इसके अलावा, Insomniac के लोग कमाल के हैं! / संपादित करें
पिछले उदाहरण के लिए उबला हुआ कोड:
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_;
};