using System; using System.Linq.Expressions; using UnityEngine; namespace RosettaUI { public static class UIInternalUtility { public static IBinder CreateReadOnlyBinder(Expression> targetExpression) { return Binder.Create( ExpressionUtility.CreateReadFunc(targetExpression), null ); } public static IBinder CreateBinder(Expression> targetExpression) { return ExpressionUtility.CreateBinder(targetExpression); } public static (IGetter, IGetter) CreateMinMaxGetterFromRangeAttribute(Expression> targetExpression) { var rangeAttribute = typeof(IConvertible).IsAssignableFrom(typeof(T)) ? ExpressionUtility.GetAttribute(targetExpression) : null; return RangeUtility.CreateGetterMinMax(rangeAttribute); } public static void SetInteractableWithBinder(Element element, IBinder binder) { element.Interactable = !binder.IsReadOnly; } } }