IEnumerable <Type> FilterTypeList(string nameSearch, AbstractionLevel level, Predicate <Type> predicate = null) { return(AllTypes.Where(t => t.IsClass && t.IsSubclassOf(typeof(UnityEngine.Object)) && t.IsPublic && !t.IsGenericType && CheckAbstraction(t, level) && (predicate == null || predicate(t)) && (string.IsNullOrEmpty(nameSearch) || t.FullName.Contains(nameSearch)) )); }
private bool CheckAbstraction(Type type, AbstractionLevel level) { switch (level) { case AbstractionLevel.All: return(true); case AbstractionLevel.Concrete: return(!type.IsAbstract); default: return(type.IsAbstract); } }
private void DrawAbstractionSelector() { GUILayout.BeginHorizontal(EditorStyles.toolbar, GUILayout.ExpandWidth(true), GUILayout.Height(32)); { GUILayout.BeginVertical(); { GUILayout.FlexibleSpace(); Abstraction = (AbstractionLevel)EditorGUILayout.EnumPopup("Abstraction", Abstraction); GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); }