module-inspector/Runtime/Drawers/IntToEnum.cs

48 lines
1.2 KiB
C#

using System;
using Module.Inspector.Utilities;
using UnityEngine.Scripting;
namespace Module.Inspector
{
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
public sealed class IntToEnum : DrawerPropertyAttribute
{
private Type type;
private readonly string strTypeReplaceWith;
private bool hasTriedFetchReplaceType;
[Preserve]
public IntToEnum(Type type)
{
this.type = type;
hasTriedFetchReplaceType = true;
}
[Preserve]
public IntToEnum(Type type, string strTypeReplaceWith)
{
this.type = type;
this.strTypeReplaceWith = strTypeReplaceWith;
}
public Type GetValidType()
{
if (hasTriedFetchReplaceType)
return type;
#if UNITY_EDITOR
Type replaceType = ReflectionUtility.GetAnyTypeWithName(strTypeReplaceWith);
#else
Type replaceType = null;
#endif
hasTriedFetchReplaceType = true;
if (replaceType != null)
type = replaceType;
return type;
}
}
}