|
3 | 3 | using System;
|
4 | 4 | using System.Collections.Generic;
|
5 | 5 | using System.IO;
|
| 6 | + using System.Linq; |
6 | 7 | using System.Reflection;
|
7 | 8 | using TypeReferences;
|
8 | 9 | using UnityEngine;
|
@@ -143,12 +144,18 @@ public static Assembly TryLoadAssembly(string assemblyName)
|
143 | 144 |
|
144 | 145 | private static List<Type> GetFilteredTypesFromAssembly(Assembly assembly, TypeOptionsAttribute filter)
|
145 | 146 | {
|
146 |
| - var visibleTypes = GetVisibleTypesFromAssembly(assembly); |
| 147 | + List<Type> assemblyTypes; |
| 148 | + |
| 149 | + assemblyTypes = filter.AllowInternal |
| 150 | + ? GetAllTypesFromAssembly(assembly) |
| 151 | + : GetVisibleTypesFromAssembly(assembly); |
| 152 | + |
147 | 153 | var filteredTypes = new List<Type>();
|
148 |
| - int visibleTypesCount = visibleTypes.Count; |
| 154 | + int visibleTypesCount = assemblyTypes.Count; |
| 155 | + |
149 | 156 | for (int i = 0; i < visibleTypesCount; i++)
|
150 | 157 | {
|
151 |
| - Type type = visibleTypes[i]; |
| 158 | + Type type = assemblyTypes[i]; |
152 | 159 | if (FilterConstraintIsSatisfied(filter, type))
|
153 | 160 | {
|
154 | 161 | filteredTypes.Add(type);
|
@@ -179,6 +186,19 @@ private static List<Type> GetVisibleTypesFromAssembly(Assembly assembly)
|
179 | 186 | }
|
180 | 187 | }
|
181 | 188 |
|
| 189 | + private static List<Type> GetAllTypesFromAssembly(Assembly assembly) |
| 190 | + { |
| 191 | + try |
| 192 | + { |
| 193 | + return assembly.GetTypes().ToList(); |
| 194 | + } |
| 195 | + catch (ReflectionTypeLoadException e) |
| 196 | + { |
| 197 | + Debug.LogError($"Types could not be extracted from assembly {assembly}: {e.Message}"); |
| 198 | + return new List<Type>(0); |
| 199 | + } |
| 200 | + } |
| 201 | + |
182 | 202 | private static bool FilterConstraintIsSatisfied(TypeOptionsAttribute filter, Type type)
|
183 | 203 | {
|
184 | 204 | return filter == null || filter.MatchesRequirements(type);
|
|
0 commit comments