48 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|
|
} |