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->getAtt