From: Rudolf Polzer Date: Thu, 28 Apr 2011 20:10:28 +0000 (+0200) Subject: warpzones: fix attempt for physics to adjust for warpzone transforms; may be VERY... X-Git-Tag: xonotic-v0.5.0~264^2~10 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=fb57752fe79d70a8ed2ed40f88c17c05cd708f8f;p=xonotic%2Fxonotic-data.pk3dir.git warpzones: fix attempt for physics to adjust for warpzone transforms; may be VERY buggy --- diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 9662e0ae6..defbb04e4 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -884,6 +884,8 @@ void SV_PlayerPhysics() if (self.deadflag) goto end; + WarpZoneLib_PlayerPhysics_FixVAngle(); + if (!self.fixangle && !g_bugrigs) { self.angles_x = 0; diff --git a/qcsrc/warpzonelib/server.qc b/qcsrc/warpzonelib/server.qc index e0dfc6675..bf2cca7e5 100644 --- a/qcsrc/warpzonelib/server.qc +++ b/qcsrc/warpzonelib/server.qc @@ -89,7 +89,8 @@ float WarpZone_Teleport(entity player) WarpZone_RefSys_Add(player, self); WarpZone_TeleportPlayer(self, player, o1 - player.view_ofs, a1, v1); WarpZone_StoreProjectileData(player); - player.warpzone_teleport_time = time; + player.warpzone_teleport_time = servertime; + player.warpzone_teleport_zone = self; return 1; } @@ -685,3 +686,9 @@ void spawnfunc_target_warpzone_reconnect() { spawnfunc_trigger_warpzone_reconnect(); // both names make sense here :( } + +void WarpZone_PlayerPhysics_FixVAngle(void) +{ + if(time < self.warpzone_teleport_time) + self.v_angle = WarpZone_TransformVAngles(self.warpzone_teleport_zone, self.v_angle); +} diff --git a/qcsrc/warpzonelib/server.qh b/qcsrc/warpzonelib/server.qh index 392e6f39d..621e0f951 100644 --- a/qcsrc/warpzonelib/server.qh +++ b/qcsrc/warpzonelib/server.qh @@ -8,3 +8,5 @@ float WarpZone_Projectile_Touch_ImpactFilter_Callback(); // server must also define a float called ENT_CLIENT_WARPZONE for the initial byte of WarpZone entities const float ENT_CLIENT_WARPZONE; const float ENT_CLIENT_WARPZONE_CAMERA; + +void WarpZone_PlayerPhysics_FixVAngle(void);