From: Maik Merten Date: Sat, 20 Nov 2010 18:10:52 +0000 (+0100) Subject: try to put a movement controller into SUB_CalcMove to allow for non-linear movement... X-Git-Tag: xonotic-v0.5.0~311^2~37^2^2~13 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=01af48b3f5ea84c96b8a658396975d6b455feec6;hp=e6f743a136ec345093acaab69cf20d3ff446e876 try to put a movement controller into SUB_CalcMove to allow for non-linear movement. This compiles, but I doubt this works. --- diff --git a/qcsrc/server/g_subs.qc b/qcsrc/server/g_subs.qc index 5d8401df98..364068e15b 100644 --- a/qcsrc/server/g_subs.qc +++ b/qcsrc/server/g_subs.qc @@ -177,10 +177,28 @@ void SUB_CalcMoveDone (void) self.think1 (); } +void SUB_CalcMove_controller_think (void) +{ + float movephase; + float traveltime; + vector delta; + if(time < self.animstate_endtime) { + delta = self.finaldest - self.origin; + traveltime = self.animstate_endtime - self.animstate_starttime; + + self.owner.velocity = delta * (1/traveltime); // QuakeC doesn't allow vector/float division + self.nextthink = time; + } else { + self = self.owner; + self.think(); + } +} + void SUB_CalcMove (vector tdest, float tspeed, void() func) { vector delta; float traveltime; + entity controller; if (!tspeed) objerror ("No speed is defined!"); @@ -206,9 +224,19 @@ void SUB_CalcMove (vector tdest, float tspeed, void() func) return; } - self.velocity = delta * (1/traveltime); // QuakeC doesn't allow vector/float division + controller = spawn(); + controller.classname = "SUB_CalcMove_controller"; + controller.owner = self; + controller.origin = self.origin; // starting point + controller.finaldest = tdest; // where do we want to end? + controller.animstate_starttime = self.ltime; + controller.animstate_endtime = self.ltime + traveltime; + controller.think = SUB_CalcMove_controller_think; + controller.nextthink = time; - self.nextthink = self.ltime + traveltime; + //self.velocity = delta * (1/traveltime); // QuakeC doesn't allow vector/float division + + //self.nextthink = self.ltime + traveltime; } void SUB_CalcMoveEnt (entity ent, vector tdest, float tspeed, void() func)