X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fcsqcmodel_hooks.qc;h=4cb416063509daca3b6ad6b8b920dbf2ce0a7a53;hb=6b9ec45cb95dff4ef8ad888b13e9c55b3e2c15cf;hp=6f008fb541a118c53c2a10cf0513d64fffe61dd9;hpb=2a355a6602f5697afc155e1a28cab59f2b24132f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/csqcmodel_hooks.qc b/qcsrc/client/csqcmodel_hooks.qc index 6f008fb54..4cb416063 100644 --- a/qcsrc/client/csqcmodel_hooks.qc +++ b/qcsrc/client/csqcmodel_hooks.qc @@ -218,16 +218,11 @@ void CSQCPlayer_ModelAppearance_Apply(float islocalplayer) // own team's color is never forced float forcecolor_friend = 0; float forcecolor_enemy = 0; - float teams_count = 0; entity tm; - for(tm = teams.sort_next; tm; tm = tm.sort_next) - if(tm.team != NUM_SPECTATOR) - ++teams_count; - if(autocvar_cl_forcemyplayercolors) forcecolor_friend = 1024 + autocvar_cl_forcemyplayercolors; - if(autocvar_cl_forceplayercolors && teams_count == 2) + if(autocvar_cl_forceplayercolors && team_count == 2) forcecolor_enemy = 1024 + autocvar__cl_color; if(forcecolor_enemy && !forcecolor_friend) @@ -475,8 +470,14 @@ void CSQCModel_Effects_PreUpdate(void) self.effects = self.csqcmodel_effects; self.modelflags = self.csqcmodel_modelflags; } +void Reset_ArcBeam(void); void CSQCModel_Effects_PostUpdate(void) { + if (self == csqcplayer) { + if (self.csqcmodel_teleported) { + Reset_ArcBeam(); + } + } self.csqcmodel_effects = self.effects; self.csqcmodel_modelflags = self.modelflags; self.effects = 0; @@ -648,7 +649,7 @@ void CSQCModel_Hook_PreDraw(float isplayer) if(trace_startsolid || trace_fraction < 1) onground = 1; } - animdecide_init(self); + animdecide_load_if_needed(self); animdecide_setimplicitstate(self, onground); animdecide_setframes(self, doblend, anim_frame, anim_frame1time, anim_frame2, anim_frame2time); float sf = 0; @@ -660,16 +661,15 @@ void CSQCModel_Hook_PreDraw(float isplayer) self.anim_saveframe1time = self.anim_frame1time; self.anim_saveframe2 = self.anim_frame2; self.anim_saveframe2time = self.anim_frame2time; - if(sf) - { - CSQCModel_InterpolateAnimation_2To4_PreNote(sf | CSQCMODEL_PROPERTY_LERPFRAC); - self.lerpfrac = (doblend ? 0.5 : 0); - self.frame = self.anim_frame; - self.frame1time = self.anim_frame1time; - self.frame2 = self.anim_frame2; - self.frame2time = self.anim_frame2time; - CSQCModel_InterpolateAnimation_2To4_Note(sf | CSQCMODEL_PROPERTY_LERPFRAC, FALSE); - } + // Note: we always consider lerpfrac "changed", as it uses fixed values every time anyway. + // This ensures that .frame etc. are always written. + CSQCModel_InterpolateAnimation_2To4_PreNote(sf | CSQCMODEL_PROPERTY_LERPFRAC); + self.lerpfrac = (doblend ? 0.5 : 0); + self.frame = self.anim_frame; + self.frame1time = self.anim_frame1time; + self.frame2 = self.anim_frame2; + self.frame2time = self.anim_frame2time; + CSQCModel_InterpolateAnimation_2To4_Note(sf | CSQCMODEL_PROPERTY_LERPFRAC, FALSE); CSQCModel_InterpolateAnimation_2To4_Do(); if(doblend) {