void setanim(entity e, vector anim, float looping, float override, float restart)
{
+ if (!anim)
+ return; // no animation was given to us! We can't use this.
+
if (anim_x == e.animstate_startframe)
if (anim_y == e.animstate_numframes)
if (anim_z == e.animstate_framerate)
return;
}
- // very short animations don't really show off the effect
- // of controlled animation, so let's just use linear movement
- if (traveltime < 0.15)
+ // Very short animations don't really show off the effect
+ // of controlled animation, so let's just use linear movement.
+ // Alternatively entities can choose to specify non-controlled movement.
+ // The only currently implemented alternative movement is linear (value 1)
+ if (traveltime < 0.15 || self.platmovetype == 1)
{
self.velocity = delta * (1/traveltime); // QuakeC doesn't allow vector/float division
self.nextthink = self.ltime + traveltime;
controller.classname = "SUB_CalcMove_controller";
controller.owner = self;
controller.origin = self.origin; // starting point
- controller.finaldest = (tdest + '0 0 1'); // where do we want to end? Offset to overshoot a bit.
+ controller.finaldest = (tdest + '0 0 0.125'); // where do we want to end? Offset to overshoot a bit.
controller.destvec = delta;
controller.animstate_starttime = time;
controller.animstate_endtime = time + traveltime;