コード例 #1
0
 void EntityDefinitionManager::load(const String& path) {
     Preferences::PreferenceManager& prefs = Preferences::PreferenceManager::preferences();
     const Color& defaultColor = prefs.getColor(Preferences::EntityBoundsColor);
     EntityDefinitionMap newDefinitions;
     
     IO::FileManager fileManager;
     IO::MappedFile::Ptr file = fileManager.mapFile(path);
     if (file.get() != NULL) {
         try {
             const String extension = fileManager.pathExtension(path);
             if (Utility::equalsString(extension, "def", false)) {
                 IO::DefParser parser(file->begin(), file->end(), defaultColor);
                 
                 EntityDefinition* definition = NULL;
                 while ((definition = parser.nextDefinition()) != NULL)
                     Utility::insertOrReplace(newDefinitions, definition->name(), definition);
             } else if (Utility::equalsString(extension, "fgd", false)) {
                 IO::FgdParser parser(file->begin(), file->end(), defaultColor);
                 
                 EntityDefinition* definition = NULL;
                 while ((definition = parser.nextDefinition()) != NULL)
                     Utility::insertOrReplace(newDefinitions, definition->name(), definition);
             }
             
             clear();
             m_entityDefinitions = newDefinitions;
             m_path = path;
         } catch (IO::ParserException e) {
             Utility::deleteAll(newDefinitions);
             m_console.error(e.what());
         }
     } else {
         m_console.error("Unable to open entity definition file %s", path.c_str());
     }
 }