Exemple #1
0
    std::shared_ptr<Node> createNode(std::string name,
                                     std::string type,
                                     Any value,
                                     int flags,
                                     std::string documentation)
    {
      std::map<std::string, CreatorFct>::iterator it = nodeRegistry.find(type);
      CreatorFct creator = nullptr;

      if (it == nodeRegistry.end()) {
        std::string creatorName = "ospray_create_sg_node__" + type;
        creator = (CreatorFct)getSymbol(creatorName);

        if (!creator)
          throw std::runtime_error("unknown OSPRay sg::Node '" + type + "'");

        nodeRegistry[type] = creator;
      } else {
        creator = it->second;
      }

      std::shared_ptr<sg::Node> newNode(creator());
      newNode->setName(name);
      newNode->setType(type);
      newNode->setFlags(flags);
      newNode->setDocumentation(documentation);

      if (value.valid()) newNode->setValue(value);

      return newNode;
    }