FTE's movement builtins: the engine's player movement (runstandardplayerphysics),
area portals (openportal) and the rigid-body physics calls.
runstandardplayerphysics(entity) moves entity with QuakeServer.Pmove by the
input_timelength, input_angles, input_movevalues and input_buttons globals,
in steps of at most 50 milliseconds. It reads the entity's origin, oldorigin,
velocity, mins, maxs, gravitydir, gravity, maxspeed, hasted, flags,
movetype, health, teleport_time and pmove_flags. After each step it writes
origin, oldorigin, velocity, v_angle, waterlevel, watertype,
teleport_time, pmove_flags (1 jump held, 2 on a ladder), flags (FL_ONGROUND
- and, on ground,
groundentity; links the entity, touching its triggers; and runs the touch of each entity the step ran into, each at most once per call.
The player meets the world and the entities within 256 units whose solid is a box
(2), slide box (3), brush (4), ladder (20) or a trigger (1) with a negative skin,
other than its own missiles, those dimension_hit and dimension_solid keep apart
(255 when the program lacks the fields) and those with no width. A negative skin
gives contents to the whole entity: -2, -8 and -18 block the player, the others only
fill. The movement settings are the cvars sv_gravity, sv_stopspeed,
sv_maxspeed, sv_spectatormaxspeed, sv_accelerate, sv_wateraccelerate,
sv_friction, sv_waterfriction, sv_bigcoords, pm_noround, pm_bunnyspeedcap,
pm_ktjump, pm_walljump, pm_slidefix, pm_airstep, pm_pground,
pm_stepdown, pm_slidyslopes, pm_autobunny and pm_bunnyfriction, and
pm_flyfriction (4), pm_watersinkspeed (60), pm_edgefriction (2, testing ledges
with the player's box while empty) and pm_stepheight (18), which take the value in
brackets while empty. sv_brokenmovetypes and sv_nqplayerphysics choose the
movement type as FTE does; entities 1 up to sv_playerslots are players.
Portal states are kept in the host's ext.portals, entity number to state; a map
without areas is not divided by them. There is no rigid-body engine:
physics_supported answers false and physics_enable, physics_addforce and
physics_addtorque change nothing.
Summary
Functions
Run movement builtin builtin (a number or a name).
Functions
@spec call(map(), integer() | String.t(), non_neg_integer()) :: map()
Run movement builtin builtin (a number or a name).