From bd1783a3f91590be082231a12cb62ed06ba1f4cc Mon Sep 17 00:00:00 2001 From: div0 Date: Mon, 9 Mar 2009 14:34:23 +0000 Subject: [PATCH] shootfromcenter: try to display the weapon model in the middle of the screen to show to the player that this mode is active (fails for minstanex and seeker, needs model fixes) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@6090 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_weaponsystem.qc | 23 +++++++++++++++++++++-- data/qcsrc/server/g_hook.qc | 6 ++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index e580696a8..9c4d9a1b7 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -45,7 +45,7 @@ void W_SetupShot(entity ent, vector vecs, float antilag, float recoil, string sn if (cvar("g_shootfromeye")) w_shotorg = ent.origin + ent.view_ofs; else if (cvar("g_shootfromcenter")) - w_shotorg = ent.origin + ent.view_ofs + '0 0 1' * vecs_z; + w_shotorg = ent.origin + ent.view_ofs + v_up * vecs_z; else w_shotorg = ent.origin + ent.view_ofs + v_right * vecs_y + v_up * vecs_z; // now move the shotorg forward as much as requested if possible @@ -277,6 +277,26 @@ void CL_Weaponentity_Think() setmodel(self, strcat("models/weapons/w_", self.owner.weaponname, ".zym")); // precision set below else self.model = ""; + + if(cvar("g_shootfromcenter") || cvar("g_shootfromeye")) + { + entity e; + e = spawn(); + e.modelindex = self.modelindex; + float idx; + vector v; + idx = gettagindex(e, "bone02"); + if(idx) + { + v = gettaginfo(e, idx); + setorigin(self, '0 -1 0' * v_y); + } + else + setorigin(self, '0 0 0'); + remove(e); + } + else + setorigin(self, '0 0 0'); } tb = (self.effects & EF_TELEPORT_BIT); @@ -369,7 +389,6 @@ void CL_SpawnWeaponentity() self.weaponentity.think = CL_Weaponentity_Think; self.weaponentity.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; self.weaponentity.nextthink = time; - self.weaponentity.scale = 0.61; self.exteriorweaponentity = spawn(); self.exteriorweaponentity.classname = "exteriorweaponentity"; diff --git a/data/qcsrc/server/g_hook.qc b/data/qcsrc/server/g_hook.qc index e639cb978..09817e3a0 100644 --- a/data/qcsrc/server/g_hook.qc +++ b/data/qcsrc/server/g_hook.qc @@ -470,7 +470,13 @@ void GrappleHookInit() if(g_grappling_hook) hook_shotorigin = '8 -8 -12'; else + { hook_shotorigin = '21 8 -8.5'; + if(cvar("g_shootfromcenter")) + hook_shotorigin_y = 0; + if(cvar("g_shootfromeye")) + hook_shotorigin_y = hook_shotorigin_z = 0; + } } void SetGrappleHookBindings() -- 2.39.2