]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/view.qc
Some viewmodel_draw() optimisations
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / view.qc
index c61a86e2d069a63a5d62c1d684b4847ddbe67475..df10883257e78e077bbcb33580ccafe32a70cf15 100644 (file)
@@ -269,7 +269,6 @@ void viewmodel_animate(entity this)
                this.origin += bobmodel_ofs(view);
 }
 
-.vector viewmodel_origin, viewmodel_angles;
 .float weapon_nextthink;
 .float weapon_eta_last;
 .float weapon_switchdelay;
@@ -278,8 +277,6 @@ void viewmodel_animate(entity this)
 
 void viewmodel_draw(entity this)
 {
-       if(!this.activeweapon || !autocvar_r_drawviewmodel)
-               return;
        int mask = (intermission || (STAT(HEALTH) <= 0) || autocvar_chase_active) ? 0 : MASK_NORMAL;
        float a = ((autocvar_cl_viewmodel_alpha) ? bound(-1, autocvar_cl_viewmodel_alpha, this.m_alpha) : this.m_alpha);
        int wepskin = this.m_skin;
@@ -314,8 +311,6 @@ void viewmodel_draw(entity this)
                        this.name_last = name;
                        CL_WeaponEntity_SetModel(this, name, swap);
                        this.origin += autocvar_cl_gunoffset;
-                       this.viewmodel_origin = this.origin;
-                       this.viewmodel_angles = this.angles;
                }
                anim_update(this);
                if ((!this.animstate_override && !this.animstate_looping) || time > this.animstate_endtime)
@@ -344,8 +339,6 @@ void viewmodel_draw(entity this)
                }
        }
        this.weapon_eta_last = f;
-       this.origin = this.viewmodel_origin;
-       this.angles = this.viewmodel_angles;
        this.angles_x = (-90 * f * f);
        viewmodel_animate(this);
        MUTATOR_CALLHOOK(DrawViewModel, this);
@@ -1609,8 +1602,10 @@ void CSQC_UpdateView(entity this, float w, float h)
 
        // run viewmodel_draw before updating view_angles to the angles calculated by WarpZone_FixView
        // viewmodel_draw needs to use the view_angles set by the engine on every CSQC_UpdateView call
-       for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
-               viewmodel_draw(viewmodels[slot]);
+       if(autocvar_r_drawviewmodel)
+               for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
+                       if(viewmodels[slot].activeweapon)
+                               viewmodel_draw(viewmodels[slot]);
 
        // Render the Scene
        view_origin = getpropertyvec(VF_ORIGIN);