Cannot use coordinates outside our InhabitType. Use the current or previous position.
Trying to access path outside line of sight. Skip this by using the current or previous position.
26{
27 unit->StopMoving();
28 float const wander_distance = 4;
29 float x = unit->GetPositionX();
30 float y = unit->GetPositionY();
31 float z = unit->GetPositionZ();
32
33 Map const* map = unit->GetMap();
34
35 bool is_water_ok, is_land_ok;
37
39 {
40 float wanderX = x + (wander_distance * (float)
rand_norm() - wander_distance / 2);
41 float wanderY = y + (wander_distance * (float)
rand_norm() - wander_distance / 2);
42
43
46
47 float new_z = unit->GetMapHeight(wanderX, wanderY, z);
49 {
53 continue;
54 }
55 else if (unit->IsWithinLOS(wanderX, wanderY, z))
56 {
57 bool is_water = map->
IsInWater(unit->GetPhaseMask(), wanderX, wanderY, z, unit->GetCollisionHeight());
58
59 if ((is_water && !is_water_ok) || (!is_water && !is_land_ok))
60 {
65 continue;
66 }
67 }
68 else
69 {
74 continue;
75 }
76
77
78
83 }
84
85
86
89
92}
#define MAX_CONF_WAYPOINTS
Definition ConfusedMovementGenerator.h:24
std::uint8_t uint8
Definition Define.h:109
#define INVALID_HEIGHT
Definition GridTerrainData.h:27
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
double rand_norm()
Definition Random.cpp:77
float i_waypoints[MAX_CONF_WAYPOINTS+1][3]
Definition ConfusedMovementGenerator.h:41
bool DoUpdate(T *, uint32)
Definition ConfusedMovementGenerator.cpp:115
uint32 i_nextMove
Definition ConfusedMovementGenerator.h:42
void _InitSpecific(T *, bool &, bool &)
bool IsInWater(uint32 phaseMask, float x, float y, float z, float collisionHeight) const
Definition Map.cpp:1654
void NormalizeMapCoord(float &c)
Definition GridDefines.h:198