fix: TakeCover is now more likely to find matching cover

This commit is contained in:
Sara 2024-09-09 21:45:17 +02:00
parent a5bde58e57
commit d7dadac070

View file

@ -95,6 +95,7 @@ bool TakeCover::procedural_is_possible(goap::ActorWorldState *context) const {
for(NavMarker *marker : room->get_markers())
if(TakeCover::is_marker_cover_from(marker, target_position, context_position))
return true;
gd::UtilityFunctions::print("!!! no cover marker found for ", context->get_path());
return false;
}
@ -128,8 +129,7 @@ bool TakeCover::is_marker_cover_from(NavMarker *marker, gd::Vector3 const &targe
gd::Vector3 const marker_position{marker->get_global_position()};
float const distance_to_target{target_position.distance_to(context_position)};
return marker->get_marker_type() == MarkerType::Cover
&& marker->get_global_basis().get_column(2).dot(marker_position - target_position) < -2.f
&& context_position.distance_to(marker_position) < (distance_to_target * 2.f);
&& marker->get_global_basis().get_column(2).dot(marker_position - target_position) < -2.f;
}
float TakeCover::score_cover_marker(class NavMarker* marker, const gd::Vector3& target_position, const gd::Vector3& context_position) const {