Skip to content

Commit 56bbfef

Browse files
committed
feat: Returned the internal types restriction
When not using any filter (like Inherits), this adds a lot of unnecessary types to the drop-down. Better off adding an option to TypeOptionsAttribute than allowing internal types in all cases
1 parent 912576e commit 56bbfef

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

Editor/Util/TypeCollector.cs

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -143,24 +143,12 @@ public static Assembly TryLoadAssembly(string assemblyName)
143143

144144
private static List<Type> GetFilteredTypesFromAssembly(Assembly assembly, TypeOptionsAttribute filter)
145145
{
146-
Type[] assemblyTypes;
147-
148-
try
149-
{
150-
assemblyTypes = assembly.GetTypes();
151-
}
152-
catch (ReflectionTypeLoadException e)
153-
{
154-
Debug.LogError($"Types could not be extracted from assembly {assembly}: {e.Message}");
155-
return new List<Type>(0);
156-
}
157-
146+
var visibleTypes = GetVisibleTypesFromAssembly(assembly);
158147
var filteredTypes = new List<Type>();
159-
160-
for (int i = 0; i < assemblyTypes.Length; i++)
148+
int visibleTypesCount = visibleTypes.Count;
149+
for (int i = 0; i < visibleTypesCount; i++)
161150
{
162-
Type type = assemblyTypes[i];
163-
151+
Type type = visibleTypes[i];
164152
if (FilterConstraintIsSatisfied(filter, type))
165153
{
166154
filteredTypes.Add(type);
@@ -170,6 +158,27 @@ private static List<Type> GetFilteredTypesFromAssembly(Assembly assembly, TypeOp
170158
return filteredTypes;
171159
}
172160

161+
private static List<Type> GetVisibleTypesFromAssembly(Assembly assembly)
162+
{
163+
try
164+
{
165+
var assemblyTypes = assembly.GetTypes();
166+
var visibleTypes = new List<Type>(assemblyTypes.Length);
167+
for (int i = 0; i < assemblyTypes.Length; i++)
168+
{
169+
Type type = assemblyTypes[i];
170+
if (type.IsVisible)
171+
visibleTypes.Add(type);
172+
}
173+
return visibleTypes;
174+
}
175+
catch (ReflectionTypeLoadException e)
176+
{
177+
Debug.LogError($"Types could not be extracted from assembly {assembly}: {e.Message}");
178+
return new List<Type>(0);
179+
}
180+
}
181+
173182
private static bool FilterConstraintIsSatisfied(TypeOptionsAttribute filter, Type type)
174183
{
175184
return filter == null || filter.MatchesRequirements(type);

0 commit comments

Comments
 (0)