AI/ActionSystem/BehaviorTree/Nodes/AgentSequenceNode.cs
namespace HC3;
/// <summary>
/// Set a sequence on an agent for a set time.
/// </summary>
public class AgentSequenceNode : Node
{
private readonly Agent Agent;
private readonly string Sequence;
private readonly float Duration;
private readonly string Reason;
private TimeUntil _timer;
public AgentSequenceNode( Agent agent, string sequence, float duration, string reason = null )
{
Agent = agent;
Sequence = sequence;
Duration = duration;
Reason = reason;
}
protected override void OnStart()
{
Agent.SetSequenceOverride( Sequence );
_timer = Duration;
}
public override Status Tick()
{
if ( _timer )
{
Agent.SetSequenceOverride( null );
return Status.Success;
}
return Status.Running;
}
public override ActionDisplayInfo? GetDisplay()
{
if ( Reason != null )
{
return new ActionDisplayInfo( "schedule", Reason, 1 - (_timer / Duration) );
}
return base.GetDisplay();
}
}