From 805a74c1e4e487c1fabafc57858cd591e6dfed9d Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sun, 20 Jan 2008 15:19:30 +0000 Subject: [PATCH] fixed collision bug with player <-> player --- src/game/client/gc_hooks.cpp | 6 ------ src/game/g_game.cpp | 9 +++++++-- src/game/server/gs_server.cpp | 8 -------- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/game/client/gc_hooks.cpp b/src/game/client/gc_hooks.cpp index a320498bf..ca4250596 100644 --- a/src/game/client/gc_hooks.cpp +++ b/src/game/client/gc_hooks.cpp @@ -164,12 +164,6 @@ extern "C" void modc_predict() if(!world.players[c]) continue; - - // TODO: this should be moved into the g_game - // but not done to preserve the nethash - if(length(world.players[c]->vel) > 150.0f) - world.players[c]->vel = normalize(world.players[c]->vel) * 150.0f; - world.players[c]->move(); world.players[c]->quantize(); } diff --git a/src/game/g_game.cpp b/src/game/g_game.cpp index 4befc33e6..66da62957 100644 --- a/src/game/g_game.cpp +++ b/src/game/g_game.cpp @@ -318,13 +318,14 @@ void player_core::tick() vec2 dir = normalize(pos - p->pos); if(d < phys_size*1.25f && d > 1.0f) { - float a = phys_size*1.25f - d; + float a = (phys_size*1.45f - d); // make sure that we don't add excess force by checking the // direction against the current velocity vec2 veldir = normalize(vel); float v = 1-(dot(veldir, dir)+1)/2; - vel = vel + dir*a*v; + vel = vel + dir*a*(v*0.75f); + vel = vel * 0.85f; } // handle hook influence @@ -345,6 +346,10 @@ void player_core::tick() } } } + + // clamp the velocity to something sane + if(length(vel) > 100.0f) + vel = normalize(vel) * 100.0f; } void player_core::move() diff --git a/src/game/server/gs_server.cpp b/src/game/server/gs_server.cpp index 31b1975e6..914fd8e12 100644 --- a/src/game/server/gs_server.cpp +++ b/src/game/server/gs_server.cpp @@ -1312,14 +1312,6 @@ void player::tick_defered() vec2 start_vel = core.vel; bool stuck_before = test_box(core.pos, vec2(28.0f, 28.0f)); - // TODO: this should be moved into the g_game - // but not done to preserve the nethash - if(length(core.vel) > 150.0f) - { - dbg_msg("server", "insane move! clamping (%f,%f) %f", core.vel.x, core.vel.y, length(core.vel)); - core.vel = normalize(core.vel) * 150.0f; - } - core.move(); bool stuck_after_move = test_box(core.pos, vec2(28.0f, 28.0f)); core.quantize();