A game about forced loneliness, made by TACStudios
1using System;
2
3namespace Unity.VisualScripting
4{
5 public sealed class ValueConnection : UnitConnection<ValueOutput, ValueInput>, IUnitConnection
6 {
7 public class DebugData : UnitConnectionDebugData
8 {
9 public object lastValue { get; set; }
10
11 public bool assignedLastValue { get; set; }
12 }
13
14 public override IGraphElementDebugData CreateDebugData()
15 {
16 return new DebugData();
17 }
18
19 [Obsolete(Serialization.ConstructorWarning)]
20 public ValueConnection() : base() { }
21
22 public ValueConnection(ValueOutput source, ValueInput destination) : base(source, destination)
23 {
24 if (destination.hasValidConnection)
25 {
26 throw new InvalidConnectionException("Value input ports do not support multiple connections.");
27 }
28
29 if (!source.type.IsConvertibleTo(destination.type, false))
30 {
31 throw new InvalidConnectionException($"Cannot convert from '{source.type}' to '{destination.type}'.");
32 }
33 }
34
35 #region Ports
36
37 public override ValueOutput source => sourceUnit.valueOutputs[sourceKey];
38
39 public override ValueInput destination => destinationUnit.valueInputs[destinationKey];
40
41 IUnitOutputPort IConnection<IUnitOutputPort, IUnitInputPort>.source => source;
42
43 IUnitInputPort IConnection<IUnitOutputPort, IUnitInputPort>.destination => destination;
44
45 #endregion
46
47 #region Dependencies
48
49 public override bool sourceExists => sourceUnit.valueOutputs.Contains(sourceKey);
50
51 public override bool destinationExists => destinationUnit.valueInputs.Contains(destinationKey);
52
53 #endregion
54 }
55}