57 lines
1.9 KiB
C#
57 lines
1.9 KiB
C#
|
/*********************************************************************
|
|||
|
* \file BehaviourTreeSequence.cs
|
|||
|
* \author Ryan Wang Nian Jing
|
|||
|
* \brief Based off Kheng Ian's SC_BTSelector.cs
|
|||
|
* Sequences function like "AND" nodes, having to process every child
|
|||
|
* successfully to return a success. Returns a failure on the first
|
|||
|
* child that fails
|
|||
|
*
|
|||
|
* \copyright Copyright (c) 2022 DigiPen Institute of Technology. Reproduction
|
|||
|
or disclosure of this file or its contents without the prior written
|
|||
|
consent of DigiPen Institute of Technology is prohibited.
|
|||
|
*********************************************************************/
|
|||
|
|
|||
|
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace SHADE_Scripting.AIBehaviour.BehaviourTree
|
|||
|
{
|
|||
|
public class BehaviourTreeSequence : BehaviourTreeNode
|
|||
|
{
|
|||
|
public BehaviourTreeSequence(string name) : base(name) { }
|
|||
|
public BehaviourTreeSequence(string name, List<BehaviourTreeNode> children) :
|
|||
|
base(name, children) { }
|
|||
|
|
|||
|
public override BehaviourTreeNodeStatus Evaluate()
|
|||
|
{
|
|||
|
{
|
|||
|
onEnter(BehaviourTreeNodeStatus.RUNNING);
|
|||
|
for (int i = 0; i < children.Count; ++i)
|
|||
|
{
|
|||
|
switch (children[i].Evaluate())
|
|||
|
{
|
|||
|
case BehaviourTreeNodeStatus.SUCCESS:
|
|||
|
continue;
|
|||
|
case BehaviourTreeNodeStatus.RUNNING:
|
|||
|
status = BehaviourTreeNodeStatus.RUNNING;
|
|||
|
onExit(BehaviourTreeNodeStatus.RUNNING);
|
|||
|
return status;
|
|||
|
case BehaviourTreeNodeStatus.FAILURE:
|
|||
|
status = BehaviourTreeNodeStatus.FAILURE;
|
|||
|
onExit(BehaviourTreeNodeStatus.FAILURE);
|
|||
|
return status;
|
|||
|
}
|
|||
|
}
|
|||
|
status = BehaviourTreeNodeStatus.SUCCESS;
|
|||
|
onExit(BehaviourTreeNodeStatus.SUCCESS);
|
|||
|
return status;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|