मैंने पिछले 48 घंटे ऑब्जेक्ट कंपोनेंट सिस्टम पर पढ़ने में बिताए हैं, और मुझे लगता है कि मैं इसे लागू करने के लिए पर्याप्त तैयार हूं। मुझे बेस ऑब्जेक्ट और कंपोनेंट क्लासेज मिलीं, लेकिन अब जब मुझे उन वास्तविक कंपोनेंट्स को बनाने की शुरुआत करने की जरूरत है जो मैं थोड़ा उलझन में हूं। जब मैं उनके बारे में HealthComponent या किसी ऐसी चीज के बारे में सोचता हूं जो मूल रूप से सिर्फ एक संपत्ति होगी, तो यह सही समझ में आता है। जब यह भौतिकी / ग्राफिक्स घटक के रूप में कुछ और सामान्य है, तो मैं थोड़ा भ्रमित हो जाता हूं।
मेरी ऑब्जेक्ट क्लास अब तक इस तरह दिखती है (यदि आपको कोई भी बदलाव नज़र आता है तो कृपया मुझे बताएं, मुझे अभी भी इस बारे में नया बताना चाहिए ...)
typedef unsigned int ID;
class GameObject
{
public:
GameObject(ID id, Ogre::String name = "");
~GameObject();
ID &getID();
Ogre::String &getName();
virtual void update() = 0;
// Component Functions
void addComponent(Component *component);
void removeComponent(Ogre::String familyName);
template<typename T>
T* getComponent(Ogre::String familyName)
{
return dynamic_cast<T*>(m_components[familyName]);
}
protected:
// Properties
ID m_ID;
Ogre::String m_Name;
float m_flVelocity;
Ogre::Vector3 m_vecPosition;
// Components
std::map<std::string,Component*> m_components;
std::map<std::string,Component*>::iterator m_componentItr;
};
अब मैं जिस समस्या को लेकर चल रहा हूं, वह यह है कि सामान्य आबादी भौतिक विज्ञान / ग्राफिक्स जैसे घटकों में क्या डालेगी? ओग्रे (मेरे रेंडरिंग इंजन) के लिए दृश्यमान ऑब्जेक्ट्स में दृश्य से जुड़ने के लिए कई Ogre :: SceneNode (संभवतः कई) होंगे, जो दृश्य मेषों को दिखाने के लिए Ogre :: Entity (संभवतः कई) हैं, और इसी तरह। क्या सिर्फ ऑब्जेक्ट में कई ग्राफिक.कॉम को जोड़ना और प्रत्येक ग्राफिककंपनी को एक सीनोडेन / एंटिटी को संभालने देना अच्छा होगा या क्या विचार है कि प्रत्येक घटक में से एक की आवश्यकता है?
भौतिकी के लिए मैं और भी अधिक भ्रमित हूँ। मुझे लगता है शायद एक RigidBody बनाने और द्रव्यमान / अंतर / / का ट्रैक रखने के लिए। समझ में आता है। लेकिन मुझे यह सोचने में परेशानी हो रही है कि वास्तव में कॉम्पोनेंट्स में कंपोनेंट्स को कैसे रखा जाए।
एक बार जब मुझे इनमें से कुछ "आवश्यक" घटक मिल जाते हैं, तो मुझे लगता है कि यह बहुत अधिक समझ में आएगा। अभी के रूप में हालांकि मैं अभी भी थोड़ा स्टम्प्ड हूं।