Ogre-获取场景中的所有实体
在Ogre中,有时候,可能需要对场景中的所有实体进行处理,我们可以通过以下的方式来获取场景中的所有实体。
我们采用递归函数,遍历根节点,获取所有子节点及其上所附加的实体,将获取的所有实体存放在一个向量集合中。
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);
}
}
}
Written on April 15, 2014