#if GRAPH_DESIGNER
/// ---------------------------------------------
/// Behavior Designer
/// Copyright (c) Opsive. All Rights Reserved.
/// https://www.opsive.com
/// ---------------------------------------------
namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals
{
using Opsive.BehaviorDesigner.Runtime.Components;
using Opsive.GraphDesigner.Runtime;
///
/// A TaskObject implementation of the Conditional task.
///
[NodeIcon("dea5c23eac9d12c4cbd380cc879816ea", "2963cf3eb0c036449829254b2074c4c3")]
public abstract class Conditional : Task, IConditional, IConditionalReevaluation
{
///
/// Reevaluates the task logic. Returns a TaskStatus indicating how the behavior tree flow should proceed.
///
/// The status of the task during the reevaluation phase.
public virtual TaskStatus OnReevaluateUpdate() { return OnUpdate(); }
///
/// Is the task being reevaluated?
///
/// True if the task is being reevaluated.
protected bool IsReevaluating()
{
var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity, true);
if (m_RuntimeIndex >= taskComponents.Length) {
return false;
}
return taskComponents[m_RuntimeIndex].Reevaluate;
}
}
}
#endif