From 524fdb3dfd6159c35f1062f17857c25e856de477 Mon Sep 17 00:00:00 2001 From: Spoike Date: Thu, 1 Oct 2020 01:27:00 +0000 Subject: [PATCH] Fix unintended rounding issue with hexen2's movechain stuff that was preventing origin changes. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5774 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/server/sv_phys.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/engine/server/sv_phys.c b/engine/server/sv_phys.c index 073f0ef11..5ae6c0763 100644 --- a/engine/server/sv_phys.c +++ b/engine/server/sv_phys.c @@ -2104,18 +2104,19 @@ static void WPhys_WalkMove (world_t *w, wedict_t *ent, const float *gravitydir) #ifdef HEXEN2 void WPhys_MoveChain(world_t *w, wedict_t *ent, wedict_t *movechain, float *initial_origin, float *initial_angle) { - qboolean orgchanged; + qboolean orgunchanged; vec3_t moveorg, moveang; VectorSubtract(ent->v->origin, initial_origin, moveorg); VectorSubtract(ent->v->angles, initial_angle, moveang); - if ((orgchanged=DotProduct(moveorg,moveorg)) || DotProduct(moveang,moveang)) + orgunchanged=!DotProduct(moveorg,moveorg); + if (!orgunchanged || DotProduct(moveang,moveang)) { int i; for(i=16; i && movechain != w->edicts && !ED_ISFREE(movechain); i--, movechain = PROG_TO_WEDICT(w->progs, movechain->xv->movechain)) { if ((int)movechain->v->flags & FL_MOVECHAIN_ANGLE) VectorAdd(movechain->v->angles, moveang, movechain->v->angles); //FIXME: axial only - if (orgchanged) + if (!orgunchanged) { VectorAdd(movechain->v->origin, moveorg, movechain->v->origin); World_LinkEdict(w, movechain, false);