In fact, the class in namespace. Here is the full code.
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine.Assertions;
namespace Nnfs.Serializable
{
using ConditionEnum = ValueCondition.ConditionEnum;
public static class ValueCondition
{
public enum ConditionEnum { EQ, NE, GT, GE, LT, LE, NOTUSE }
}
[System.Serializable]
public class ValueCondition<T>
{
[LabelWidth(40), HorizontalGroup("1", 0.35f), DisableIf("Condition", ConditionEnum.NOTUSE)] public T Value;
[LabelText(""), HorizontalGroup("1", 0.4f), ValueDropdown("@Editor_DropDownList()")] public ConditionEnum Condition;
public bool Compare(T rhv)
{
switch (Condition)
{
case ConditionEnum.EQ: return Comparer<T>.Default.Compare(Value, rhv) == 0;
case ConditionEnum.NE: return Comparer<T>.Default.Compare(Value, rhv) != 0;
case ConditionEnum.GT: return Comparer<T>.Default.Compare(Value, rhv) > 0;
case ConditionEnum.GE: return Comparer<T>.Default.Compare(Value, rhv) >= 0;
case ConditionEnum.LT: return Comparer<T>.Default.Compare(Value, rhv) < 0;
case ConditionEnum.LE: return Comparer<T>.Default.Compare(Value, rhv) <= 0;
case ConditionEnum.NOTUSE: return true;
default: Assert.IsFalse(true); return false;
}
}
public static ValueDropdownList<ConditionEnum> Editor_DropDownList()
{
return new ValueDropdownList<ConditionEnum>()
{
{"== *",ConditionEnum.EQ}, {"!= *",ConditionEnum.NE}, {"> *", ConditionEnum.GT}, {">= *", ConditionEnum.GE}, {"< *", ConditionEnum.LT}, {"<= *", ConditionEnum.LE}, {"NOTUSE", ConditionEnum.NOTUSE}
};
}
}
}
This namespace of only this ValueCondition class is not wrapped, and I don’t want.
There are many other definitions in this Nnfs.Seriazable namespace, so without much thought, I put enum to something that related ValueCondition class(I know ValueCondition and ValueCondition are different),
but a following looks better if only enum.
namespace Nnfs.Serializable
{
using ConditionEnum = ValueCondition.ConditionEnum;
namespace ValueCondition
{
public enum ConditionEnum { EQ, NE, GT, GE, LT, LE, NOTUSE }
}
...
I know this is not a common case, but I thought it would be better to make the error displayed in the console easier to understand.