/// <summary> /// Attempts to retrieve the class of a specified shape. /// The shape will be searched in both internal and query directories /// starting in the specified directory for speed. /// </summary> /// <param name="shapeName">The name of the shape which needs to be retrieved. /// </param> /// <param name="queryShape">If the shape is present in the query directory. /// This is used to speed up retrieval by using extra knowledge.</param> /// <returns>The name of the class of the specified shape if it could be found, /// otherwise it returns <see langword="null"/>.</returns> public string ClassByShapeName(string shapeName, bool queryShape = true) { if (string.IsNullOrEmpty(shapeName)) { throw new ArgumentNullException(nameof(shapeName)); } MeshLibrary library = queryShape ? QueryMeshes : ProcessedMeshes; foreach (MeshEntry mesh in library) { if (string.Equals(mesh.Name, shapeName, StringComparison.InvariantCultureIgnoreCase)) { return(mesh.Class); } } MeshLibrary other = queryShape ? ProcessedMeshes : QueryMeshes; foreach (MeshEntry mesh in other) { if (string.Equals(mesh.Name, shapeName, StringComparison.InvariantCultureIgnoreCase)) { return(mesh.Class); } } return(null); }
/// <summary> /// Adds the given file to the specified library, creating the correct /// entry for easier access. /// </summary> /// <param name="file">The file, assumed not <see langword="null"/>, which /// will contain the shape to add to the library.</param> /// <param name="library">The collection of shapes which will get a new /// shape present in the previous file.</param> private static void Add(FileInfo file, MeshLibrary library) => library.Add(new MeshEntry(file));