/
TON618OFF
/
Unity-Project-RTU
Обзор
Документация
Войти
/
TON618OFF
/
Unity-Project-RTU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Library/PackageCache/com.unity.visualscripting@1.9.4/Runtime/VisualScripting.Flow/Framework/Events/Time/OnTimerElapsed.cs
82 строки
2 KB
TON618OFF
release
03 окт 2024, 22:20
03 окт 2024, 22:20
7c70e9f
Код
Авторство
О чём код?
using System; using UnityEngine; namespace Unity.VisualScripting { /// <summary> /// Called when a specified number of seconds has elapsed. /// </summary> [UnitCategory("Events/Time")] [Obsolete("Use Wait For Seconds or Timer instead.")] public sealed class OnTimerElapsed : MachineEventUnit<EmptyEventArgs> { public new class Data : EventUnit<EmptyEventArgs>.Data { public float time; public bool triggered; } public override IGraphElementData CreateData() { return new Data(); } protected override string hookName => EventHooks.Update; /// <summary> /// The number of seconds to await. /// </summary> [DoNotSerialize] [PortLabel("Delay")] public ValueInput seconds { get; private set; } /// <summary> /// Whether to ignore the time scale. /// </summary> [DoNotSerialize] [PortLabel("Unscaled")] public ValueInput unscaledTime { get; private set; } protected override void Definition() { base.Definition(); seconds = ValueInput(nameof(seconds), 0f); unscaledTime = ValueInput(nameof(unscaledTime), false); } public override void StartListening(GraphStack stack) { base.StartListening(stack); var data = stack.GetElementData<Data>(this); data.triggered = false; data.time = 0; } protected override bool ShouldTrigger(Flow flow, EmptyEventArgs args) { var data = flow.stack.GetElementData<Data>(this); if (data.triggered) { return false; } var increment = flow.GetValue<bool>(unscaledTime) ? Time.unscaledDeltaTime : Time.deltaTime; var threshold = flow.GetValue<float>(seconds); data.time += increment; if (data.time >= threshold) { data.triggered = true; return true; } return false; } } }