X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fview.qc;h=c9de0d15626ceb79ebf58aadbcf32b523ef5953f;hb=21dd2c7bcc4d6de80ad92e5070c6f579e0526ed4;hp=5f95d4f77a7645c9803eb13c0c4820b472e3ae29;hpb=7b86c6c5151b33a7d47c450e3d56bcec95ed4bb1;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/view.qc b/qcsrc/client/view.qc index 5f95d4f77..c9de0d156 100644 --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@ -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; @@ -287,7 +284,7 @@ void viewmodel_draw(entity this) if (invehicle) a = -1; Weapon wep = this.activeweapon; int c = entcs_GetClientColors(current_player); - vector g = weaponentity_glowmod(wep, NULL, c, this); + vector g = weaponentity_glowmod(wep, c, this); entity me = CSQCModel_server2csqc(player_localentnum - 1); int fx = ((me.csqcmodel_effects & EFMASK_CHEAP) | EF_NODEPTHTEST) @@ -313,8 +310,7 @@ void viewmodel_draw(entity this) { 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) @@ -343,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); @@ -917,6 +911,7 @@ void HUD_Draw(entity this) UpdateDamage(); HUD_Crosshair(this); HitSound(); + Local_Notification_Queue_Process(); } void ViewLocation_Mouse() @@ -1608,8 +1603,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); @@ -1711,6 +1708,11 @@ void CSQC_UpdateView(entity this, float w, float h) Debug_Draw(); #endif + if (autocvar__scoreboard_team_selection) + { + Scoreboard_UI_Enable(1); + cvar_set("_scoreboard_team_selection", "0"); + } scoreboard_active = Scoreboard_WouldDraw(); HUD_Draw(this); // this parameter for deep vehicle function @@ -1740,7 +1742,7 @@ vector camera_offset, current_camera_offset, mouse_angles, current_angles, curre void CSQC_Demo_Camera() { float speed, attenuation, dimensions; - vector tmp, delta; + vector tmp; if( autocvar_camera_reset || !camera_mode ) { @@ -1781,30 +1783,22 @@ void CSQC_Demo_Camera() } } - while (mouse_angles.x < -180) mouse_angles.x = mouse_angles.x + 360; - while (mouse_angles.x > 180) mouse_angles.x = mouse_angles.x - 360; - while (mouse_angles.y < -180) mouse_angles.y = mouse_angles.y + 360; - while (mouse_angles.y > 180) mouse_angles.y = mouse_angles.y - 360; - - // Fix difference when angles don't have the same sign - delta = '0 0 0'; - if(mouse_angles.y < -60 && current_angles.y > 60) - delta = '0 360 0'; - if(mouse_angles.y > 60 && current_angles.y < -60) - delta = '0 -360 0'; - if(autocvar_camera_look_player) attenuation = autocvar_camera_look_attenuation; else attenuation = autocvar_camera_speed_attenuation; attenuation = 1 / max(1, attenuation); - current_angles += (mouse_angles - current_angles + delta) * attenuation; + current_angles += (mouse_angles - current_angles) * attenuation; + + // limit current pitch angle to sane values + if (current_angles.x < -90) current_angles.x = -90; + if (current_angles.x > 90 ) current_angles.x = 90; - while (current_angles.x < -180) current_angles.x = current_angles.x + 360; - while (current_angles.x > 180) current_angles.x = current_angles.x - 360; - while (current_angles.y < -180) current_angles.y = current_angles.y + 360; - while (current_angles.y > 180) current_angles.y = current_angles.y - 360; + // limit mouse and current yaw angles to standard values simultaneously so that the difference + // between these angles is not altered + while (current_angles.y < -180 && mouse_angles.y < -180) {current_angles.y += 360; mouse_angles.y += 360;} + while (current_angles.y > 180 && mouse_angles.y > 180 ) {current_angles.y -= 360; mouse_angles.y -= 360;} // Camera position tmp = '0 0 0';