When a thrown item settles into a node space and
becomes a visinv node, reuse the existing entity instead
of deleting the old one and creating a new one, if
possible.
- On door convey
- On item ent settling
Only able to support limited cases, and still can't
usefully animate nodes, but at least this makes
some item placement behavior look smoother.
This created a ton of dependency inversions, which
necessitated moving a number of API functions up into
higher layers, and restructuring dependency lists for
a number of mods.
BOLO: non-deterministic load errors due to missed
dependencies.
- Thrown objects inherit initial velocity.
- Player and objects have matched terminal
velocity and can free-fall in tandem.
- Thrown objects experience horizontal air
friction too.
Instead of shuffling all the shells once for each tick used,
shuffle only those shells actually used once per tick. This
should save us more time in common cases where we need
to only check a few shells to find a place to settle.
- Always prefer closest place first, then lowest height.
- Simplify search order; use a pre-built order instead of scan.
- Randomize search order only once per tick, if used.
The old method was designed for 0.4 compatibility. Since 5.0
there appears to be a flag we can just check to see if the item
is still moving according to physics or settled.