feat: Planner::cached_world_state now clears when make_plan is called
This commit is contained in:
parent
8017194b0c
commit
4dbeb77ad4
|
@ -91,6 +91,8 @@ Array Planner::gdscript_make_plan(Ref<Goal> goal) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<Ref<Action>> Planner::make_plan(Ref<Goal> goal) {
|
Vector<Ref<Action>> Planner::make_plan(Ref<Goal> goal) {
|
||||||
|
// clear cache every planning phase
|
||||||
|
this->cached_world_state.clear();
|
||||||
// ordered list of all nodes still being considered
|
// ordered list of all nodes still being considered
|
||||||
Vector<PlannerNode> open{PlannerNode::goal_node(goal->goal_state)};
|
Vector<PlannerNode> open{PlannerNode::goal_node(goal->goal_state)};
|
||||||
PlannerNode first = open.get(0);
|
PlannerNode first = open.get(0);
|
||||||
|
@ -128,16 +130,15 @@ Vector<Ref<Action>> Planner::make_plan(Ref<Goal> goal) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant Planner::get_world_property(StringName prop_key) {
|
Variant Planner::get_world_property(StringName prop_key) {
|
||||||
if(prop_key.begins_with("g_"))
|
if(prop_key.begins_with("g_")) {
|
||||||
return this->global_world_state->get_world_property(prop_key);
|
return this->global_world_state->get_world_property(prop_key);
|
||||||
if(this->cached_world_state.has(prop_key))
|
} else if(this->cached_world_state.has(prop_key)) {
|
||||||
return this->cached_world_state.get(prop_key);
|
return this->cached_world_state.get(prop_key);
|
||||||
if(this->has_method("get_" + prop_key)) {
|
} else if(this->actor->has_method("get_" + prop_key)) {
|
||||||
Variant val = this->call(prop_key);
|
Variant val = this->actor->call("get_" + prop_key);
|
||||||
this->cached_world_state.insert(prop_key, val);
|
this->cached_world_state.insert(prop_key, val);
|
||||||
return val;
|
return val;
|
||||||
}
|
} else return nullptr;
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Planner::can_do(Ref<Action> action) {
|
bool Planner::can_do(Ref<Action> action) {
|
||||||
|
|
Loading…
Reference in a new issue