A game about forced loneliness, made by TACStudios
1namespace Unity.VisualScripting
2{
3 [UnitOrder(406)]
4 public abstract class Project<T> : Unit
5 {
6 /// <summary>
7 /// The vector to project.
8 /// </summary>
9 [DoNotSerialize]
10 public ValueInput a { get; private set; }
11
12 /// <summary>
13 /// The vector on which to project.
14 /// </summary>
15 [DoNotSerialize]
16 public ValueInput b { get; private set; }
17
18 /// <summary>
19 /// The projection of A on B.
20 /// </summary>
21 [DoNotSerialize]
22 [PortLabelHidden]
23 public ValueOutput projection { get; private set; }
24
25 protected override void Definition()
26 {
27 a = ValueInput<T>(nameof(a));
28 b = ValueInput<T>(nameof(b));
29 projection = ValueOutput(nameof(projection), Operation).Predictable();
30
31 Requirement(a, projection);
32 Requirement(b, projection);
33 }
34
35 private T Operation(Flow flow)
36 {
37 return Operation(flow.GetValue<T>(a), flow.GetValue<T>(b));
38 }
39
40 public abstract T Operation(T a, T b);
41 }
42}