A game about forced loneliness, made by TACStudios
1using System;
2
3namespace Unity.VisualScripting
4{
5 public sealed class ValueInputDefinition : ValuePortDefinition, IUnitInputPortDefinition
6 {
7 [SerializeAs(nameof(defaultValue))]
8 private object _defaultvalue;
9
10 [Inspectable]
11 [DoNotSerialize]
12 public override Type type
13 {
14 get
15 {
16 return base.type;
17 }
18 set
19 {
20 base.type = value;
21
22 if (!type.IsAssignableFrom(defaultValue))
23 {
24 if (ValueInput.SupportsDefaultValue(type))
25 {
26 _defaultvalue = type.PseudoDefault();
27 }
28 else
29 {
30 hasDefaultValue = false;
31 _defaultvalue = null;
32 }
33 }
34 }
35 }
36
37 [Serialize]
38 [Inspectable]
39 public bool hasDefaultValue { get; set; }
40
41 [DoNotSerialize]
42 [Inspectable]
43 public object defaultValue
44 {
45 get
46 {
47 return _defaultvalue;
48 }
49 set
50 {
51 if (type == null)
52 {
53 throw new InvalidOperationException("A type must be defined before setting the default value.");
54 }
55
56 if (!ValueInput.SupportsDefaultValue(type))
57 {
58 throw new InvalidOperationException("The selected type does not support default values.");
59 }
60
61 Ensure.That(nameof(value)).IsOfType(value, type);
62
63 _defaultvalue = value;
64 }
65 }
66 }
67}