-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathobj.PartSys.lua
More file actions
79 lines (69 loc) · 1.39 KB
/
Copy pathobj.PartSys.lua
File metadata and controls
79 lines (69 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
cPartSys = CreateClass()
function cPartSys:Init()
self.ps = {}
self.ts = {}
self.act = {}
self.t = 0
self.started = false
self.biggest = 0
end
function cPartSys:AddEmitter(e, dt)
if not self.started then
table.insert(self.ps, e)
table.insert(self.ts, dt)
table.insert(self.act, false)
if self.biggest < dt then
self.biggest = dt
end
end
end
function cPartSys:Draw(x, y)
for k,v in ipairs(self.ps) do
love.graphics.draw(v, x+gCamShakeAddX, y+gCamShakeAddY)
end
end
function cPartSys:Update(dt)
if self.started then
if self.t < self.biggest then
self.t = self.t + dt
end
for k,v in ipairs(self.ps) do
if self.ts[k] <= self.t and not self.act[k] then
--~ print("starting emitter", k)
v:start()
self.act[k] = true
end
if self.act[k] then
v:update(dt)
end
if v:isEmpty() and not v:isActive() then
v:stop()
end
end
end
end
function cPartSys:Start()
self.started = true
end
function cPartSys:Stop()
for k,v in ipairs(self.ps) do
v:stop()
end
end
function cPartSys:Reset()
self.started = false
self.t = 0
for k,v in ipairs(self.ps) do
v:reset()
self.act[k] = false
end
end
function cPartSys:isDone()
local active = false
for k,v in ipairs(self.ps) do
if not v:isEmpty() or v:isActive() then
active = true
end
end
return not active
end