X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fangle.qc;h=1757c55b812a184c7f00f0e26c82eeb8704c303a;hb=52cdd440f6cfdc9544099ac68455e5361ace00d2;hp=f921d74b01bdc43953101260514e9ffb5d0c3eca;hpb=724a41faf2cbfd86d41f3ab59ff8326a831a8326;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/angle.qc b/qcsrc/lib/angle.qc index f921d74b0..1757c55b8 100644 --- a/qcsrc/lib/angle.qc +++ b/qcsrc/lib/angle.qc @@ -1,9 +1,15 @@ .vector origin; + +// angles of the player's model (as opposed to their view which uses `.vector v_angle;`) in degrees +// x is pitch: positive means up (unlike .v_angle), usually is 0 +// y is yaw: between -180 and 180, increases when turning left +// z is roll: positive means tilted clockwise, usually is 0 .vector angles; /* * Return a angle within +/- 360. */ +ERASEABLE float anglemods(float v) { v = v - 360 * floor(v / 360); @@ -19,6 +25,7 @@ float anglemods(float v) /* * Return the short angle */ +ERASEABLE float shortangle_f(float ang1, float ang2) { if(ang1 > ang2) @@ -35,6 +42,7 @@ float shortangle_f(float ang1, float ang2) return ang1; } +ERASEABLE vector shortangle_v(vector ang1, vector ang2) { vector vtmp; @@ -46,6 +54,7 @@ vector shortangle_v(vector ang1, vector ang2) return vtmp; } +ERASEABLE vector shortangle_vxy(vector ang1, vector ang2) { vector vtmp = '0 0 0'; @@ -57,32 +66,17 @@ vector shortangle_vxy(vector ang1, vector ang2) } /* -* Return the angle between two enteties +* Return the angle offset between angle ang and angle of the vector from->to */ -vector angleofs(entity from, entity to) -{ - vector v_res; - - v_res = normalize(to.origin - from.origin); - v_res = vectoangles(v_res); - v_res = v_res - from.angles; - - if (v_res_x < 0) v_res_x += 360; - if (v_res_x > 180) v_res_x -= 360; - if (v_res_y < 0) v_res_y += 360; - if (v_res_y > 180) v_res_y -= 360; - - return v_res; -} - -vector angleofs3(vector from, vector from_a, entity to) +ERASEABLE +vector angleofs3(vector from, vector ang, vector to) { vector v_res; - v_res = normalize(to.origin - from); + v_res = normalize(to - from); v_res = vectoangles(v_res); - v_res = v_res - from_a; + v_res = v_res - ang; if (v_res_x < 0) v_res_x += 360; if (v_res_x > 180) v_res_x -= 360; @@ -92,3 +86,5 @@ vector angleofs3(vector from, vector from_a, entity to) return v_res; } + +#define angleofs(from, to) angleofs3(from.origin, from.angles, to.origin)