A game about forced loneliness, made by TACStudios
1using System; 2using UnityEngine; 3 4namespace Unity.VisualScripting 5{ 6 /// <summary> 7 /// Called when a specified number of seconds has elapsed. 8 /// </summary> 9 [UnitCategory("Events/Time")] 10 [Obsolete("Use Wait For Seconds or Timer instead.")] 11 public sealed class OnTimerElapsed : MachineEventUnit<EmptyEventArgs> 12 { 13 public new class Data : EventUnit<EmptyEventArgs>.Data 14 { 15 public float time; 16 17 public bool triggered; 18 } 19 20 public override IGraphElementData CreateData() 21 { 22 return new Data(); 23 } 24 25 protected override string hookName => EventHooks.Update; 26 27 /// <summary> 28 /// The number of seconds to await. 29 /// </summary> 30 [DoNotSerialize] 31 [PortLabel("Delay")] 32 public ValueInput seconds { get; private set; } 33 34 /// <summary> 35 /// Whether to ignore the time scale. 36 /// </summary> 37 [DoNotSerialize] 38 [PortLabel("Unscaled")] 39 public ValueInput unscaledTime { get; private set; } 40 41 protected override void Definition() 42 { 43 base.Definition(); 44 45 seconds = ValueInput(nameof(seconds), 0f); 46 unscaledTime = ValueInput(nameof(unscaledTime), false); 47 } 48 49 public override void StartListening(GraphStack stack) 50 { 51 base.StartListening(stack); 52 53 var data = stack.GetElementData<Data>(this); 54 55 data.triggered = false; 56 data.time = 0; 57 } 58 59 protected override bool ShouldTrigger(Flow flow, EmptyEventArgs args) 60 { 61 var data = flow.stack.GetElementData<Data>(this); 62 63 if (data.triggered) 64 { 65 return false; 66 } 67 68 var increment = flow.GetValue<bool>(unscaledTime) ? Time.unscaledDeltaTime : Time.deltaTime; 69 var threshold = flow.GetValue<float>(seconds); 70 71 data.time += increment; 72 73 if (data.time >= threshold) 74 { 75 data.triggered = true; 76 return true; 77 } 78 79 return false; 80 } 81 } 82}