X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Futil.qc;h=0344d149230461e0ca97b3db210de93bf7441e3a;hb=cf1edea8694548556934b5b05f526bc192f576cb;hp=477df7b6808a4ef80eefa7bf08544ac71290a539;hpb=919c48e2ad5873bf1efb041be2e23e2e60903baf;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/turrets/util.qc b/qcsrc/common/turrets/util.qc index 477df7b68..0344d1492 100644 --- a/qcsrc/common/turrets/util.qc +++ b/qcsrc/common/turrets/util.qc @@ -1,120 +1,9 @@ -/* -* Return a angle within +/- 360. -*/ -float anglemods(float v) -{ - v = v - 360 * floor(v / 360); - - if(v >= 180) - return v - 360; - else if(v <= -180) - return v + 360; - else - return v; -} - -/* -* Return the short angle -*/ -float shortangle_f(float ang1, float ang2) -{ - if(ang1 > ang2) - { - if(ang1 > 180) - return ang1 - 360; - } - else - { - if(ang1 < -180) - return ang1 + 360; - } - - return ang1; -} - -vector shortangle_v(vector ang1, vector ang2) -{ - vector vtmp; - - vtmp_x = shortangle_f(ang1_x,ang2_x); - vtmp_y = shortangle_f(ang1_y,ang2_y); - vtmp_z = shortangle_f(ang1_z,ang2_z); - - return vtmp; -} - -vector shortangle_vxy(vector ang1, vector ang2) -{ - vector vtmp = '0 0 0'; - - vtmp_x = shortangle_f(ang1_x,ang2_x); - vtmp_y = shortangle_f(ang1_y,ang2_y); - - return vtmp; -} - - -/* -* Get "real" origin, in worldspace, even if ent is attached to something else. -*/ -vector real_origin(entity ent) -{ - entity e; - vector v = ((ent.absmin + ent.absmax) * 0.5); - - e = ent.tag_entity; - while(e) - { - v = v + ((e.absmin + e.absmax) * 0.5); - e = e.tag_entity; - } - - return v; -} - -/* -* Return the angle between two enteties -*/ -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) -{ - vector v_res; - - v_res = normalize(to.origin - from); - v_res = vectoangles(v_res); - v_res = v_res - from_a; - - 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; -} - /* * Update self.tur_shotorg by getting up2date bone info * NOTICE this func overwrites the global v_forward, v_right and v_up vectors. */ float turret_tag_fire_update() -{ +{SELFPARAM(); if(!self.tur_head) { error("Call to turret_tag_fire_update with self.tur_head missing!\n"); @@ -131,7 +20,7 @@ float turret_tag_fire_update() /* * Railgun-like beam, but has thickness and suppots slowing of target */ -void FireImoBeam (vector start, vector end, vector smin, vector smax, +void FireImoBeam(entity this, vector start, vector end, vector smin, vector smax, float bforce, float f_dmg, float f_velfactor, int deathtype) { @@ -148,7 +37,7 @@ void FireImoBeam (vector start, vector end, vector smin, vector smax, // note down which entities were hit so we can damage them later while (1) { - tracebox(start, smin, smax, end, false, self); + tracebox(start, smin, smax, end, false, this); // if it is world we can't hurt it so stop now if (trace_ent == world || trace_fraction == 1) @@ -192,7 +81,7 @@ void FireImoBeam (vector start, vector end, vector smin, vector smax, // apply the damage if (ent.takedamage) { - Damage (ent, self, self, f_dmg, deathtype, hitloc, force); + Damage (ent, this, this, f_dmg, deathtype, hitloc, force); ent.velocity = ent.velocity * f_velfactor; //ent.alpha = 0.25 + random() * 0.75; } @@ -204,13 +93,12 @@ void FireImoBeam (vector start, vector end, vector smin, vector smax, } #ifdef TURRET_DEBUG -void SUB_Remove(); void marker_think() -{ +{SELFPARAM(); if(self.cnt) if(self.cnt < time) { - self.think = SUB_Remove; + setthink(self, SUB_Remove); self.nextthink = time; return; } @@ -224,14 +112,11 @@ void marker_think() void mark_error(vector where,float lifetime) { - entity err; - - err = spawn(); - err.classname = "error_marker"; - setmodel(err,"models/marker.md3"); + entity err = new(error_marker); + setmodel(err, MDL_MARKER); setorigin(err,where); err.movetype = MOVETYPE_NONE; - err.think = marker_think; + setthink(err, marker_think); err.nextthink = time; err.skin = 0; if(lifetime) @@ -240,14 +125,11 @@ void mark_error(vector where,float lifetime) void mark_info(vector where,float lifetime) { - entity err; - - err = spawn(); - err.classname = "info_marker"; - setmodel(err,"models/marker.md3"); + entity err = spawn(info_marker); + setmodel(err, MDL_MARKER); setorigin(err,where); err.movetype = MOVETYPE_NONE; - err.think = marker_think; + setthink(err, marker_think); err.nextthink = time; err.skin = 1; if(lifetime) @@ -256,14 +138,11 @@ void mark_info(vector where,float lifetime) entity mark_misc(vector where,float lifetime) { - entity err; - - err = spawn(); - err.classname = "mark_misc"; - setmodel(err,"models/marker.md3"); + entity err = spawn(mark_misc); + setmodel(err, MDL_MARKER); setorigin(err,where); err.movetype = MOVETYPE_NONE; - err.think = marker_think; + setthink(err, marker_think); err.nextthink = time; err.skin = 3; if(lifetime) @@ -271,6 +150,8 @@ entity mark_misc(vector where,float lifetime) return err; } +MODEL(TUR_C512, "models/turrets/c512.md3"); + /* * Paint a v_color colord circle on target onwho * that fades away over f_time @@ -280,7 +161,7 @@ void paint_target(entity onwho, float f_size, vector v_color, float f_time) entity e; e = spawn(); - setmodel(e, "models/turrets/c512.md3"); // precision set above + setmodel(e, MDL_TUR_C512); // precision set above e.scale = (f_size/512); //setsize(e, '0 0 0', '0 0 0'); //setattachment(e,onwho,""); @@ -299,7 +180,7 @@ void paint_target2(entity onwho, float f_size, vector v_color, float f_time) entity e; e = spawn(); - setmodel(e, "models/turrets/c512.md3"); // precision set above + setmodel(e, MDL_TUR_C512); // precision set above e.scale = (f_size/512); setsize(e, '0 0 0', '0 0 0'); @@ -318,7 +199,7 @@ void paint_target3(vector where, float f_size, vector v_color, float f_time) { entity e; e = spawn(); - setmodel(e, "models/turrets/c512.md3"); // precision set above + setmodel(e, MDL_TUR_C512); // precision set above e.scale = (f_size/512); setsize(e, '0 0 0', '0 0 0'); setorigin(e,where+ '0 0 1');