/// <summary> /// Converts an <see cref="LSLLibraryDataAdditions"/> flags enum to the corresponding set of subset names. /// </summary> /// <param name="dataAdditionFlags">The additional library data flags.</param> /// <returns>a string representation of the subset</returns> public static IEnumerable <string> ToSubsetNames(this LSLLibraryDataAdditions dataAdditionFlags) { if ((dataAdditionFlags & LSLLibraryDataAdditions.OpenSimOssl) == LSLLibraryDataAdditions.OpenSimOssl) { yield return("ossl"); } if ((dataAdditionFlags & LSLLibraryDataAdditions.OpenSimWindlight) == LSLLibraryDataAdditions.OpenSimWindlight) { yield return("os-lightshare"); } if ((dataAdditionFlags & LSLLibraryDataAdditions.OpenSimBulletPhysics) == LSLLibraryDataAdditions.OpenSimBulletPhysics) { yield return("os-bullet-physics"); } if ((dataAdditionFlags & LSLLibraryDataAdditions.OpenSimModInvoke) == LSLLibraryDataAdditions.OpenSimModInvoke) { yield return("os-mod-api"); } if ((dataAdditionFlags & LSLLibraryDataAdditions.OpenSimJsonStore) == LSLLibraryDataAdditions.OpenSimJsonStore) { yield return("os-json-store"); } }
private static IEnumerable <string> GetSubsets(LSLLibraryBaseData libraryBaseData, LSLLibraryDataAdditions dataAdditions) { yield return(libraryBaseData.ToSubsetName()); foreach (var name in dataAdditions.ToSubsetNames()) { yield return(name); } }
/// <summary> /// Constructs an <see cref="LSLEmbeddedLibraryDataProvider"/> using the library data embedded in LibLSLCC's assembly. /// </summary> /// <param name="liveFiltering"> /// If this is set to true, all subsets will be loaded into memory. And when you change the active subsets query /// results will change. Otherwise if this is false, only subsets present upon construction will be loaded. /// </param> /// <param name="libraryBaseData">The base library data to use.</param> /// <param name="dataAdditions">Addititional library data to import (flags).</param> /// <param name="loadOptions"> /// Optionally specifies what type's of library definitions will be loaded, defaults to /// <see cref="LSLLibraryDataLoadOptions.All" /> /// </param> /// <exception cref="InvalidOperationException"> /// If the embedded library data could not be loaded from the assembly /// manifest. /// </exception> public LSLEmbeddedLibraryDataProvider(LSLLibraryBaseData libraryBaseData, LSLLibraryDataAdditions dataAdditions, bool liveFiltering, LSLLibraryDataLoadOptions loadOptions = LSLLibraryDataLoadOptions.All) : this(GetSubsets(libraryBaseData, dataAdditions), liveFiltering, loadOptions) { }