X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fpathfinder.cpp;h=d39bdab3add0a1ba243d549a2670f63c7b26033e;hb=dec8c43de3afdbd2e257a031f5e053e7f1e74aa0;hp=0d1cfe476cf2567cbe8045f8d7a6d6656ca40832;hpb=9e6376bd95ba9309365b39b878ab2f499776437a;p=oweals%2Fminetest.git diff --git a/src/pathfinder.cpp b/src/pathfinder.cpp index 0d1cfe476..d39bdab3a 100644 --- a/src/pathfinder.cpp +++ b/src/pathfinder.cpp @@ -22,6 +22,9 @@ with this program; if not, write to the Free Software Foundation, Inc., /******************************************************************************/ #include "pathfinder.h" +#include "environment.h" +#include "map.h" +#include "log.h" #ifdef PATHFINDER_DEBUG #include @@ -48,9 +51,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #define ERROR_TARGET std::cout #else #define DEBUG_OUT(a) while(0) -#define INFO_TARGET infostream -#define VERBOSE_TARGET verbosestream -#define ERROR_TARGET errorstream +#define INFO_TARGET infostream << "pathfinder: " +#define VERBOSE_TARGET verbosestream << "pathfinder: " +#define ERROR_TARGET errorstream << "pathfinder: " #endif /******************************************************************************/ @@ -204,7 +207,7 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, //check parameters if (env == 0) { - std::cout << "missing environment pointer" << std::endl; + ERROR_TARGET << "missing environment pointer" << std::endl; return retval; } @@ -243,7 +246,7 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, //build data map if (!build_costmap()) { - std::cout << "failed to build costmap" << std::endl; + ERROR_TARGET << "failed to build costmap" << std::endl; return retval; } #ifdef PATHFINDER_DEBUG @@ -260,13 +263,13 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, path_gridnode& endpos = getIndexElement(EndIndex); if (!startpos.valid) { - std::cout << "invalid startpos" << + VERBOSE_TARGET << "invalid startpos" << "Index: " << PPOS(StartIndex) << "Realpos: " << PPOS(getRealPos(StartIndex)) << std::endl; return retval; } if (!endpos.valid) { - std::cout << "invalid stoppos" << + VERBOSE_TARGET << "invalid stoppos" << "Index: " << PPOS(EndIndex) << "Realpos: " << PPOS(getRealPos(EndIndex)) << std::endl; return retval; @@ -287,7 +290,7 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, update_cost_retval = update_cost_heuristic(StartIndex,v3s16(0,0,0),0,0); break; default: - std::cout << "missing algorithm"<< std::endl; + ERROR_TARGET << "missing algorithm"<< std::endl; break; } @@ -347,7 +350,7 @@ std::vector pathfinder::get_Path(ServerEnvironment* env, #ifdef PATHFINDER_DEBUG print_pathlen(); #endif - std::cout << "failed to update cost map"<< std::endl; + ERROR_TARGET << "failed to update cost map"<< std::endl; } @@ -820,6 +823,7 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos, " out of range (" << m_limits.X.max << "," << m_limits.Y.max << "," << m_limits.Z.max <<")" << std::endl); + direction = get_dir_heuristic(directions,g_pos); continue; } @@ -828,6 +832,7 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos, if (!g_pos2.valid) { VERBOSE_TARGET << LVL "Pathfinder: no data for new position: " << PPOS(ipos2) << std::endl; + direction = get_dir_heuristic(directions,g_pos); continue; } @@ -880,7 +885,7 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos, /******************************************************************************/ void pathfinder::build_path(std::vector& path,v3s16 pos, int level) { level ++; - if (level > 1000) { + if (level > 700) { ERROR_TARGET << LVL "Pathfinder: path is too long aborting" << std::endl; return;