projects
/
oweals
/
minetest.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix to to too two times
[oweals/minetest.git]
/
src
/
pathfinder.cpp
diff --git
a/src/pathfinder.cpp
b/src/pathfinder.cpp
index 0d1cfe476cf2567cbe8045f8d7a6d6656ca40832..d39bdab3add0a1ba243d549a2670f63c7b26033e 100644
(file)
--- 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 "pathfinder.h"
+#include "environment.h"
+#include "map.h"
+#include "log.h"
#ifdef PATHFINDER_DEBUG
#include <iomanip>
#ifdef PATHFINDER_DEBUG
#include <iomanip>
@@
-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 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
/******************************************************************************/
#endif
/******************************************************************************/
@@
-204,7
+207,7
@@
std::vector<v3s16> pathfinder::get_Path(ServerEnvironment* env,
//check parameters
if (env == 0) {
//check parameters
if (env == 0) {
-
std::cout
<< "missing environment pointer" << std::endl;
+
ERROR_TARGET
<< "missing environment pointer" << std::endl;
return retval;
}
return retval;
}
@@
-243,7
+246,7
@@
std::vector<v3s16> pathfinder::get_Path(ServerEnvironment* env,
//build data map
if (!build_costmap()) {
//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
return retval;
}
#ifdef PATHFINDER_DEBUG
@@
-260,13
+263,13
@@
std::vector<v3s16> pathfinder::get_Path(ServerEnvironment* env,
path_gridnode& endpos = getIndexElement(EndIndex);
if (!startpos.valid) {
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) {
"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;
"Index: " << PPOS(EndIndex) <<
"Realpos: " << PPOS(getRealPos(EndIndex)) << std::endl;
return retval;
@@
-287,7
+290,7
@@
std::vector<v3s16> pathfinder::get_Path(ServerEnvironment* env,
update_cost_retval = update_cost_heuristic(StartIndex,v3s16(0,0,0),0,0);
break;
default:
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;
}
break;
}
@@
-347,7
+350,7
@@
std::vector<v3s16> pathfinder::get_Path(ServerEnvironment* env,
#ifdef PATHFINDER_DEBUG
print_pathlen();
#endif
#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);
" 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;
}
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;
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;
}
continue;
}
@@
-880,7
+885,7
@@
bool pathfinder::update_cost_heuristic( v3s16 ipos,
/******************************************************************************/
void pathfinder::build_path(std::vector<v3s16>& path,v3s16 pos, int level) {
level ++;
/******************************************************************************/
void pathfinder::build_path(std::vector<v3s16>& path,v3s16 pos, int level) {
level ++;
- if (level >
10
00) {
+ if (level >
7
00) {
ERROR_TARGET
<< LVL "Pathfinder: path is too long aborting" << std::endl;
return;
ERROR_TARGET
<< LVL "Pathfinder: path is too long aborting" << std::endl;
return;