4 float vehicle_altitude(entity this, float amax)
6 tracebox(this.origin, this.mins, this.maxs, this.origin - ('0 0 1' * amax), MOVE_WORLDONLY, this);
7 return vlen(this.origin - trace_endpos);
10 vector vehicles_force_fromtag_hover(entity this, string tag_name, float spring_length, float max_power)
12 force_fromtag_origin = gettaginfo(this, gettagindex(this, tag_name));
13 v_forward = normalize(v_forward) * -1;
14 traceline(force_fromtag_origin, force_fromtag_origin - (v_forward * spring_length), MOVE_NORMAL, this);
16 force_fromtag_power = (1 - trace_fraction) * max_power;
17 force_fromtag_normpower = force_fromtag_power / max_power;
19 return v_forward * force_fromtag_power;
22 vector vehicles_force_fromtag_maglev(entity this, string tag_name, float spring_length, float max_power)
24 force_fromtag_origin = gettaginfo(this, gettagindex(this, tag_name));
25 v_forward = normalize(v_forward) * -1;
26 traceline(force_fromtag_origin, force_fromtag_origin - (v_forward * spring_length), MOVE_NORMAL, this);
28 // TODO - this may NOT be compatible with wall/celing movement, unhardcode 0.25 (engine count multiplier)
29 if(trace_fraction == 1.0)
31 force_fromtag_normpower = -0.25;
35 force_fromtag_power = ((1 - trace_fraction) - trace_fraction) * max_power;
36 force_fromtag_normpower = force_fromtag_power / max_power;
38 return v_forward * force_fromtag_power;