diff options
author | Adam Scott <ascott.ca@gmail.com> | 2022-04-18 15:57:23 -0400 |
---|---|---|
committer | Adam Scott <ascott.ca@gmail.com> | 2022-04-19 18:35:15 -0400 |
commit | 732102cbc599e486c4bb8cba33d2b4fe48ca4734 (patch) | |
tree | 6e6e4caeb3e8975fca315180e79a2a61aaccc6bd | |
parent | 690fefe43ee74c0ae3ed5642f3aefbeb711f9d1c (diff) |
Use ThreadWorkPool instead of thread_process_array in NavMap
-rw-r--r-- | modules/navigation/nav_map.cpp | 11 | ||||
-rw-r--r-- | modules/navigation/nav_map.h | 7 |
2 files changed, 15 insertions, 3 deletions
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<gd::NavigationPoly> &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 <KdTree.h> @@ -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 { |