X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fweapons%2Fweaponsystem.qc;h=7fa14508688cc50ba50803fbd22e87d98b0a67b4;hb=5bbfb59ff40eca7824c231d687c2bf587a01749d;hp=8b0997bec52564435ffe67c067f06211c0c95e91;hpb=ad83c89d457b02e664603b68b68c27005a1d9dc5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/weapons/weaponsystem.qc b/qcsrc/server/weapons/weaponsystem.qc index 8b0997bec..7fa145086 100644 --- a/qcsrc/server/weapons/weaponsystem.qc +++ b/qcsrc/server/weapons/weaponsystem.qc @@ -14,14 +14,49 @@ #include "../../common/weapons/all.qh" #include "../../lib/csqcmodel/sv_model.qh" -/* -=========================================================================== +vector shotorg_adjustfromclient(vector vecs, float y_is_right, float algn) +{ + switch(algn) + { + default: case 3: break; // right alignment + case 4: vecs.y = -vecs.y; break; // left + case 1: case 2: vecs.y = 0; vecs.z -= 2; break; // center + } + + return vecs; +} + +vector shotorg_adjust_values(vector vecs, bool y_is_right, bool visual, int algn) +{ + string s; - CLIENT WEAPONSYSTEM CODE - Bring back W_Weaponframe + if(visual) + vecs = shotorg_adjustfromclient(vecs, y_is_right, algn); + else if(autocvar_g_shootfromeye) + vecs.y = vecs.z = 0; + else if(autocvar_g_shootfromcenter) + { + vecs.y = 0; + vecs.z -= 2; + } + else if((s = autocvar_g_shootfromfixedorigin) != "") + { + vector v = stov(s); + if(y_is_right) { v.y = -v.y; } + if(v.x != 0) { vecs.x = v.x; } + vecs.y = v.y; + vecs.z = v.z; + } + else // just do the same as top + vecs = shotorg_adjustfromclient(vecs, y_is_right, algn); -=========================================================================== -*/ + return vecs; +} + +vector shotorg_adjust(vector vecs, bool y_is_right, bool visual, int algn) +{ + return shotorg_adjust_values(vecs, y_is_right, visual, algn); +} .int state; @@ -254,8 +289,8 @@ void CL_WeaponEntity_SetModel(string name) { vector v0; v0 = self.movedir; - self.movedir = shotorg_adjust(v0, false, false); - self.view_ofs = shotorg_adjust(v0, false, true) - v0; + self.movedir = shotorg_adjust(v0, false, false, self.owner.cvar_cl_gunalign); + self.view_ofs = shotorg_adjust(v0, false, true, self.owner.cvar_cl_gunalign) - v0; } self.owner.stat_shotorg = compressShotOrigin(self.movedir); self.movedir = decompressShotOrigin(self.owner.stat_shotorg); // make them match perfectly