]> git.lizzy.rs Git - dragonblocks3d-lua.git/blob - src/taskmgr.lua
Huge Performance improvements
[dragonblocks3d-lua.git] / src / taskmgr.lua
1 Dragonblocks.tasks = {}
2
3 function Dragonblocks:add_task(f)
4         local t = coroutine.create(f)
5         table.insert(self.tasks, t)
6         return t
7 end
8
9 function Dragonblocks:step()
10         local t_start = socket.gettime()
11         local tasks = self.tasks
12         self.tasks = {}
13         for _, t in ipairs(tasks) do
14                 local continue, status = coroutine.resume(t)
15                 if status then
16                         print(status)
17                 end
18                 if continue then
19                         table.insert(self.tasks, t)
20                 end
21         end
22         self.tps = 1 / (socket.gettime() - t_start)
23 end
24
25 function Dragonblocks:start_tasks()
26         repeat self:step()
27         until #self.tasks == 0
28 end