using System; using UnityEngine; namespace Unity.VisualScripting { [Inspector(typeof(Literal))] public sealed class LiteralInspector : Inspector { public LiteralInspector(Metadata metadata) : base(metadata) { } private Metadata typeMetadata => metadata[nameof(Literal.type)]; private Metadata valueMetadata => metadata[nameof(Literal.value)]; private Metadata typedValueMetadata => valueMetadata.Cast((Type)typeMetadata.value); private bool hasType => typeMetadata.value != null; protected override float GetHeight(float width, GUIContent label) { if (hasType) { return LudiqGUI.GetInspectorHeight(this, typedValueMetadata, width, label); } else { return LudiqGUI.GetInspectorHeight(this, typeMetadata, width, label); } } protected override bool cacheHeight => false; protected override void OnGUI(Rect position, GUIContent label) { if (hasType) { LudiqGUI.Inspector(typedValueMetadata, position, label); } else { LudiqGUI.Inspector(typeMetadata, position, label); } } public override float GetAdaptiveWidth() { if (hasType) { return typedValueMetadata.Inspector().GetAdaptiveWidth(); } else { return typeMetadata.Inspector().GetAdaptiveWidth(); } } } }