]> git.lizzy.rs Git - dragonblocks3d-lua.git/blob - src/taskmgr.lua
Dynamic World System
[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                 if coroutine.status(t) ~= "dead" and coroutine.resume(t) then
15                         table.insert(self.tasks, t)
16                 end
17         end
18         self.tps = 1 / (socket.gettime() - t_start)
19 end
20
21 function Dragonblocks:start_tasks()
22         repeat self:step()
23         until #self.tasks == 0
24 end