From fb57752fe79d70a8ed2ed40f88c17c05cd708f8f Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Thu, 28 Apr 2011 22:10:28 +0200 Subject: [PATCH] warpzones: fix attempt for physics to adjust for warpzone transforms; may be VERY buggy --- qcsrc/server/cl_physics.qc | 2 ++ qcsrc/warpzonelib/server.qc | 9 ++++++++- qcsrc/warpzonelib/server.qh | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) 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); -- 2.39.2