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()); } }