Ogre::Entity* OGRE3DPointRenderable::fetchEntity(const Ogre::String& name) { Ogre::Entity* entity = NULL; if (Ogre::StringUtil::endsWith(name, ".mesh")) // Is it a mesh? { entity = mRenderSystem->getSceneManager()->createEntity(mRenderSystem->getUniqueName("Entity"), name); } else if (mRenderSystem->getSceneManager()->hasEntity(name)) // Could it be an entity? { entity = mRenderSystem->getSceneManager()->getEntity(name); if (entity->isAttached()) entity->getParentSceneNode()->detachObject(entity); } else // It must be a mesh. { entity = mRenderSystem->getSceneManager()->createEntity(mRenderSystem->getUniqueName("Entity"), name); } return entity; }