No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

IsVariableDefined.cs 1.8KB

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