From: <fl...@us...> - 2010-03-30 21:21:58
|
Revision: 2557 http://freedroid.svn.sourceforge.net/freedroid/?rev=2557&view=rev Author: fluzz Date: 2010-03-30 21:21:52 +0000 (Tue, 30 Mar 2010) Log Message: ----------- Uniformisation of 2 distance parameters. 1) distance to waypoint, used to choose a new waypoint, and distance to intermediate point, used to go the next intermediate point. 2) width of line used during pathfinding, and width of line used to validate a path between two waypoints. Those 2 values are choosen to ensure that a configured path or a computed path is really walkable. Modified Paths: -------------- src/defs.h src/enemy.c src/lvledit/lvledit_validator.c Modified: src/defs.h =================================================================== --- src/defs.h 2010-03-30 21:10:38 UTC (rev 2556) +++ src/defs.h 2010-03-30 21:21:52 UTC (rev 2557) @@ -1547,12 +1547,14 @@ // Minimum distance to shoot with a range weapon #define SQUARED_RANGE_SHOOT_MIN_DIST (7.0) -// Margin's size added to obstacles size when colldet is called by the pathfinder -#define COLLDET_MARGIN (0.05) -// Distance to next intermediate point before to follow the next subpath +// Margin's size added to obstacles size when colldet is called by the pathfinder. +// Also used to validate the walkability of a path between 2 waypoints. +#define COLLDET_MARGIN (0.04) +// Distance to next intermediate point before to follow the next subpath. +// Also used as the distance to next waypoint before to choose a new one. // It has to be smaller than COLLDET_MARGIN. Near half of COLLDET_MARGIN is a // good candidate -#define DIST_TO_INTERM_POINT (0.03) +#define DIST_TO_INTERM_POINT (0.02) //----- // Pathfinder constants Modified: src/enemy.c =================================================================== --- src/enemy.c 2010-03-30 21:10:38 UTC (rev 2556) +++ src/enemy.c 2010-03-30 21:21:52 UTC (rev 2557) @@ -1690,7 +1690,7 @@ /* Action */ if ((new_move_target->x - ThisRobot->pos.x) * (new_move_target->x - ThisRobot->pos.x) + - (new_move_target->y - ThisRobot->pos.y) * (new_move_target->y - ThisRobot->pos.y) < 0.3) { + (new_move_target->y - ThisRobot->pos.y) * (new_move_target->y - ThisRobot->pos.y) < DIST_TO_INTERM_POINT*DIST_TO_INTERM_POINT) { ThisRobot->combat_state = SELECT_NEW_WAYPOINT; return; } Modified: src/lvledit/lvledit_validator.c =================================================================== --- src/lvledit/lvledit_validator.c 2010-03-30 21:10:38 UTC (rev 2556) +++ src/lvledit/lvledit_validator.c 2010-03-30 21:21:52 UTC (rev 2557) @@ -556,7 +556,6 @@ int dist_is_invalid = FALSE; int path_is_invalid = FALSE; int path_warning = FALSE; -# define TRSL_FACT 0.02 # define MIN_DIST 1.0 // Check waypoints position @@ -770,8 +769,8 @@ if (length < MIN_DIST) continue; // Too close waypoints. Already handled - line_vector.x = (line_vector.x * TRSL_FACT) / length; - line_vector.y = (line_vector.y * TRSL_FACT) / length; + line_vector.x = (line_vector.x * COLLDET_MARGIN) / length; + line_vector.y = (line_vector.y * COLLDET_MARGIN) / length; // Translation normal moderately_finepoint line_normal = { -line_vector.y, line_vector.x }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |