* Fix stop player falling off map or walking throught objects while using ConfusedMovementGenerator (original patch by ?????)

--HG--
branch : trunk
This commit is contained in:
biglad
2009-10-09 19:21:31 +01:00
parent ad9eb5e89d
commit c13da994ef

View File

@@ -23,6 +23,7 @@
#include "Opcodes.h"
#include "ConfusedMovementGenerator.h"
#include "DestinationHolderImp.h"
#include "VMapFactory.h"
#ifdef MAP_BASED_RAND_GEN
#define rand_norm() unit.rand_norm()
@@ -46,11 +47,20 @@ ConfusedMovementGenerator<T>::Initialize(T &unit)
bool is_water_ok, is_land_ok;
_InitSpecific(unit, is_water_ok, is_land_ok);
VMAP::IVMapManager *vMaps = VMAP::VMapFactory::createOrGetVMapManager();
for(unsigned int idx=0; idx < MAX_CONF_WAYPOINTS+1; ++idx)
{
const float wanderX=wander_distance*rand_norm() - wander_distance/2;
const float wanderY=wander_distance*rand_norm() - wander_distance/2;
const bool isInLoS = vMaps->isInLineOfSight(unit.GetMapId(), x, y, z + 2.0f, i_waypoints[idx][0], i_waypoints[idx][1], z + 2.0f);
if (!isInLoS)
{
i_waypoints[idx][0] = x;
i_waypoints[idx][1] = y;
}
i_waypoints[idx][0] = x + wanderX;
i_waypoints[idx][1] = y + wanderY;