From: Rudolf Polzer Date: Wed, 21 Dec 2011 20:47:25 +0000 (+0100) Subject: csqcmodels: support effects properly X-Git-Tag: xonotic-v0.6.0~74^2~75^2~5 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8c95904bfe9fd9b68f436ac48486cdce6738bad6;p=xonotic%2Fxonotic-data.pk3dir.git csqcmodels: support effects properly --- diff --git a/qcsrc/client/csqcmodel_hooks.qc b/qcsrc/client/csqcmodel_hooks.qc index 2de97af4d..d3315d74b 100644 --- a/qcsrc/client/csqcmodel_hooks.qc +++ b/qcsrc/client/csqcmodel_hooks.qc @@ -285,10 +285,12 @@ void CSQCModel_Effects_PostUpdate(void) self.csqcmodel_modelflags = self.modelflags; self.effects = 0; self.modelflags = 0; + if(self.csqcmodel_teleported) + Projectile_ResetTrail(self.origin); } void CSQCModel_Effects_Apply(void) { - float eff = self.effects; + float eff = self.csqcmodel_effects; eff &~= CSQCMODEL_EF_INVISIBLE; self.renderflags &~= (RF_DEPTHHACK | RF_ADDITIVE | RF_FULLBRIGHT | EF_NOSHADOW | RF_USEAXIS); @@ -336,7 +338,7 @@ void CSQCModel_Effects_Apply(void) if(self.csqcmodel_modelflags & MF_ROTATE) { self.renderflags |= RF_USEAXIS; - makevectors(self.angles + '0 0 100' * fmod(time, 3.6)); + makevectors(self.angles + '0 100 0' * fmod(time, 3.6)); } if(self.csqcmodel_modelflags & MF_TRACER) self.traileffect = particleeffectnum("TR_WIZSPIKE"); diff --git a/qcsrc/csqcmodel/cl_model.qc b/qcsrc/csqcmodel/cl_model.qc index 00ff8a8a7..03226613b 100644 --- a/qcsrc/csqcmodel/cl_model.qc +++ b/qcsrc/csqcmodel/cl_model.qc @@ -27,7 +27,6 @@ var float autocvar_cl_nolerp = 0; .float csqcmodel_lerpfrac2; .float csqcmodel_lerpfractime; .float csqcmodel_lerpfrac2time; -.float csqcmodel_teleported; void CSQCModel_InterpolateAnimation_PreNote(float sf) { @@ -166,6 +165,9 @@ void CSQCModel_Draw() self.renderflags &~= RF_EXTERNALMODEL | RF_VIEWMODEL; self.renderflags |= (root.renderflags & (RF_EXTERNALMODEL | RF_VIEWMODEL)); } + + // we're drawn, now teleporting is over + self.csqcmodel_teleported = 0; } void CSQCModel_Read() diff --git a/qcsrc/csqcmodel/cl_model.qh b/qcsrc/csqcmodel/cl_model.qh index 5b98ae19f..d38656533 100644 --- a/qcsrc/csqcmodel/cl_model.qh +++ b/qcsrc/csqcmodel/cl_model.qh @@ -34,3 +34,4 @@ void CSQCModel_Read(); #undef CSQCMODEL_IF entity CSQCModel_server2csqc(float pl); +.float csqcmodel_teleported; diff --git a/qcsrc/csqcmodel/cl_player.qc b/qcsrc/csqcmodel/cl_player.qc index b79ed6adc..9c62bbc5f 100644 --- a/qcsrc/csqcmodel/cl_player.qc +++ b/qcsrc/csqcmodel/cl_player.qc @@ -242,10 +242,7 @@ void CSQCPlayer_SetCamera() var float refdefflags = 0; if(view.csqcmodel_teleported) - { refdefflags |= REFDEFFLAG_TELEPORTED; - view.csqcmodel_teleported = 0; - } if(input_buttons & 4) refdefflags |= REFDEFFLAG_JUMPING; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index a5d0a2229..8489145c1 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1808,7 +1808,7 @@ void player_powerups (void) self.modelflags &~= MF_ROCKET; } - self.effects &~= (EF_DIMLIGHT | EF_RED | EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT | EF_FLAME | EF_NODEPTHTEST); + self.effects &~= (EF_RED | EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT | EF_FLAME | EF_NODEPTHTEST); if((self.effects & CSQCMODEL_EF_INVISIBLE) || self.deadflag) // don't apply the flags if the player is gibbed return;