aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/GoalSelector.cpp
diff options
context:
space:
mode:
authorLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
committerLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
commit42aec6dac53dffa6afe072560a7e1d4986112538 (patch)
tree0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.World/GoalSelector.cpp
parentc9d58eeac7c72f0b3038e084667b4d89a6249fce (diff)
parentef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff)
Merge branch 'main' into pr/win64-world-saves
# Conflicts: # Minecraft.Client/MinecraftServer.cpp # README.md
Diffstat (limited to 'Minecraft.World/GoalSelector.cpp')
-rw-r--r--Minecraft.World/GoalSelector.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/Minecraft.World/GoalSelector.cpp b/Minecraft.World/GoalSelector.cpp
index 85a37dda..3e3d99b5 100644
--- a/Minecraft.World/GoalSelector.cpp
+++ b/Minecraft.World/GoalSelector.cpp
@@ -30,6 +30,33 @@ void GoalSelector::addGoal(int prio, Goal *goal, bool canDeletePointer /*= true*
goals.push_back(new InternalGoal(prio, goal, canDeletePointer));
}
+void GoalSelector::removeGoal(Goal *toRemove)
+{
+ for(AUTO_VAR(it, goals.begin()); it != goals.end(); )
+ {
+ InternalGoal *ig = *it;
+ Goal *goal = ig->goal;
+
+ if (goal == toRemove)
+ {
+ AUTO_VAR(it2, find(usingGoals.begin(), usingGoals.end(), ig) );
+ if (it2 != usingGoals.end())
+ {
+ goal->stop();
+ usingGoals.erase(it2);
+ }
+
+ if(ig->canDeletePointer) delete ig->goal;
+ delete ig;
+ it = goals.erase(it);
+ }
+ else
+ {
+ ++it;
+ }
+ }
+}
+
void GoalSelector::tick()
{
vector<InternalGoal *> toStart;