class(Defer).entity owner;
class(Defer).void() think;
class(Defer).float nextthink;
+ class(Defer).void(entity) defer_func;
/** Remove self */
void SUB_Remove(entity this)
SELFPARAM();
this.think = SUB_Remove_self;
this.nextthink = time;
- WITHSELF(this.owner, this.selfthink(this));
+ this.defer_func(this.owner);
}
/**
* Execute func() after time + fdelay.
* self when func is executed = self when defer is called
*/
- void defer(entity this, float fdelay, void(entity this) func)
+ void defer(entity this, float fdelay, void(entity) func)
{
entity e = new_pure(deferred);
e.owner = this;
- setthink(e, func);
+ e.defer_func = func;
e.think = defer_think;
e.nextthink = time + fdelay;
}