]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/defer.qh
2a13611168fd806382b42b069897591d6582b1f0
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / defer.qh
1 #ifndef MENUQC
2 #ifndef DEFER_H
3 #define DEFER_H
4 #include "oo.qh"
5
6 entityclass(Defer);
7 class(Defer) .entity owner;
8 class(Defer) .void() think;
9 class(Defer) .float nextthink;
10
11 /*
12 ==================
13 SUB_Remove
14
15 Remove self
16 ==================
17 */
18 void SUB_Remove()
19 {SELFPARAM();
20         remove (self);
21 }
22
23 void defer_think()
24 {SELFPARAM();
25     self.think     = SUB_Remove;
26     self.nextthink = time;
27     WITH(entity, self, self.owner, self.use());
28 }
29
30 /*
31     Execute func() after time + fdelay.
32     self when func is executed = self when defer is called
33 */
34 void defer(float fdelay, void() func)
35 {SELFPARAM();
36     entity e;
37
38     e           = spawn();
39     e.owner     = self;
40     e.use       = func;
41     e.think     = defer_think;
42     e.nextthink = time + fdelay;
43 }
44
45 #endif
46 #endif