you [Sun, 27 Aug 2017 16:38:50 +0000 (18:38 +0200)]
core.get_objects_inside_radius: Omit removed objects (#6318)
Fixes #6294
Dharkael [Sun, 27 Aug 2017 13:12:52 +0000 (15:12 +0200)]
More readable default controls in README
Nathanaël Courant [Sat, 26 Aug 2017 07:43:08 +0000 (09:43 +0200)]
Add '@n' escape sequences and some documentation on translated strings.
Ben Deutsch [Sat, 26 Aug 2017 07:01:09 +0000 (09:01 +0200)]
Alternative code for slipping (#6256)
* Alternative code for slipping
- does not depend on frame rate
- controllable via environment variables for now
* Adjust slipping speed for item entities too.
* Final version of framerate-independent slippery code
* Remove dead code and fix formatting
* getStandingNodePos should only look 0.05 nodes downwards
This ensures that, even if the player is standing on a partially
filled node, this node is used as the standing node and not the
node below it.
Specific use: enables slippery slabs
* Exchange global getStandingPosNode change for local inline change
Reverts previous commit
* Revert the item movement changes
* Slippery nodes now slip over cliffs and edges
Players no longer suddenly stop before falling off.
Also refactored slippery code into getSlipFactor method.
* Slipping over an edge gated by player's is_slipping state
A new flag for just this case, to reduce costly node lookups in
the normal case of leaning over a non-slippery edge.
Public access for consistency and potential future uses.
* Minor code tweaks / cosmetics
* Add temp variable to improve readability and fix indentation issues
Paramat [Sat, 26 Aug 2017 06:45:09 +0000 (07:45 +0100)]
Android stepheight: Only increase if 'touching ground' (#6313)
Paramat [Sat, 26 Aug 2017 06:43:50 +0000 (07:43 +0100)]
Mgfractal: Use 'switch case' instead of 'if else' (#6314)
rubenwardy [Sat, 26 Aug 2017 06:17:05 +0000 (07:17 +0100)]
Add on_grant and on_revoke callbacks (#4713)
* Add register_on_priv_grant/revoke, and on_grant/revoke to privs. Call from /grant and /revoke
* Call on_grant and on_revoke callbacks from set_privs
rubenwardy [Sat, 26 Aug 2017 06:11:59 +0000 (07:11 +0100)]
Check item_drop amount clientside (#6242)
Loïc Blot [Fri, 25 Aug 2017 13:53:56 +0000 (15:53 +0200)]
Network cleanup (#6310)
* Move Connection threads to dedicated files + various cleanups
* ConnectionReceiveThread::processPacket now uses function pointer table to route MT packet types
* Various code style fixes
* Code style with clang-format
* Various SharedBuffer copy removal
* SharedBuffer cannot be copied anymore using Buffer
* Fix many SharedBuffer copy (thanks to delete operator)
Dániel Juhász [Fri, 25 Aug 2017 11:20:53 +0000 (11:20 +0000)]
Overlays for wield and inventory images (#6107)
* Overlays for wield and inventory images
Ekdohibs [Fri, 25 Aug 2017 11:06:59 +0000 (13:06 +0200)]
Translations: prevent remote crash with invalid translations
SmallJoker [Thu, 24 Aug 2017 21:06:36 +0000 (23:06 +0200)]
Builtin item: Tidy up (#4370)
New code structure
Use setting movement_gravity
Reset age on merge
Set merge radius to 1.0m
Ekdohibs [Thu, 24 Aug 2017 16:55:31 +0000 (18:55 +0200)]
Add translation of LANG_CODE in all languages
Ekdohibs [Thu, 24 Aug 2017 16:44:38 +0000 (18:44 +0200)]
Fix updatepo.sh and run it.
It was broken due to the presence of "µ" utf-8 characters in builtin/profiler/reporter.lua.
Ekdohibs [Tue, 31 Jan 2017 17:05:03 +0000 (18:05 +0100)]
Add clientside translations.
Loïc Blot [Thu, 24 Aug 2017 15:16:55 +0000 (17:16 +0200)]
Verify compiler version before building anything (#6293)
GCC 4.9 and Clang 3.4 are the minimum
adrido [Thu, 24 Aug 2017 15:13:53 +0000 (17:13 +0200)]
Dont define min/max macros in minwindef.h (#6308)
Pavel Puchkin [Thu, 24 Aug 2017 08:02:23 +0000 (10:02 +0200)]
Fix OSX builds caused by __WORDSIZE again (#6307)
stujones11 [Thu, 24 Aug 2017 08:01:16 +0000 (09:01 +0100)]
Make entity selection and collision boxes independently settable (#6218)
* Make entity selection and collision boxes independently settable
Dániel Juhász [Thu, 24 Aug 2017 06:31:33 +0000 (06:31 +0000)]
Fix Android node selection distance (#6187)
Ben Deutsch [Thu, 24 Aug 2017 06:30:46 +0000 (08:30 +0200)]
Safe digging and placing (#6127)
* Setting: Safe digging and placing
* New setting 'safe_dig_and_place' under Controls
* If set, digging and placing will not auto-repeat
* Releasing buttons unblocks the respective action again
* Useful for inexperienced users in creative mode where default
repeat times may be too short
* Safe placing (right click repetition) does not need a guarding flag
* Added new setting to minetest.conf.example
Loïc Blot [Thu, 24 Aug 2017 06:28:54 +0000 (08:28 +0200)]
Network cleanup (#6302)
* Cleanup network headers
* Move peerhandler to a specific header to reduce compilation times
* Move socket.cpp/h to network folder
* More work
* Network code cleanups
* Move socket.{cpp,h} to network folder
* Move Address object to network/address.{cpp,h}
* Move network exceptions to network/networkexceptions.h
* Client: use unique_ptr for Connection
* Server/ClientIface: use shared_ptr for Connection
* Format fixes
* Remove socket.cpp socket.h from clang-format whitelist
* Also fix NetworkPacket code style & make it under clang-format
Pavel Puchkin [Thu, 24 Aug 2017 05:58:12 +0000 (07:58 +0200)]
Fix OSX builds (closes #6289, fixes #6270) (#6306)
Of course, this is not ideal solution, but we want our users to be happy in the
first place, right?
SmallJoker [Wed, 23 Aug 2017 20:32:10 +0000 (22:32 +0200)]
Respect object property hp_max field for players (#6287)
* Respect object property hp_max field for players
This allows modders to configure the maximal HP per player
* Statbars: Downscale bar to full 20 HP when exceeding this value
Add default max HP for players and breath constants to builtin
Document the constants
* Rename PLAYER_MAX_HP -> PLAYER_MAX_HP_DEFAULT
stujones11 [Wed, 23 Aug 2017 12:18:44 +0000 (13:18 +0100)]
Do not add base position to player selection box (#6241)
Loïc Blot [Mon, 21 Aug 2017 14:07:39 +0000 (16:07 +0200)]
serialize: use a temporary for SerializeException
Exception must always use temporary instead of global copied exception instances, it's not recommended and should have undefined issues
paramat [Sun, 20 Aug 2017 22:07:07 +0000 (23:07 +0100)]
Mgv6: Remove incorrectly defined and unused 'volume nodes'
paramat [Fri, 18 Aug 2017 15:43:31 +0000 (16:43 +0100)]
Minimap: Add new HUD flag for minimap radar mode
Flag default is true to not change default behaviour.
The existing minimap HUD flag remains the master control for minimap.
Loic Blot [Sun, 20 Aug 2017 18:24:26 +0000 (20:24 +0200)]
Loic Blot [Sun, 20 Aug 2017 17:36:56 +0000 (19:36 +0200)]
Add missing ENABLE_SYSTEM_JSONCPP in docs
Jens Rottmann [Sun, 20 Aug 2017 17:37:55 +0000 (19:37 +0200)]
Change BS constant from implicit double to float (#6286)
the BS constant
implicitly promotes all position calculations it is used in to double even
though positions (= v3f) are only meant to be floats.
There are many, many similar occurrences everywhere, but I'm not willing to
hunt down all; I only fixed the little part I'm already familiar with.
Loïc Blot [Sun, 20 Aug 2017 17:37:29 +0000 (19:37 +0200)]
Modernize code: very last fixes (#6290)
Last modernization fixes
Juozas [Sun, 20 Aug 2017 15:27:26 +0000 (18:27 +0300)]
Travis-ci build: fix osx jpeg installation failure, git ambiguous argument error (caused by merging commits) and add a workaround for travis commit range bug (#6227)
* common.sh: fix travis-ci build bugs
install_macosx_deps: check if jpeg is installed, if not - upgrade it.
needs_compile: Check if $TRAVIS_COMMIT_RANGE is valid, if not, rewrite
the range with the correct one, and fix git ambiguous argument error.
* Changed detection method and removed commments
Loïc Blot [Sun, 20 Aug 2017 15:20:11 +0000 (17:20 +0200)]
New version scheme (#6292)
* Version changes: current dev version is now 0.5.0
* This change permit to have multi branches with various versions
* Dev version is 0.5.0-dev and next release will be 0.5.0
Loïc Blot [Sun, 20 Aug 2017 11:30:50 +0000 (13:30 +0200)]
Modernize source code: last part (#6285)
* Modernize source code: last par
* Use empty when needed
* Use emplace_back instead of push_back when needed
* For range-based loops
* Initializers fixes
* constructors, destructors default
* c++ C stl includes
Loïc Blot [Sat, 19 Aug 2017 20:24:30 +0000 (22:24 +0200)]
Fix shader.h inclusion place in game.cpp
Loïc Blot [Sat, 19 Aug 2017 20:23:47 +0000 (22:23 +0200)]
Code modernization: subfolders (#6283)
* Code modernization: subfolders
Modernize various code on subfolders client, network, script, threading, unittests, util
* empty function
* default constructor/destructor
* for range-based loops
* use emplace_back instead of push_back
* C++ STL header style
* Make connection.cpp readable in a pointed place + typo
Loïc Blot [Sat, 19 Aug 2017 12:25:35 +0000 (14:25 +0200)]
Code modernization: src/p*, src/q*, src/r*, src/s* (partial) (#6282)
* Code modernization: src/p*, src/q*, src/r*, src/s* (partial)
* empty function
* default constructor/destructor
* for range-based loops
* use emplace_back instead of push_back
* C++ STL header style
* Spelling: vertice -> vertex
Loïc Blot [Sat, 19 Aug 2017 09:30:46 +0000 (11:30 +0200)]
Code modernization: src/n*, src/o* (#6280)
* Code modernization: src/n*, src/o*
* empty function
* default constructor/destructor
* for range-based loops
* use emplace_back instead of push_back
* remove unused IWritableNodeDefManager::clone()
* C++ STL header style
* Pointer constness in some functions
SmallJoker [Sat, 19 Aug 2017 09:30:09 +0000 (11:30 +0200)]
GenericCAO: Fix light position for non-players, remove deprecated initialisation code (#6281)
Loïc Blot [Sat, 19 Aug 2017 09:29:46 +0000 (11:29 +0200)]
ServerMap saving: cleanups (#6274)
* remove sector meta loading/saving from files which targets dead code (differs_from_disk is always empty)
* this remove empty ServerMapSector and ClientMapSector, remove MapSector childs
Loïc Blot [Sat, 19 Aug 2017 07:30:43 +0000 (09:30 +0200)]
ItemCAO removal (#6279)
This object is from 0.3 era and was never used since 0.4.X and GenericCAO usage
Loic Blot [Sat, 19 Aug 2017 07:29:55 +0000 (09:29 +0200)]
Code modernization: src/m* (part 3)
* empty function
* default constructor/destructor
* for range-based loops
* use emplace_back instead of push_back
* remove some unused headers in some cpp variable
Loic Blot [Sat, 19 Aug 2017 07:12:54 +0000 (09:12 +0200)]
Code modernization: src/m* (part 2)
* empty function
* default constructor/destructor
* remove unused Map::emergeSector(a,b)
* for range-based loops
* migrate a dirs[7] table to direction tables
* remove various old unused function
Paramat [Sat, 19 Aug 2017 06:06:22 +0000 (07:06 +0100)]
Banmanager: Move 'creating' message from warningstream to infostream (#6277)
lisacvuk [Fri, 18 Aug 2017 17:39:44 +0000 (19:39 +0200)]
Make world creation menu automatically generate a random world name (#6257)
* Make world creation menu automatically generate a name.
* Name is now initialy empty, and generated if player tries to create a world without a name.
Loïc Blot [Fri, 18 Aug 2017 17:25:07 +0000 (19:25 +0200)]
Optimize headers (part 2) (#6272)
* Optimize headers (part 2)
* less debug.h in headers
* less remoteplayer.h for everybody
* Cleanup (part 2)
* camera.h: mesh.h
* mapgen.h: mapnode.h
* serverenvironment.h: mapblock.h
* nodedef.h: shader.h
Loïc Blot [Fri, 18 Aug 2017 16:18:25 +0000 (18:18 +0200)]
Modernize various files (src/m*) (#6267)
* Modernize various files (src/m*)
* range-based for loops
* code style
* C++ headers instead of C headers
* Default operators
* empty function
Thanks to clang-tidy
Loïc Blot [Fri, 18 Aug 2017 10:17:30 +0000 (12:17 +0200)]
server.cpp: unroll setting when sending mapblocks (#6265)
* server.cpp: unroll setting when sending mapblocks
* Improve a little bit performance when sending mapblocks massively
* Use a range based for
* Code style fixes
adrido [Fri, 18 Aug 2017 10:17:19 +0000 (12:17 +0200)]
Add missing ctime include (#6269)
rubenwardy [Fri, 18 Aug 2017 08:47:40 +0000 (09:47 +0100)]
Change README to Markdown format, add LICENSE.txt (#6244)
Loic Blot [Fri, 18 Aug 2017 06:21:01 +0000 (08:21 +0200)]
Modernize various files (src/k*, src/l*)
* range-based for loops
* code style
* C++ headers instead of C headers
* Default operators
Loic Blot [Fri, 18 Aug 2017 06:07:59 +0000 (08:07 +0200)]
Modernize various files (part 2)
* range-based for loops
* emplace_back instead of push_back
* code style
* C++ headers instead of C headers
* Default operators
* empty stl function
Loic Blot [Fri, 18 Aug 2017 05:44:42 +0000 (07:44 +0200)]
Modernize various files
* range-based for loops
* emplace_back instead of push_back
* code style
* C++ headers instead of C headers
* Default operators
* empty stl function
Loïc Blot [Thu, 17 Aug 2017 21:02:50 +0000 (23:02 +0200)]
Modernize src/c* src/d* and src/e* files (#6263)
* Modernize src/c* src/d* and src/e* files
* default operator
* redundant init
* delete default constructors on CraftDefinition childs (never used)
* fix some missing init values
* const ref fix reported by clang-tidy
* ranged-based for loops
* simple conditions & returns
* empty stl function instead of size
* emplace_back stl function instead of push_back + construct temp obj
* auto for some iterators
* code style fixes
* c++ stl headers instead of C stl headers (stdio.h -> cstdio)
Loïc Blot [Thu, 17 Aug 2017 20:19:39 +0000 (22:19 +0200)]
C++ modernize: Pragma once (#6264)
* Migrate cpp headers to pragma once
Loïc Blot [Thu, 17 Aug 2017 18:23:54 +0000 (20:23 +0200)]
clientobject, clouds, collision, clientsimpleobject: code modernization (#6260)
* clientobject, clouds, collision, clientsimpleobject: code modernization
* use range-based for loops
* simplify some tests
* various code style fixes
* use emplace_back instead of push_back when necessary
* use auto on some iterators
* use default operator when needed
* unroll v3s16 creation on collisionMoveSimple
Loïc Blot [Thu, 17 Aug 2017 17:16:02 +0000 (19:16 +0200)]
Reduce dedicated server step to 0.09 (#6252)
Minetest performance improvement has been huge since months, server step reduction will permit to handle client events a little bit faster without too many penalty costs due to core engine
Loic Blot [Thu, 17 Aug 2017 17:15:12 +0000 (19:15 +0200)]
Loic Blot [Thu, 17 Aug 2017 06:26:52 +0000 (08:26 +0200)]
clientmap, clientmedia: code modernization
* use range-based for loops
* simplify some tests
* various code style fixes
* remove debugprint in ClientMap::getBackgroundBrightness, debug code was not intended to be there
* remove unused fields in MapDrawControl
* use emplace_back instead of push_back when necessary
Loic Blot [Thu, 17 Aug 2017 06:11:39 +0000 (08:11 +0200)]
l_server, clientenvironment, clientiface: code modernization
* use range-based for loops
* use refs on some exceptions & one setter
Vitaliy [Wed, 16 Aug 2017 22:23:20 +0000 (01:23 +0300)]
New lighting curve (#5279)
* New lighting curve
* Make polynomial lighting curve
* Update default lighting settings
Loïc Blot [Wed, 16 Aug 2017 21:48:29 +0000 (23:48 +0200)]
ClientInterface: add a function to verify (correctly) if user limit was reached (#6258)
* ClientInterface: add a function to verify (correctly) if user limit was reached
CS_HelloSent is a better indicator of active slots than CS_Created, which are session objects created after init packet reception
Switch existing checks to ClientInterface::isUserLimitReached()
Use range-based for loop for getClientIds() used function too
This will fix #6254 (not the memory overhead if init is flooded)
Loïc Blot [Wed, 16 Aug 2017 20:11:45 +0000 (22:11 +0200)]
Cleanup various headers to reduce compilation times (#6255)
* Cleanup various headers to reduce compilation times
Loic Blot [Wed, 16 Aug 2017 06:53:52 +0000 (08:53 +0200)]
client.cpp: modernize code
* Range based for loops
* Empty operator on stl containers
Loic Blot [Wed, 16 Aug 2017 06:26:04 +0000 (08:26 +0200)]
cavegen.cpp, chat.cpp: modernize code
Loïc Blot [Tue, 15 Aug 2017 18:30:30 +0000 (20:30 +0200)]
Modernize client code (#6250)
* Various code style fixes
* Use range based for loops
* Use empty instead of empty objects
* Use C++11 default keyword for trivial constructors and destructors
* Drop some useless casts
* Use emplace_back instead of push_back to improve performance of some vectors push
Loic Blot [Tue, 15 Aug 2017 07:39:58 +0000 (09:39 +0200)]
bab.cpp: code modernization
* Use for range based loops
* Simplify some tests
* Code style fixes
Loic Blot [Tue, 15 Aug 2017 07:30:31 +0000 (09:30 +0200)]
server.cpp: code modernization
* Use more for range based loops
* Simplify some tests
* Code style fixes
* connection.h: better PeerChange constructor instead of creating uninitalized object and then affect variables
Loic Blot [Tue, 15 Aug 2017 07:15:04 +0000 (09:15 +0200)]
Lint fix on localplayer.h
paramat [Sun, 13 Aug 2017 18:01:04 +0000 (19:01 +0100)]
Advanced settings: Re-organise mapgen settings for ease of use
Add a comment about the auto-generated minetest.conf.example possibly
appearing in the bin folder.
Dániel Juhász [Sat, 24 Jun 2017 16:58:01 +0000 (18:58 +0200)]
Make dropped items colorable
Hybrid Dog [Mon, 5 Jun 2017 16:52:34 +0000 (18:52 +0200)]
L-system: Fix leaves cutting through stems
Loic Blot [Mon, 14 Aug 2017 08:56:06 +0000 (10:56 +0200)]
Player::getSpeed/setSpeed use const refs
Loic Blot [Mon, 14 Aug 2017 08:52:59 +0000 (10:52 +0200)]
Player class: disable copy
Loic Blot [Sun, 13 Aug 2017 23:06:12 +0000 (01:06 +0200)]
Various server.cpp cleanups
* Modernize many for loops
* Use constness on many loops
* use empty function on many strings tests
* various code style fixes
Loic Blot [Sun, 13 Aug 2017 22:44:45 +0000 (00:44 +0200)]
Server::AsyncRunStep + Server::sendAddNode: modernize code
* Use various modern for loops
* Make some loop iterator constants, whereas there weren't
* Use empty on some size() > 0 tests
* Various little codestyle fixes
* Fix an hidden scope variable in Server::SendBlockNoLock
Loic Blot [Sun, 13 Aug 2017 21:08:17 +0000 (23:08 +0200)]
LocalPlayer::accelerateHorizontal: cleanups
* Properly use v3f default constructor
* v3f d_wanted = target_speed - m_speed; and d_wanted = target_speed * 0.1f - m_speed * 0.1f; can be factorized to d_wanted = (target_speed - m_speed) * 0.1f; => d_wanted *= 0.1f;
Loic Blot [Sun, 13 Aug 2017 21:02:32 +0000 (23:02 +0200)]
Cleanup LocalPlayer::applyControl
* Use Environment interface instead of ClientEnvironemnt
* Don't create slippery variable and then re-affect it
* itemgroup_get return a int, properly test != 0 to be clearer
Wuzzy [Fri, 11 Aug 2017 19:16:09 +0000 (21:16 +0200)]
Add slippery group for nodes (players/items slide)
SmallJoker [Thu, 10 Aug 2017 07:41:56 +0000 (09:41 +0200)]
Trigger on_rightclick regardless on the formspec meta field
Document behaviour for older clients.
Wuzzy [Sat, 5 Nov 2016 17:58:00 +0000 (18:58 +0100)]
Add short description for disabled texture packs
TeTpaAka [Sat, 29 Jul 2017 17:24:10 +0000 (19:24 +0200)]
Change “Use” key name to “Special”
Fixer [Wed, 9 Aug 2017 10:50:16 +0000 (13:50 +0300)]
Full viewing range key message clarified
To make it sound less confusing to players
Ben Deutsch [Fri, 4 Aug 2017 03:58:10 +0000 (05:58 +0200)]
Remove cloud_height setting
With the cloud API, the cloud_height setting has become obsolete
and replaceable by a mod. It, and supporting code, can be
removed.
Hybrid Dog [Sat, 12 Aug 2017 10:11:28 +0000 (12:11 +0200)]
Abort if static_spawnpoint is an invalid setting instead of just giving an error log
paramat [Wed, 9 Aug 2017 13:23:30 +0000 (14:23 +0100)]
Mgv5: Make spawn position search more reliable
Loic Blot [Fri, 11 Aug 2017 07:57:27 +0000 (09:57 +0200)]
ServerEnvironment::step: modernize loops
Use various ranged-based for loops in ServerEnvironment::step
Also set ServerObject::getBasePosition const to be compliant
ServerEnvironment::deleteParticleSpawner: use a const iterator
paramat [Mon, 7 Aug 2017 05:35:34 +0000 (06:35 +0100)]
Mgv7: Raise spawn point by 1 node for no mountain case
paramat [Sun, 6 Aug 2017 02:57:34 +0000 (03:57 +0100)]
Step height: Add as a player object property
Add settable player step height using the existing object property.
Breaks compatibility with old clients, add to protocol version 35.
Jens Rottmann [Sat, 5 Aug 2017 15:34:41 +0000 (17:34 +0200)]
Minimap: Leaner minimap arrow makes it easier to see the direction
The arrow symbolizing the player in the square minimap looks almost like a
triangle, making it a bit hard to see which direction it is currently
pointing in when in a hurry.
Redraw it leaner, pointier. Colors unchanged.
Wuzzy [Tue, 25 Jul 2017 16:56:45 +0000 (18:56 +0200)]
Key change menu: Expose more keys
Juozas [Wed, 9 Aug 2017 01:04:06 +0000 (04:04 +0300)]
Fix error not printed to console when no name is provided
When minetest is launched, if there was no nameprovided in
configuration or parameters, the game would not show any error in
console. if the --go parameter was also prowided, the game would
exit without an error. This is undesired behavior, so this merged
commit add the missing function that displays the missing error
message in console.
Zeno- [Tue, 8 Aug 2017 14:11:41 +0000 (00:11 +1000)]
Update credits (#6228)
SmallJoker [Mon, 7 Aug 2017 12:53:58 +0000 (14:53 +0200)]
Singleplayer: Pause game in the key change dialog
Fixes #6201. @t0ny2 pointed to the right place. Thanks!
JRottm [Sat, 5 Aug 2017 19:08:21 +0000 (21:08 +0200)]
Start off newly generated worlds early at sunrise, 5:15am (#6211)
Gives starting singleplayer games this subtle "dawn of a new world" feel.
I would have set it even earlier (up to 4:45am), but I was worried that in
some pre-existing games the player could be overwhelmed by hostile
mobs right at the start, seriously changing gameplay.
It's just the default, individual games should be able to override it, and
for public servers it's irrelevant anyway, because only the first player to
set foot in the world will notice, and that's usually the server admin.
Jens Rottmann [Fri, 4 Aug 2017 23:42:39 +0000 (01:42 +0200)]
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.
Jens Rottmann [Fri, 4 Aug 2017 19:48:32 +0000 (21:48 +0200)]
Fix player coordinate rounding in collisionMoveSimple() (#6197)
To determine the area (nodes) where a player movement took place
collisionMoveSimple() first took the old/new player coordinates and rounded
them to integers, then added the player character's collision box and
implicitely rounded the result. This has 2 problems:
Rounding the position and the box seperately, then adding the resulting
integers means you get twice the rounding error. And implicit rounding
always rounds towards 0.0, unlike floatToInt(), which rounds towards the
closest integer.
Previous (simplified) behavior: round(pos)+(int)box, for example player at
Y=0.9, body is 1.75m high: round(0.9)+(int)1.75 = 1+1 = 2.
==> A character's height of 1.75m always got rounded down to 1m, its width
of +/-0.3 even became 0.
Fixed by adding the floats first, then rounding properly: round(pos+box) =
round(0.9+1.75) = round(2.65) = 3.
Thomas--S [Thu, 13 Apr 2017 13:45:12 +0000 (15:45 +0200)]
Sort box corners correctly
Wuzzy [Tue, 1 Aug 2017 02:05:06 +0000 (04:05 +0200)]
Update minetest.conf.example for keymap_slot*