#ifndef MENUQC #ifndef DEFER_H #define DEFER_H #include "OO.qh" entityclass(Defer); class(Defer) .entity owner; class(Defer) .void() think; class(Defer) .float nextthink; /* ================== SUB_Remove Remove self ================== */ void SUB_Remove() { remove (self); } void defer_think() { entity oself; oself = self; self = self.owner; oself.think = SUB_Remove; oself.nextthink = time; oself.use(); } /* Execute func() after time + fdelay. self when func is executed = self when defer is called */ void defer(float fdelay, void() func) { entity e; e = spawn(); e.owner = self; e.use = func; e.think = defer_think; e.nextthink = time + fdelay; } #endif #endif