EVERYTHING
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
[DisallowMultipleComponent]
|
||||
public sealed class WaitBehavior : NodeBehavior
|
||||
{
|
||||
private const float RemainingRefreshInterval = 0.1f;
|
||||
|
||||
private bool waiting;
|
||||
|
||||
private float waitEndTime;
|
||||
|
||||
private float nextRemainingRefreshAt;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (base.IsAuthoritative)
|
||||
{
|
||||
SetOutputValueIfChanged("Remaining", BSValue.FromNumber(0.0));
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (base.IsAuthoritative && waiting)
|
||||
{
|
||||
float num = Mathf.Max(0f, waitEndTime - Time.unscaledTime);
|
||||
if (num <= 0.0001f)
|
||||
{
|
||||
waiting = false;
|
||||
SetOutputValueIfChanged("Remaining", BSValue.FromNumber(0.0));
|
||||
TriggerOutput("Done");
|
||||
}
|
||||
else if (Time.unscaledTime >= nextRemainingRefreshAt)
|
||||
{
|
||||
nextRemainingRefreshAt = Time.unscaledTime + 0.1f;
|
||||
SetOutputValueIfChanged("Remaining", BSValue.FromNumber(num));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnRun(string inputPortName)
|
||||
{
|
||||
if (!base.IsAuthoritative)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (string.Equals(inputPortName, "Wait", StringComparison.Ordinal))
|
||||
{
|
||||
float num = Mathf.Max(0f, (float)GetInputNumber("Delay"));
|
||||
waiting = false;
|
||||
SetOutputValueIfChanged("Remaining", BSValue.FromNumber(num));
|
||||
if (num <= 0.0001f)
|
||||
{
|
||||
TriggerOutput("Done");
|
||||
return;
|
||||
}
|
||||
waiting = true;
|
||||
waitEndTime = Time.unscaledTime + num;
|
||||
nextRemainingRefreshAt = 0f;
|
||||
}
|
||||
else if (string.Equals(inputPortName, "Stop", StringComparison.Ordinal) && waiting)
|
||||
{
|
||||
waiting = false;
|
||||
SetOutputValueIfChanged("Remaining", BSValue.FromNumber(0.0));
|
||||
TriggerOutput("Stopped");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user