using System; using UnityObject = UnityEngine.Object; namespace Unity.VisualScripting { [FuzzyOption(typeof(Literal))] public class LiteralOption : UnitOption { public LiteralOption() : base() { } public LiteralOption(Literal unit) : base(unit) { sourceScriptGuids = UnitBase.GetScriptGuids(unit.type).ToHashSet(); } public Type literalType { get; private set; } protected override void FillFromUnit() { literalType = unit.type; base.FillFromUnit(); } protected override string Label(bool human) { if (unit.value is UnityObject uo && !uo.IsUnityNull()) { return UnityAPI.Await(() => uo.name); } return unit.type.SelectedName(human) + " Literal"; } protected override EditorTexture Icon() { if (unit.value is UnityObject uo && !uo.IsUnityNull()) { return uo.Icon(); } return base.Icon(); } protected override string FavoriteKey() { return $"{literalType.FullName}@literal"; } public override void Deserialize(UnitOptionRow row) { base.Deserialize(row); literalType = Codebase.DeserializeType(row.tag1); } public override UnitOptionRow Serialize() { var row = base.Serialize(); row.tag1 = Codebase.SerializeType(literalType); return row; } } }