A game about forced loneliness, made by TACStudios
1namespace Unity.VisualScripting
2{
3 /// <summary>
4 /// Called before the machine is destroyed.
5 /// </summary>
6 [UnitCategory("Events/Lifecycle")]
7 [UnitOrder(7)]
8 public sealed class OnDestroy : MachineEventUnit<EmptyEventArgs>
9 {
10 protected override string hookName => EventHooks.OnDestroy;
11
12 public override void StopListening(GraphStack stack)
13 {
14 // StopListening is typically triggered when the object is disabled or destroyed
15 // OnDestroy is a special case event where we want it to continue listening even when the object
16 // is disabled. It only unregisters itself on destruction and not before.
17 // That's why this method is overriden to do nothing.
18 }
19
20 private protected override void InternalTrigger(GraphReference reference, EmptyEventArgs args)
21 {
22 base.InternalTrigger(reference, args);
23
24 // Stop listening for events after we're triggered (i.e when we're destroyed)
25 using var stack = reference.ToStackPooled();
26 base.StopListening(stack);
27 }
28 }
29}