Add tiny Y offset in collisionMoveSimple() to tweak performance
authorJens Rottmann <30634967+JRottm@users.noreply.github.com>
Fri, 4 Aug 2017 23:42:39 +0000 (01:42 +0200)
committerSmallJoker <mk939@ymail.com>
Sun, 3 Jun 2018 15:31:59 +0000 (17:31 +0200)
commitb3ffe675c33104936dc3914d482942d5685f645e
tree9b34e93624e2e330821ad45db140689509b36802
parent90a9e4e69fac32f368b275428fa42407ea9b7883
Add tiny Y offset in collisionMoveSimple() to tweak performance

Another small general problem: the player is always standing exactly on the
bondary between 2 nodes e.g. Y=1.5 is exactly between nodes Y=1 and Y=2.
floatToInt() and myround() will round +/-n.5 always 'outwards' to +/-(n+1),
which means they behave differently depending on where you are: they round
upwards above sea level and downwards when underground. This inconsistency
comes from the way the coordinates are calculated, independent of the
specific C++ code.

The result is a tiny bit of lost performance when moving underground,
because 1 node level more than necessary is checked for collisions. This can
be amended by adding a tiny offset to minpos_f.Y, like @paramat suggested.
This is not an elegant solution, but still better than wasting CPU.
src/collision.cpp