]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/defer.qh
Merge branch 'master' into terencehill/dynamic_hud
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / defer.qh
1 #pragma once
2
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         /** Remove self */
14         void SUB_Remove(entity this)
15         {
16                 remove(this);
17         }
18
19         /** Remove self */
20         void SUB_Remove_self()
21         {
22                 SELFPARAM();
23                 remove(this);
24         }
25
26         void defer_think()
27         {
28                 SELFPARAM();
29                 this.think     = SUB_Remove_self;
30                 this.nextthink = time;
31                 WITH(entity, self, this.owner, this.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(entity this, float fdelay, void() func)
39         {
40                 entity e    = new_pure(deferred);
41                 e.owner     = this;
42                 e.use       = func;
43                 e.think     = defer_think;
44                 e.nextthink = time + fdelay;
45         }
46
47 #endif