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