A game about forced loneliness, made by TACStudios
1using System;
2using UnityEditor;
3using UnityEngine;
4
5namespace Unity.VisualScripting
6{
7 [Inspector(typeof(ValueInputDefinition))]
8 public sealed class ValueInputDefinitionInspector : ValuePortDefinitionInspector
9 {
10 public ValueInputDefinitionInspector(Metadata metadata) : base(metadata) { }
11
12 private Metadata hasDefaultValueMetadata => metadata[nameof(ValueInputDefinition.hasDefaultValue)];
13 private Metadata defaultValueMetadata => metadata[nameof(ValueInputDefinition.defaultValue)];
14 private Metadata typedDefaultValueMetadata => defaultValueMetadata.Cast((Type)typeMetadata.value);
15
16 private float GetHasDefaultValueHeight(float width)
17 {
18 return LudiqGUI.GetInspectorHeight(this, hasDefaultValueMetadata, width);
19 }
20
21 private float GetDefaultValueHeight(float width)
22 {
23 return LudiqGUI.GetInspectorHeight(this, typedDefaultValueMetadata, width);
24 }
25
26 private void OnHasDefaultValueGUI(Rect position)
27 {
28 LudiqGUI.Inspector(hasDefaultValueMetadata, position);
29 }
30
31 private void OnDefaultValueGUI(Rect position)
32 {
33 LudiqGUI.Inspector(typedDefaultValueMetadata, position);
34 }
35
36 protected override float GetHeight(float width, GUIContent label)
37 {
38 var height = base.GetHeight(width, label);
39
40 if (typeMetadata.value != null && ValueInput.SupportsDefaultValue((Type)typeMetadata.value))
41 {
42 height += EditorGUIUtility.standardVerticalSpacing;
43
44 height += GetHasDefaultValueHeight(width);
45
46 if ((bool)hasDefaultValueMetadata.value)
47 {
48 height += EditorGUIUtility.standardVerticalSpacing;
49
50 height += GetDefaultValueHeight(width);
51 }
52 }
53
54 return height;
55 }
56
57 protected override void OnFieldsGUI(Rect position)
58 {
59 base.OnFieldsGUI(position);
60
61 if (typeMetadata.value != null && ValueInput.SupportsDefaultValue((Type)typeMetadata.value))
62 {
63 y += EditorGUIUtility.standardVerticalSpacing;
64
65 OnHasDefaultValueGUI(position.VerticalSection(ref y, GetHasDefaultValueHeight(position.width)));
66
67 if ((bool)hasDefaultValueMetadata.value)
68 {
69 y += EditorGUIUtility.standardVerticalSpacing;
70
71 OnDefaultValueGUI(position.VerticalSection(ref y, GetDefaultValueHeight(position.width)));
72 }
73 }
74 }
75 }
76}