Exemple #1
0
NodeSmartReference Model_load(ModelLoader* loader, const char* path, const char* name, const char* type)
{
  if(loader != 0)
  {
    return ModelResource_load(loader, name);
  }
  else
  {
    const char* moduleName = findModuleName(&GlobalFiletypes(), MapFormat::Name(), type);
    if(string_not_empty(moduleName))
    {
      const MapFormat* format = ReferenceAPI_getMapModules().findModule(moduleName);
      if(format != 0)
      {
        return MapResource_load(*format, path, name);
      }
      else
      {
        globalErrorStream() << "ERROR: Map type incorrectly registered: \"" << moduleName << "\"\n";
        return g_nullModel;
      }
    }
    else
    {
      if(string_not_empty(type))
      {
        globalErrorStream() << "Model type not supported: \"" << name << "\"\n";
      }
      return g_nullModel;
    }
  }
}
Exemple #2
0
 bool save ()
 {
     if (!mapSaved()) {
         const std::string moduleName = findModuleName(GetFileTypeRegistry(), MapFormat::Name(), m_type);
         if (!moduleName.empty()) {
             const MapFormat* format = ReferenceAPI_getMapModules().findModule(moduleName);
             if (format != 0 && MapResource_save(*format, m_model.get(), m_path, m_name)) {
                 mapSave();
                 return true;
             }
         }
     }
     return false;
 }
Exemple #3
0
/**
 * @brief Returns the model loader for the model \p type or 0 if the model \p type has no loader module
 */
ModelLoader* ModelLoader_forType (const std::string& type)
{
    const std::string moduleName = findModuleName(&GlobalFiletypes(), std::string(ModelLoader::Name()), type);
    if (!moduleName.empty()) {
        ModelLoader* table = ReferenceAPI_getModelModules().findModule(moduleName);
        if (table != 0) {
            return table;
        } else {
            globalErrorStream() << "ERROR:  Model type incorrectly registered: " << moduleName << "\n";
            return &g_NullModelLoader;
        }
    }
    return 0;
}
Exemple #4
0
NodeSmartReference Model_load (ModelLoader* loader, const std::string& path, const std::string& name, const std::string& type)
{
    if (loader != 0) {
        return ModelResource_load(loader, name);
    } else {
        // Get a loader module name for this type, if possible. If none is
        // found, try again with the "map" type, since we might be loading a
        // map with a different extension
        std::string moduleName = findModuleName(&GlobalFiletypes(), MapFormat::Name(), type);

        // Empty, try again with "map" type
        if (moduleName.empty()) {
            moduleName = findModuleName(&GlobalFiletypes(), MapFormat::Name(), "map");
        }

        const MapFormat* format = ReferenceAPI_getMapModules().findModule(moduleName);
        if (format != 0) {
            return MapResource_load(*format, path, name);
        } else {
            globalErrorStream() << "ERROR: Map type incorrectly registered: " << moduleName << "\n";
            return g_nullModel;
        }
    }
}
Exemple #5
0
/// \brief Returns the model loader for the model \p type or 0 if the model \p type has no loader module
ModelLoader* ModelLoader_forType(const char* type)
{
  const char* moduleName = findModuleName(&GlobalFiletypes(), ModelLoader::Name(), type);
  if(string_not_empty(moduleName))
  {
    ModelLoader* table = ReferenceAPI_getModelModules().findModule(moduleName);
    if(table != 0)
    {
      return table;
    }
    else
    {
      globalErrorStream() << "ERROR: Model type incorrectly registered: \"" << moduleName << "\"\n";
      return &g_NullModelLoader;
    }
  }
  return 0;
}