Fix NPC prototype reloads (#13981)

This commit is contained in:
metalgearsloth
2023-02-08 08:27:34 +11:00
committed by GitHub
parent bfedfd0abb
commit 6b6c6b1c9f
4 changed files with 39 additions and 15 deletions

View File

@@ -11,6 +11,7 @@ namespace Content.Server.NPC.HTN;
/// </summary>
public sealed class HTNPlanJob : Job<HTNPlan>
{
private readonly HTNSystem _htn;
private readonly HTNCompoundTask _rootTask;
private NPCBlackboard _blackboard;
@@ -21,11 +22,13 @@ public sealed class HTNPlanJob : Job<HTNPlan>
public HTNPlanJob(
double maxTime,
HTNSystem htn,
HTNCompoundTask rootTask,
NPCBlackboard blackboard,
List<int>? branchTraversal,
CancellationToken cancellationToken = default) : base(maxTime, cancellationToken)
{
_htn = htn;
_rootTask = rootTask;
_blackboard = blackboard;
_branchTraversal = branchTraversal;
@@ -156,6 +159,8 @@ public sealed class HTNPlanJob : Job<HTNPlan>
/// </summary>
private bool TryFindSatisfiedMethod(HTNCompoundTask compound, Queue<HTNTask> tasksToProcess, NPCBlackboard blackboard, ref int mtrIndex)
{
var compBranches = _htn.CompoundBranches[compound];
for (var i = mtrIndex; i < compound.Branches.Count; i++)
{
var branch = compound.Branches[i];
@@ -173,7 +178,9 @@ public sealed class HTNPlanJob : Job<HTNPlan>
if (!isValid)
continue;
foreach (var task in branch.Tasks)
var branchTasks = compBranches[i];
foreach (var task in branchTasks)
{
tasksToProcess.Enqueue(task);
}