]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/defer.qh
take3: format 903 files
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / defer.qh
1 #pragma once
2
3 #ifdef GAMEQC
4
5 #include "oo.qh"
6 #include "self.qh"
7
8 entityclass(Defer);
9 class(Defer).entity owner;
10 class(Defer).void(entity) defer_func;
11
12 /** Remove entity */
13 void SUB_Remove(entity this)
14 {
15         delete(this);
16 }
17
18 void defer_think(entity this)
19 {
20         setthink(this, SUB_Remove);
21         this.nextthink = time;
22         this.defer_func(this.owner);
23 }
24
25 /**
26  * Execute func() after time + fdelay.
27  * self when func is executed = self when defer is called
28  */
29 void defer(entity this, float fdelay, void(entity) func)
30 {
31         entity e    = new_pure(deferred);
32         e.owner     = this;
33         e.defer_func = func;
34         setthink(e, defer_think);
35         e.nextthink = time + fdelay;
36 }
37
38 #endif