IntComparison.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. namespace BehaviorDesigner.Runtime.Tasks.Unity.Math
  2. {
  3. [TaskCategory("Unity/Math")]
  4. [TaskDescription("Performs comparison between two integers: less than, less than or equal to, equal to, not equal to, greater than or equal to, or greater than.")]
  5. public class IntComparison : Conditional
  6. {
  7. public enum Operation
  8. {
  9. LessThan,
  10. LessThanOrEqualTo,
  11. EqualTo,
  12. NotEqualTo,
  13. GreaterThanOrEqualTo,
  14. GreaterThan
  15. }
  16. [Tooltip("The operation to perform")]
  17. public Operation operation;
  18. [Tooltip("The first integer")]
  19. public SharedInt integer1;
  20. [Tooltip("The second integer")]
  21. public SharedInt integer2;
  22. public override TaskStatus OnUpdate()
  23. {
  24. switch (operation) {
  25. case Operation.LessThan:
  26. return integer1.Value < integer2.Value ? TaskStatus.Success : TaskStatus.Failure;
  27. case Operation.LessThanOrEqualTo:
  28. return integer1.Value <= integer2.Value ? TaskStatus.Success : TaskStatus.Failure;
  29. case Operation.EqualTo:
  30. return integer1.Value == integer2.Value ? TaskStatus.Success : TaskStatus.Failure;
  31. case Operation.NotEqualTo:
  32. return integer1.Value != integer2.Value ? TaskStatus.Success : TaskStatus.Failure;
  33. case Operation.GreaterThanOrEqualTo:
  34. return integer1.Value >= integer2.Value ? TaskStatus.Success : TaskStatus.Failure;
  35. case Operation.GreaterThan:
  36. return integer1.Value > integer2.Value ? TaskStatus.Success : TaskStatus.Failure;
  37. }
  38. return TaskStatus.Failure;
  39. }
  40. public override void OnReset()
  41. {
  42. operation = Operation.LessThan;
  43. integer1.Value = 0;
  44. integer2.Value = 0;
  45. }
  46. }
  47. }