spNode ControllerFindChild::operator ()(const spNode& parent,
                                        const QVariant& value) const
{
    if(!parent)
        throw std::invalid_argument("ControllerFindChild::operator ()");
    auto children = base_->getChildren(parent->getID(), QList<IDTypeNode>()<<idtnChildren_);
    for(auto n: children)
        if(n->data(key_) == value) return n;
    return spNode();
}
std::shared_ptr<LoadedModel_SemSceneNode> LoadedModel_SemSceneNode::Create(std::string sFilename)
{
  // create node
  LoadedModel_SemSceneNode *pNode = new LoadedModel_SemSceneNode();

  // set parameters
  pNode->m_sFilename            = sFilename;
  pNode->m_bEnvironmentMapping  = false;
  pNode->m_mTransformMatrix = glm::mat4();

  // create shared_ptr
  std::shared_ptr<LoadedModel_SemSceneNode> spNode(pNode);

  return spNode;
}