X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcsqcmodel%2Fcl_player.qc;h=bcb0c08311c9e98f77121e46ef973e459996d517;hb=21836a0c615c95db00ec3993f13f91330d5d9d39;hp=add59971c8428c3f1f9447619f6c9e1f3280fe00;hpb=6b925457ba78521c1d9caf37a855be35d476dae6;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/csqcmodel/cl_player.qc b/qcsrc/csqcmodel/cl_player.qc index add59971c..bcb0c0831 100644 --- a/qcsrc/csqcmodel/cl_player.qc +++ b/qcsrc/csqcmodel/cl_player.qc @@ -21,8 +21,6 @@ */ var float autocvar_cl_predictionerrorcompensation = 0; -var float autocvar_chase_active; -var float autocvar_chase_back; // engine stuff .float pmove_flags; @@ -133,12 +131,15 @@ void CSQCPlayer_SetCamera() { if(csqcplayer) { - vector org, ang; entity oldself; oldself = self; self = csqcplayer; +#ifdef COMPAT_XON050_ENGINE + if(servercommandframe == 0 || !(checkextension("DP_CSQC_V_CALCREFDEF") || checkextension("DP_CSQC_V_CALCREFDEF_WIP1"))) +#else if(servercommandframe == 0) +#endif { InterpolateOrigin_Do(); self.view_ofs = '0 0 1' * getstati(STAT_VIEWHEIGHT); @@ -195,35 +196,54 @@ void CSQCPlayer_SetCamera() // relink setorigin(self, self.origin); - // FIXME support svc_setview? + self.angles_y = input_angles_y; - if(checkextension("DP_CSQC_V_CALCREFDEF") || checkextension("DP_CSQC_V_CALCREFDEF_WIP1")) - { - var float refdefflags = 0; + self = oldself; + } - if(self.csqcmodel_teleported) - { - refdefflags |= REFDEFFLAG_TELEPORTED; - self.csqcmodel_teleported = 0; - } + entity view; +#ifdef COMPAT_XON050_ENGINE + view = CSQCModel_server2csqc((spectatee_status > 0) ? spectatee_status : player_localentnum); +#else + view = CSQCModel_server2csqc(player_localentnum); +#endif - if(input_buttons & 4) - refdefflags |= REFDEFFLAG_JUMPING; +#ifdef COMPAT_XON050_ENGINE + if(view && !(checkextension("DP_CSQC_V_CALCREFDEF") || checkextension("DP_CSQC_V_CALCREFDEF_WIP1"))) + { + // legacy code, not totally correct, but good enough for not having V_CalcRefdef + setproperty(VF_ORIGIN, view.origin + '0 0 1' * getstati(STAT_VIEWHEIGHT)); + setproperty(VF_ANGLES, view.angles); + } + else +#endif + if(view) + { + var float refdefflags = 0; - V_CalcRefdef(self, refdefflags); + if(view.csqcmodel_teleported) + { + refdefflags |= REFDEFFLAG_TELEPORTED; + view.csqcmodel_teleported = 0; } - else - R_SetView3fv(VF_ORIGIN, self.origin + self.view_ofs); - { CSQCPLAYER_HOOK_POSTCAMERASETUP } + if(input_buttons & 4) + refdefflags |= REFDEFFLAG_JUMPING; - self = oldself; + V_CalcRefdef(view, refdefflags); } + else + { + // no setup, keep engine provided values + // to support a legacy entity being the view + } + + { CSQCPLAYER_HOOK_POSTCAMERASETUP } } void CSQCPlayer_Remove() { - if(self.entnum != player_localentnum) + if(self.entnum != player_localnum + 1) return; csqcplayer = world; cvar_clientsettemp("cl_movement_replay", "1"); @@ -231,7 +251,7 @@ void CSQCPlayer_Remove() float CSQCPlayer_PreUpdate() { - if(self.entnum != player_localentnum) + if(self.entnum != player_localnum + 1) return 0; cvar_clientsettemp("cl_movement_replay", "0"); if(csqcplayer_status != CSQCPLAYERSTATUS_FROMSERVER) @@ -241,13 +261,6 @@ float CSQCPlayer_PreUpdate() float CSQCPlayer_PostUpdate() { - /* - if(self.entnum == player_localentnum) - self.renderflags |= RF_EXTERNALMODEL; - else - self.renderflags &~= RF_EXTERNALMODEL; - */ - if(self.entnum != player_localentnum) return 0; csqcplayer_status = CSQCPLAYERSTATUS_FROMSERVER; @@ -255,8 +268,3 @@ float CSQCPlayer_PostUpdate() self.entremove = CSQCPlayer_Remove; return 1; } - -entity CSQCPlayer_GetPlayer(float pl) -{ - return findfloat(world, entnum, pl); // FIXME optimize this using an array -}