A game about forced loneliness, made by TACStudios
1using UnityEngine;
2
3namespace Unity.VisualScripting
4{
5 /// <summary>
6 /// Checks whether a variable is defined.
7 /// </summary>
8 [UnitTitle("Has Variable")]
9 public sealed class IsVariableDefined : UnifiedVariableUnit
10 {
11 /// <summary>
12 /// Whether the variable is defined.
13 /// </summary>
14 [DoNotSerialize]
15 [PortLabel("Defined")]
16 [PortLabelHidden]
17 [PortKey("isDefined")]
18 public ValueOutput isVariableDefined { get; private set; }
19
20 protected override void Definition()
21 {
22 base.Definition();
23
24 isVariableDefined = ValueOutput("isDefined", IsDefined);
25
26 Requirement(name, isVariableDefined);
27
28 if (kind == VariableKind.Object)
29 {
30 Requirement(@object, isVariableDefined);
31 }
32 }
33
34 private bool IsDefined(Flow flow)
35 {
36 var name = flow.GetValue<string>(this.name);
37
38 switch (kind)
39 {
40 case VariableKind.Flow:
41 return flow.variables.IsDefined(name);
42 case VariableKind.Graph:
43 return Variables.Graph(flow.stack).IsDefined(name);
44 case VariableKind.Object:
45 return Variables.Object(flow.GetValue<GameObject>(@object)).IsDefined(name);
46 case VariableKind.Scene:
47 return Variables.Scene(flow.stack.scene).IsDefined(name);
48 case VariableKind.Application:
49 return Variables.Application.IsDefined(name);
50 case VariableKind.Saved:
51 return Variables.Saved.IsDefined(name);
52 default:
53 throw new UnexpectedEnumValueException<VariableKind>(kind);
54 }
55 }
56 }
57}