您的位置:首页 > 其它

Ogre-获取场景中的所有实体

2015-04-02 08:59 465 查看
Ogre中,有时候,可能需要对场景中的所有实体进行处理,我们可以通过以下的方式来获取场景中的所有实体。
采用递归函数,遍历根节点,获取所有子节点及其上所附加的实体。
<span style="font-family:Courier New;font-size:14px;">void getAllEntity(Ogre::SceneNode* rootNode, std::vector<Ogre::Entity*>& entityVec){if (!rootNode)return;else{unsigned short numChildren = rootNode->numChildren();for (unsigned short nodeIndex = 0; nodeIndex < numChildren; ++nodeIndex){Ogre::SceneNode* childNode = (Ogre::SceneNode*)rootNode->getChild(nodeIndex);unsigned short numEntity = childNode->numAttachedObjects();for (unsigned short entityIndex = 0; entityIndex < numEntity; ++entityIndex){Ogre::Entity* ent = (Ogre::Entity*)childNode->getAttachedObject(entityIndex);entityVec.push_back(ent);}getAllEntity(childNode, entityVec);}}}</span><span style="font-family: Calibri; font-size: 10.5pt;"></span>
然后,我们在适当的地方调用这个方法,为其传递参数即可:<span style="font-family:Courier New;font-size:14px;">std::vector<Ogre::Entity*> entityVec;getAllEntity(mSceneMgr->getRootSceneNode(), entityVec);</span>
entityVec即是场景中所有实体的集合。
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ogre entity 递归 遍历