mirror of
https://github.com/GrahamKracker/UnityExplorer.git
synced 2025-07-16 00:07:52 +08:00
separate Bep5 and Bep6 support. Fix enums not backed by ints.
This commit is contained in:
@ -47,13 +47,34 @@ namespace UnityExplorer.Inspectors.Reflection
|
||||
|
||||
var list = new List<KeyValuePair<int, string>>();
|
||||
var set = new HashSet<string>();
|
||||
|
||||
foreach (var value in values)
|
||||
{
|
||||
var name = value.ToString();
|
||||
|
||||
if (set.Contains(name))
|
||||
continue;
|
||||
|
||||
set.Add(name);
|
||||
list.Add(new KeyValuePair<int, string>((int)value, name));
|
||||
|
||||
var backingType = Enum.GetUnderlyingType(type);
|
||||
int intValue;
|
||||
try
|
||||
{
|
||||
// this approach is necessary, a simple '(int)value' is not sufficient.
|
||||
|
||||
var unbox = Convert.ChangeType(value, backingType);
|
||||
|
||||
intValue = (int)Convert.ChangeType(unbox, typeof(int));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ExplorerCore.LogWarning("[InteractiveEnum] Could not Unbox underlying type " + backingType.Name + " from " + type.FullName);
|
||||
ExplorerCore.Log(ex.ToString());
|
||||
continue;
|
||||
}
|
||||
|
||||
list.Add(new KeyValuePair<int, string>(intValue, name));
|
||||
}
|
||||
|
||||
s_enumNamesCache.Add(type, list.ToArray());
|
||||
|
@ -43,6 +43,7 @@ namespace UnityExplorer.Inspectors
|
||||
"Collider2D.Cast",
|
||||
"Collider2D.Raycast",
|
||||
"Texture2D.SetPixelDataImpl",
|
||||
"Camera.CalculateProjectionMatrixFromPhysicalProperties",
|
||||
#endif
|
||||
};
|
||||
private static readonly HashSet<string> bl_memberNameStartsWith = new HashSet<string>
|
||||
@ -172,11 +173,11 @@ namespace UnityExplorer.Inspectors
|
||||
{
|
||||
try
|
||||
{
|
||||
var sig = GetSig(member);
|
||||
|
||||
//ExplorerCore.Log($"Trying to cache member {sig}...");
|
||||
//ExplorerCore.Log(member.DeclaringType.FullName + "." + member.Name);
|
||||
|
||||
var sig = GetSig(member);
|
||||
|
||||
var mi = member as MethodInfo;
|
||||
var pi = member as PropertyInfo;
|
||||
var fi = member as FieldInfo;
|
||||
|
Reference in New Issue
Block a user