void() SUB_CalcMoveDone;
void() SUB_CalcAngleMoveDone;
-//void() SUB_UseTargets;
/*
==================
.float platmovetype_turn;
void SUB_CalcMove_controller_think ()
{SELFPARAM();
- entity oldself;
float traveltime;
float phasepos;
float nexttick;
else
{
// derivative: delta + 2 * delta2 (e.g. for angle positioning)
- oldself = self;
- self.owner.SUB_THINK = self.think1;
- setself(self.owner);
- remove(oldself);
- self.SUB_THINK();
+ entity own = self.owner;
+ own.SUB_THINK = self.think1;
+ remove(self);
+ WITHSELF(own, own.SUB_THINK());
}
}
controller.finaldest = (tdest + '0 0 0.125'); // where do we want to end? Offset to overshoot a bit.
controller.animstate_starttime = time;
controller.animstate_endtime = time + traveltime;
- controller.think = SUB_CalcMove_controller_think;
+ setthink(controller, SUB_CalcMove_controller_think);
controller.think1 = self.SUB_THINK;
// the thinking is now done by the controller
self.SUB_NEXTTHINK = self.SUB_LTIME + traveltime;
// invoke controller
- setself(controller);
- self.think();
- setself(self.owner);
+ WITHSELF(controller, getthink(controller)());
}
void SUB_CalcMove (vector tdest, float tspeedtype, float tspeed, void() func)
}
void SUB_CalcMoveEnt (entity ent, vector tdest, float tspeedtype, float tspeed, void() func)
-{SELFPARAM();
+{
WITHSELF(ent, SUB_CalcMove(tdest, tspeedtype, tspeed, func));
}
}
void SUB_CalcAngleMoveEnt (entity ent, vector destangle, float tspeedtype, float tspeed, void() func)
-{SELFPARAM();
+{
WITHSELF(ent, SUB_CalcAngleMove (destangle, tspeedtype, tspeed, func));
}