* Fix incorrect shootline after releasing pointer if touch_use_crosshair=false
This happened because Android reuses pointer IDs.
Also includes a refactor to merge "m_known_ids" and "m_pointer_pos".
* Restore pre-5.9.0-dev behavior of shootline when !m_has_move_id
* Detect air-only blocks instead day/night differences
* Write !is_air into the former day-night-diff bit on disk, so that old server can still read maps written by new servers
* Only set is_air bit when reading from disk
* Make falling liquid source nodes replace flowing nodes
This makes falling liquid source nodes in group:float replace
flowing nodes on the ground instead of being placed above
the flowing node.
* Make flowing liquids "fall through" for source nodes
This makes liquids in float and falling_node groups fall through
flowing liquid nodes instead of being supported by them in the air.
---------
Co-authored-by: SmallJoker <SmallJoker@users.noreply.github.com>
Co-authored-by: Lars Mueller <appgurulars@gmx.de>
This may improve performance substantially if there are many meshes with "few" vertices that would otherwise be retransmitted to the GPU every frame. In testing, this does not seem to decrease performance, even if as few as 4 vertices are used (e.g. particles).
The recently added ioctl use is reported as a false-positive by valgrind.
I tried moving it to different compilers/versions two times and only
hit further issues that were valgrind's fault.
Also includes a tiny fix.
Increases the tolerance from one node to five nodes.
Also optimizes the "sphere" used for pre-filtering entities
to start in the middle of the line segment rather than at the start.
Upon disconnect, RemotePlayer still had a peer ID assigned even though
the PlayerSAO object was maked as gone (for removal). This commit makes
that the following always holds true:
(!sao || sao->isGone()) === (peer_id == PEER_ID_INEXISTENT)