From: Freddy Date: Sun, 4 Mar 2018 23:25:28 +0000 (+0100) Subject: Fix Sub_CalcMove calls for already moving entities X-Git-Tag: xonotic-v0.8.5~2176^2~51 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=0dc86caf24b0951275bac55ddeb526b332e67290;p=xonotic%2Fxonotic-data.pk3dir.git Fix Sub_CalcMove calls for already moving entities --- diff --git a/qcsrc/common/triggers/subs.qc b/qcsrc/common/triggers/subs.qc index 5b6182e0a..2a237fdcb 100644 --- a/qcsrc/common/triggers/subs.qc +++ b/qcsrc/common/triggers/subs.qc @@ -145,6 +145,8 @@ void SUB_CalcMove_controller_think (entity this) // derivative: delta + 2 * delta2 (e.g. for angle positioning) entity own = this.owner; setthink(own, this.think1); + // set the owner's reference to this entity to NULL + own.move_controller = NULL; delete(this); getthink(own)(own); } @@ -220,8 +222,14 @@ void SUB_CalcMove_Bezier (entity this, vector tcontrol, vector tdest, float tspe return; } + // delete the previous controller, otherwise changing movement midway is glitchy + if (this.move_controller != NULL) + { + delete(this.move_controller); + } controller = new(SUB_CalcMove_controller); controller.owner = this; + this.move_controller = controller; controller.platmovetype = this.platmovetype; controller.platmovetype_start = this.platmovetype_start; controller.platmovetype_end = this.platmovetype_end; diff --git a/qcsrc/common/triggers/subs.qh b/qcsrc/common/triggers/subs.qh index 04b9ecd0d..d2d36a8d1 100644 --- a/qcsrc/common/triggers/subs.qh +++ b/qcsrc/common/triggers/subs.qh @@ -41,6 +41,8 @@ void SUB_VanishOrRemove (entity ent); .vector dest1, dest2; +.entity move_controller; + #ifdef CSQC // this stuff is defined in the server side engine VM, so we must define it separately here .float takedamage;