diff --git a/Runtime/Engine/Code/AI/BehaviourNode.cs b/Runtime/Engine/Code/AI/BehaviourNode.cs index 2054a31..947b06d 100644 --- a/Runtime/Engine/Code/AI/BehaviourNode.cs +++ b/Runtime/Engine/Code/AI/BehaviourNode.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using RebootKit.Engine.Simulation; namespace RebootKit.Engine.AI { public class BehaviourNode { @@ -23,8 +24,8 @@ namespace RebootKit.Engine.AI { Children.Add(child); } - public virtual Status Process(float dt) { - return Children[m_CurrentChild].Process(dt); + public virtual Status Process(Actor target, float dt) { + return Children[m_CurrentChild].Process(target, dt); } public virtual void Reset() { diff --git a/Runtime/Engine/Code/AI/BehaviourTree.cs b/Runtime/Engine/Code/AI/BehaviourTree.cs index 6a3e338..7f5cde0 100644 --- a/Runtime/Engine/Code/AI/BehaviourTree.cs +++ b/Runtime/Engine/Code/AI/BehaviourTree.cs @@ -1,11 +1,13 @@ -namespace RebootKit.Engine.AI { +using RebootKit.Engine.Simulation; + +namespace RebootKit.Engine.AI { public class BehaviourTree : BehaviourNode { public BehaviourTree(string name) : base(name) { } - public override Status Process(float dt) { + public override Status Process(Actor target, float dt) { while (m_CurrentChild < Children.Count) { - Status status = Children[m_CurrentChild].Process(dt); + Status status = Children[m_CurrentChild].Process(target, dt); if (status != Status.Success) { return status; } diff --git a/Runtime/Engine/Code/AI/IStrategy.cs b/Runtime/Engine/Code/AI/IStrategy.cs index 8eb4adb..9a1457d 100644 --- a/Runtime/Engine/Code/AI/IStrategy.cs +++ b/Runtime/Engine/Code/AI/IStrategy.cs @@ -1,8 +1,9 @@ using System; +using RebootKit.Engine.Simulation; namespace RebootKit.Engine.AI { public interface IStrategy { - BehaviourNode.Status Process(float dt); + BehaviourNode.Status Process(Actor target, float dt); void Reset() { } } @@ -14,7 +15,7 @@ namespace RebootKit.Engine.AI { m_Predicate = predicate; } - public BehaviourNode.Status Process(float dt) { + public BehaviourNode.Status Process(Actor target, float dt) { if (m_Predicate()) { return BehaviourNode.Status.Success; } @@ -30,7 +31,7 @@ namespace RebootKit.Engine.AI { m_Action = action; } - public BehaviourNode.Status Process(float dt) { + public BehaviourNode.Status Process(Actor target, float dt) { m_Action(); return BehaviourNode.Status.Success; } diff --git a/Runtime/Engine/Code/AI/Leaf.cs b/Runtime/Engine/Code/AI/Leaf.cs index 0427a24..3808f67 100644 --- a/Runtime/Engine/Code/AI/Leaf.cs +++ b/Runtime/Engine/Code/AI/Leaf.cs @@ -1,4 +1,6 @@ -namespace RebootKit.Engine.AI { +using RebootKit.Engine.Simulation; + +namespace RebootKit.Engine.AI { public class Leaf : BehaviourNode { readonly IStrategy m_Strategy; @@ -6,8 +8,8 @@ m_Strategy = strategy; } - public override Status Process(float dt) { - return m_Strategy.Process(dt); + public override Status Process(Actor target, float dt) { + return m_Strategy.Process(target, dt); } public override void Reset() { diff --git a/Runtime/Engine/Code/AI/Selector.cs b/Runtime/Engine/Code/AI/Selector.cs index a205cae..567a78b 100644 --- a/Runtime/Engine/Code/AI/Selector.cs +++ b/Runtime/Engine/Code/AI/Selector.cs @@ -1,4 +1,5 @@ using System; +using RebootKit.Engine.Simulation; namespace RebootKit.Engine.AI { public class Selector : BehaviourNode { @@ -8,13 +9,13 @@ namespace RebootKit.Engine.AI { m_Condition = condition; } - public override Status Process(float dt) { + public override Status Process(Actor target, float dt) { if (m_Condition != null && !m_Condition()) { return Status.Failure; } if (m_CurrentChild < Children.Count) { - Status status = Children[m_CurrentChild].Process(dt); + Status status = Children[m_CurrentChild].Process(target, dt); switch (status) { case Status.Success: diff --git a/Runtime/Engine/Code/AI/Sequence.cs b/Runtime/Engine/Code/AI/Sequence.cs index f8b84fc..e1121a1 100644 --- a/Runtime/Engine/Code/AI/Sequence.cs +++ b/Runtime/Engine/Code/AI/Sequence.cs @@ -1,4 +1,5 @@ using System; +using RebootKit.Engine.Simulation; namespace RebootKit.Engine.AI { public class Sequence : BehaviourNode { @@ -8,13 +9,13 @@ namespace RebootKit.Engine.AI { m_Condition = condition; } - public override Status Process(float dt) { + public override Status Process(Actor target, float dt) { if (m_Condition != null && !m_Condition()) { return Status.Failure; } if (m_CurrentChild < Children.Count) { - Status status = Children[m_CurrentChild].Process(dt); + Status status = Children[m_CurrentChild].Process(target, dt); switch (status) { case Status.Success: