find_path: consider walkable instead of CONTENT_AIR 4037/head
authorAuke Kok <sofar@foo-projects.org>
Tue, 26 Apr 2016 00:14:57 +0000 (17:14 -0700)
committerest31 <MTest31@outlook.com>
Sun, 1 May 2016 13:32:03 +0000 (15:32 +0200)
commitaa8c88cf4a61362ada473fc058fbfb50aa235d23
tree7899d5f9dfa80b3f6cb8a075f5810222a7158c02
parent9aec701a4cb999b3d1eb097d4b01df0480b4ebd0
find_path: consider walkable instead of CONTENT_AIR

The path finding code works fairly well except that it considers
anythin not CONTENT_AIR to be "above the surface". This results in
paths that are unwalkable for entities since e.g. plants are not
walkable. The path would force them to jump on top of grass plants,
etc..

The obvious solution is not to use CONTENT_AIR as a criteria, but
instead distinguish between walkable and non-walkable nodes. This
results in paths that properly walk through grass nodes.

This was extensively tested by a flock of electric sheep.

Note that for underwater purposes this changes the behaviour from
"the surface is walkable" to "ignore water entirely" making the
path go across the water bottom, and pathing fail likely from the
water surface. This is intentional.
src/pathfinder.cpp