this.origin += bobmodel_ofs(view);
}
-.vector viewmodel_origin, viewmodel_angles;
.float weapon_nextthink;
.float weapon_eta_last;
.float weapon_switchdelay;
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;
{
this.name_last = name;
CL_WeaponEntity_SetModel(this, name, swap);
- this.viewmodel_origin = this.origin;
- this.viewmodel_angles = this.angles;
+ this.origin += autocvar_cl_gunoffset;
}
anim_update(this);
if ((!this.animstate_override && !this.animstate_looping) || time > this.animstate_endtime)
}
}
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);
UpdateDamage();
HUD_Crosshair(this);
HitSound();
+ Local_Notification_Queue_Process();
}
void ViewLocation_Mouse()
// 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);