using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace UnityEngine.AssetBundles.AssetBundleDataSource { public class ABDataSourceProviderUtility { private static List s_customNodes; public static List CustomABDataSourceTypes { get { if(s_customNodes == null) { s_customNodes = BuildCustomABDataSourceList(); } return s_customNodes; } } private static List BuildCustomABDataSourceList() { var list = new List(Assembly .GetExecutingAssembly() .GetTypes() .Where(t => t != typeof(ABDataSource)) .Where(t => typeof(ABDataSource).IsAssignableFrom(t)) ); var properList = new List(); properList.Add(null); //empty spot for "default" for(int count = 0; count < list.Count; count++) { if(list[count].Name == "AssetDatabaseABDataSource") properList[0] = list[count]; else properList.Add(list[count]); } return properList; } } }