FTE's turning push: a pusher moved by move and turned by turn takes along what
stands on it and what its new place overlaps. Each one is moved by move, turned by
turn and swung round the pusher's origin by it, then its spot is tested. One that
will not fit is put back if that is free, else pushed by move through the world,
else nudged an eighth of a unit each way. A box with no width, anything in a liquid
pusher's way, or one not solid or a box trigger (flattened) never blocks; anything else
blocks: everything goes back, the pusher's blocked runs. Once all have moved, each
touches the triggers it is in.
A turn in yaw alone also turns a client's view: its v_angle yaw moves with the
pusher and its fixangle becomes 2, the turn to add to the view.
{:ok, server} = QuakeServer.Physics.PushTurn.run(server, train, {4.0, 0.0, 0.0}, {0.0, 2.0, 0.0})
Summary
Functions
Push pusher by move and turn it by turn. Returns {:ok, server}, or {:blocked, server} with everything put back.
Functions
@spec run( QuakeServer.Server.t(), non_neg_integer(), Cauldron3D.Vec.t(), Cauldron3D.Vec.t() ) :: {:ok | :blocked, QuakeServer.Server.t()}
Push pusher by move and turn it by turn. Returns {:ok, server}, or {:blocked, server} with everything put back.