From 732102cbc599e486c4bb8cba33d2b4fe48ca4734 Mon Sep 17 00:00:00 2001 From: Adam Scott Date: Mon, 18 Apr 2022 15:57:23 -0400 Subject: Use ThreadWorkPool instead of thread_process_array in NavMap --- modules/navigation/nav_map.cpp | 11 +++++++++-- modules/navigation/nav_map.h | 7 ++++++- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'modules/navigation') diff --git a/modules/navigation/nav_map.cpp b/modules/navigation/nav_map.cpp index 217e503d82..95d1997da2 100644 --- a/modules/navigation/nav_map.cpp +++ b/modules/navigation/nav_map.cpp @@ -30,7 +30,6 @@ #include "nav_map.h" -#include "core/os/threaded_array_processor.h" #include "nav_region.h" #include "rvo_agent.h" @@ -674,7 +673,7 @@ void NavMap::compute_single_step(uint32_t index, RvoAgent **agent) { void NavMap::step(real_t p_deltatime) { deltatime = p_deltatime; if (controlled_agents.size() > 0) { - thread_process_array( + step_work_pool.do_work( controlled_agents.size(), this, &NavMap::compute_single_step, @@ -719,3 +718,11 @@ void NavMap::clip_path(const std::vector &p_navigation_polys } } } + +NavMap::NavMap() { + step_work_pool.init(); +} + +NavMap::~NavMap() { + step_work_pool.finish(); +} diff --git a/modules/navigation/nav_map.h b/modules/navigation/nav_map.h index f46297a7ce..5232e42bed 100644 --- a/modules/navigation/nav_map.h +++ b/modules/navigation/nav_map.h @@ -35,6 +35,7 @@ #include "core/math/math_defs.h" #include "core/templates/map.h" +#include "core/templates/thread_work_pool.h" #include "nav_utils.h" #include @@ -80,8 +81,12 @@ class NavMap : public NavRid { /// Change the id each time the map is updated. uint32_t map_update_id = 0; + /// Pooled threads for computing steps + ThreadWorkPool step_work_pool; + public: - NavMap() {} + NavMap(); + ~NavMap(); void set_up(Vector3 p_up); Vector3 get_up() const { -- cgit v1.2.3