From b983f43a2097aeccd086d1556f4426ec7704ec0d Mon Sep 17 00:00:00 2001 From: div0 Date: Thu, 4 Sep 2008 09:15:16 +0000 Subject: [PATCH] fix portals halfway on edge git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4326 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/portals.qc | 15 ++++++++++++++- data/weapons.cfg | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/data/qcsrc/server/portals.qc b/data/qcsrc/server/portals.qc index ba4b3dc21..0552fd097 100644 --- a/data/qcsrc/server/portals.qc +++ b/data/qcsrc/server/portals.qc @@ -63,6 +63,17 @@ vector Portal_Transform_Divide(vector to_transform, vector from_transform) return Portal_Transform_Multiply(to_transform, Portal_Transform_Invert(from_transform)); } +float PlayerEdgeDistance(entity p, vector v) +{ + vector vbest; + + if(v_x < 0) vbest_x = p.mins_x; else vbest_x = p.maxs_x; + if(v_y < 0) vbest_y = p.mins_y; else vbest_y = p.maxs_y; + if(v_z < 0) vbest_z = p.mins_z; else vbest_z = p.maxs_z; + + return vbest * v; +} + void Portal_TeleportPlayer(entity teleporter, entity player) { vector from, to, safe, step, transform, ang, newvel; @@ -78,7 +89,7 @@ void Portal_TeleportPlayer(entity teleporter, entity player) fixedmakevectors(teleporter.enemy.angles); // first shift it ON the plane if needed - planeshift = ((teleporter.enemy.origin - to) * v_forward); + planeshift = ((teleporter.enemy.origin - to) * v_forward) + PlayerEdgeDistance(player, v_forward); if(planeshift > 0) to += v_forward * planeshift; else @@ -444,6 +455,7 @@ float Portal_SpawnInPortalAtTrace(entity own, vector dir, float portal_id_val) { trace_endpos = trace_ent.origin + '0 0 1' * PL_MIN_z; trace_plane_normal = '0 0 1'; + dir = -1 * dir; // create telefrag portals the other way round } org = trace_endpos; @@ -474,6 +486,7 @@ float Portal_SpawnOutPortalAtTrace(entity own, vector dir, float portal_id_val) { trace_endpos = trace_ent.origin + '0 0 1' * PL_MIN_z; trace_plane_normal = '0 0 1'; + dir = -1 * dir; // create telefrag portals the other way round } org = trace_endpos; diff --git a/data/weapons.cfg b/data/weapons.cfg index 5faed125f..7a0244362 100644 --- a/data/weapons.cfg +++ b/data/weapons.cfg @@ -7,6 +7,8 @@ set g_start_weapon_crylink 0 set g_start_weapon_nex 0 set g_start_weapon_hagar 0 set g_start_weapon_rocketlauncher 0 +set g_start_weapon_minstanex 0 +set g_start_weapon_porto 0 set g_start_ammo_shells 50 set g_start_ammo_nails 0 set g_start_ammo_rockets 0 -- 2.39.2