(built on top of D13 and some other changes, see https://github.com/wraitii/0ad/tree/D1490_unit_pushing)
This implements (somewhat naively) unit pushing each other when moving, instead of relying entirely on the short-range pathfinder for avoidance.
The short-range pathfinder isn't removed, as it can still be useful inside UnitMotion.
- Movement looks more natural in crowds.
- Less short path requests probably makes this overall faster, though I haven't profiled a lot of cases.
- Formation units can no longer phase through each other.
- Units are way more huddled together (test out Combat Demo Huge), though that's dependent on pushing settings.
- Might lead to some bouncing at the moment, needs to be sorted out.
The current implementation is not threaded, and not perfect, as I compare units in their own subdivision and not next to them. This is incorrect, but looks good enough and is faster since my implementation is currently O(N^2) on N=number of units to compare to.
The pushing function itself can be improved.