From: terencehill Date: Sat, 1 Jul 2017 12:10:08 +0000 (+0200) Subject: Merge branch 'terencehill/eraseable_functions' X-Git-Tag: xonotic-v0.8.5~2668 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=0bd99205bd154e058edc6b82995d24e3375f5f97;hp=-c Merge branch 'terencehill/eraseable_functions' --- 0bd99205bd154e058edc6b82995d24e3375f5f97 diff --combined qcsrc/common/util.qh index a5ca2cf350,d8c0d67faa..da86bf22ea --- a/qcsrc/common/util.qh +++ b/qcsrc/common/util.qh @@@ -105,12 -105,6 +105,6 @@@ void get_mi_min_max_texcoords(float mod float almost_equals(float a, float b); float almost_in_bounds(float a, float b, float c); - vector rgb_to_hsl(vector rgb); - vector hsl_to_rgb(vector hsl); - vector rgb_to_hsv(vector rgb); - vector hsv_to_rgb(vector hsv); - string rgb_to_hexcolor(vector rgb); - float boxesoverlap(vector m1, vector m2, vector m3, vector m4); float boxinsidebox(vector smins, vector smaxs, vector bmins, vector bmaxs); @@@ -156,6 -150,16 +150,6 @@@ vector healtharmor_applydamage(float a string getcurrentmod(); -#ifdef GAMEQC -#ifdef CSQC -int ReadInt24_t(); -#else -void WriteInt24_t(float dest, float val); -void WriteInt48_t(float dest, vector val); -void WriteInt72_t(float dest, vector val); -#endif -#endif - float float2range11(float f); float float2range01(float f); diff --combined qcsrc/lib/counting.qh index c44951225b,11c06822ed..12ec4a9b61 --- a/qcsrc/lib/counting.qh +++ b/qcsrc/lib/counting.qh @@@ -61,6 -61,7 +61,7 @@@ _("CI_THI^%d seconds"), /* third */ \ _("CI_MUL^%d seconds")) /* multi */ + [[eraseable]] string count_ordinal(int interval) { // This function is designed primarily for the English language, it's impossible @@@ -86,6 -87,7 +87,7 @@@ return ""; } + [[eraseable]] string count_fill(float interval, string zeroth, string first, string second, string third, string multi) { // This function is designed primarily for the English language, it's impossible @@@ -116,6 -118,7 +118,7 @@@ return ""; } + [[eraseable]] string process_time(float outputtype, float seconds) { float tmp_hours = 0, tmp_minutes = 0, tmp_seconds = 0; @@@ -163,37 -166,42 +166,37 @@@ if (tmp_minutes) { - output = sprintf( - "%s%s", + output = strcat( count_minutes(tmp_minutes), - ((output != "") ? sprintf(", %s", output) : "")); + ((output != "") ? strcat(", ", output) : "")); } if (tmp_hours) { - output = sprintf( - "%s%s", + output = strcat( count_hours(tmp_hours), - ((output != "") ? sprintf(", %s", output) : "")); + ((output != "") ? strcat(", ", output) : "")); } if (tmp_days) { - output = sprintf( - "%s%s", + output = strcat( count_days(tmp_days), - ((output != "") ? sprintf(", %s", output) : "")); + ((output != "") ? strcat(", ", output) : "")); } if (tmp_weeks) { - output = sprintf( - "%s%s", + output = strcat( count_weeks(tmp_weeks), - ((output != "") ? sprintf(", %s", output) : "")); + ((output != "") ? strcat(", ", output) : "")); } if (tmp_years) { - output = sprintf( - "%s%s", + output = strcat( count_years(tmp_years), - ((output != "") ? sprintf(", %s", output) : "")); + ((output != "") ? strcat(", ", output) : "")); } return output; @@@ -209,8 -217,9 +212,8 @@@ if (tmp_days) { output = sprintf( - "%s%s", count_days(tmp_days), - ((output != "") ? sprintf(", %s", output) : "")); + ((output != "") ? strcat(", ", output) : "")); } return output; diff --combined qcsrc/lib/cvar.qh index 666e14ab93,d52f25cdd2..f322753c0a --- a/qcsrc/lib/cvar.qh +++ b/qcsrc/lib/cvar.qh @@@ -4,8 -4,10 +4,10 @@@ #include "progname.qh" #include "static.qh" + [[eraseable]] void RegisterCvars(void(string name, string def, string desc, bool archive, string file) f) {} + [[eraseable]] bool cvar_value_issafe(string s) { if (strstrofs(s, "\"", 0) >= 0) return false; @@@ -18,6 -20,7 +20,7 @@@ } /** escape the string to make it safe for consoles */ + [[eraseable]] string MakeConsoleSafe(string input) { input = strreplace("\n", "", input); @@@ -27,16 -30,19 +30,19 @@@ return input; } + [[eraseable]] void cvar_describe(string name, string desc) { localcmd(sprintf("\nset %1$s \"$%1$s\" \"%2$s\"\n", name, MakeConsoleSafe(desc))); } + [[eraseable]] void cvar_archive(string name) { localcmd(sprintf("\nseta %1$s \"$%1$s\"\n", name)); } + [[eraseable]] void RegisterCvars_Set(string name, string def, string desc, bool archive, string file) { cvar_describe(name, desc); @@@ -44,6 -50,7 +50,7 @@@ } int RegisterCvars_Save_fd; + [[eraseable]] void RegisterCvars_Save(string name, string def, string desc, bool archive, string file) { if (!archive) return; @@@ -73,12 -80,6 +80,12 @@@ const noref vector default_vector = '0 #define repr_cvar_string(x) (x) #define repr_cvar_vector(x) (sprintf("%v", x)) +//pseudo prototypes: +// void AUTOCVAR(, , default_cvar_value, string desc) +// void AUTOCVAR_SAVE(, , default_cvar_value, string desc) +// where default_cvar_value has type +// e.g.: AUTOCVAR(mycvar, float, 2.5, "cvar description") + #define __AUTOCVAR(file, archive, var, type, desc, default) \ [[accumulate]] void RegisterCvars(void(string, string, string, bool, string) f) \ { \ diff --combined qcsrc/lib/vector.qh index 6c32e4312d,5d2b795f45..746a43d089 --- a/qcsrc/lib/vector.qh +++ b/qcsrc/lib/vector.qh @@@ -25,6 -25,7 +25,7 @@@ noref vector _dotproduct_a, _dotproduct #if 1 #define cross(a, b) ((a) >< (b)) #else + [[eraseable]] vector cross(vector a, vector b) { return @@@ -45,6 -46,7 +46,7 @@@ const vector eX = '1 0 0' const vector eY = '0 1 0'; const vector eZ = '0 0 1'; + [[eraseable]] vector randompos(vector m1, vector m2) { vector v; @@@ -55,16 -57,19 +57,19 @@@ return v; } + [[eraseable]] float vlen_maxnorm2d(vector v) { return max(v.x, v.y, -v.x, -v.y); } + [[eraseable]] float vlen_minnorm2d(vector v) { return min(max(v.x, -v.x), max(v.y, -v.y)); } + [[eraseable]] float dist_point_line(vector p, vector l0, vector ldir) { ldir = normalize(ldir); @@@ -77,9 -82,11 +82,11 @@@ } /** requires that m2>m1 in all coordinates, and that m4>m3 */ + [[eraseable]] float boxesoverlap(vector m1, vector m2, vector m3, vector m4) { return m2_x >= m3_x && m1_x <= m4_x && m2_y >= m3_y && m1_y <= m4_y && m2_z >= m3_z && m1_z <= m4_z; } /** requires the same as boxesoverlap, but is a stronger condition */ + [[eraseable]] float boxinsidebox(vector smins, vector smaxs, vector bmins, vector bmaxs) { return smins.x >= bmins.x && smaxs.x <= bmaxs.x && smins.y >= bmins.y && smaxs.y <= bmaxs.y && smins.z >= bmins.z && smaxs.z <= bmaxs.z; } #define PITCH(v) ((v).x) @@@ -93,10 -100,6 +100,10 @@@ up = v_up; \ } MACRO_END +//pseudo prototypes: +// vector vec2(vector v); // returns a vector with just the x and y components of the given vector +// vector vec2(float x, float y); // returns a vector with the given x and y components + noref vector _vec2; #define vec2(...) EVAL(OVERLOAD(vec2, __VA_ARGS__)) #define vec2_1(v) (_vec2 = (v), _vec2.z = 0, _vec2) @@@ -105,10 -108,14 +112,11 @@@ noref vector _vec3; #define vec3(_x, _y, _z) (_vec3.x = (_x), _vec3.y = (_y), _vec3.z = (_z), _vec3) + [[eraseable]] vector Rotate(vector v, float a) { float a_sin = sin(a), a_cos = cos(a); - vector r = '0 0 0'; - r.x = v.x * a_cos + v.y * a_sin; - r.y = -1 * v.x * a_sin + v.y * a_cos; - return r; + return vec2(v.x * a_cos + v.y * a_sin, -v.x * a_sin + v.y * a_cos); } noref vector _yinvert; @@@ -119,6 -126,7 +127,7 @@@ * @param norm the normalized normal * @returns dir reflected by norm */ + [[eraseable]] vector reflect(vector dir, vector norm) { return dir - 2 * (dir * norm) * norm; @@@ -127,11 -135,13 +136,13 @@@ /** * clip vel along the plane defined by norm (assuming 0 distance away), bounciness determined by bounce 0..1 */ + [[eraseable]] vector vec_reflect(vector vel, vector norm, float bounce) { return vel - (1 + bounce) * (vel * norm) * norm; } + [[eraseable]] vector vec_epsilon(vector this, float eps) { if (this.x > -eps && this.x < eps) this.x = 0; @@@ -144,6 -154,7 +155,7 @@@ (out = vec_epsilon(vec_reflect(in, normal, (overbounce) - 1), 0.1)) #ifdef GAMEQC + [[eraseable]] vector get_corner_position(entity box, int corner) { switch (corner) @@@ -160,15 -171,16 +172,16 @@@ } } + [[eraseable]] vector NearestPointOnBox(entity box, vector org) { vector m1 = box.mins + box.origin; vector m2 = box.maxs + box.origin; - vector ret; - ret.x = bound(m1.x, org.x, m2.x); - ret.y = bound(m1.y, org.y, m2.y); - ret.z = bound(m1.z, org.z, m2.z); - return ret; + return vec3( + bound(m1.x, org.x, m2.x), + bound(m1.y, org.y, m2.y), + bound(m1.z, org.z, m2.z) + ); } #endif