12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
-
- namespace Unity.VisualScripting
- {
- public sealed class ValueInputDefinition : ValuePortDefinition, IUnitInputPortDefinition
- {
- [SerializeAs(nameof(defaultValue))]
- private object _defaultvalue;
-
- [Inspectable]
- [DoNotSerialize]
- public override Type type
- {
- get
- {
- return base.type;
- }
- set
- {
- base.type = value;
-
- if (!type.IsAssignableFrom(defaultValue))
- {
- if (ValueInput.SupportsDefaultValue(type))
- {
- _defaultvalue = type.PseudoDefault();
- }
- else
- {
- hasDefaultValue = false;
- _defaultvalue = null;
- }
- }
- }
- }
-
- [Serialize]
- [Inspectable]
- public bool hasDefaultValue { get; set; }
-
- [DoNotSerialize]
- [Inspectable]
- public object defaultValue
- {
- get
- {
- return _defaultvalue;
- }
- set
- {
- if (type == null)
- {
- throw new InvalidOperationException("A type must be defined before setting the default value.");
- }
-
- if (!ValueInput.SupportsDefaultValue(type))
- {
- throw new InvalidOperationException("The selected type does not support default values.");
- }
-
- Ensure.That(nameof(value)).IsOfType(value, type);
-
- _defaultvalue = value;
- }
- }
- }
- }
|