mirror of
https://github.com/Reuh/ubiquitousse.git
synced 2025-10-27 17:19:31 +00:00
Add make script and precompile Candran files
This commit is contained in:
parent
bfa73f6dd0
commit
bfbe236e58
18 changed files with 1307 additions and 80 deletions
33
ecs/children.lua
Normal file
33
ecs/children.lua
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
return { -- ./ecs/children.can:12
|
||||
["name"] = "children", -- ./ecs/children.can:13
|
||||
["filter"] = true, -- ./ecs/children.can:14
|
||||
["onAdd"] = function(self, e) -- ./ecs/children.can:15
|
||||
if not e["children"] then -- ./ecs/children.can:16
|
||||
e["children"] = {} -- ./ecs/children.can:16
|
||||
end -- ./ecs/children.can:16
|
||||
if e["parent"] then -- ./ecs/children.can:17
|
||||
local parentchildren -- ./ecs/children.can:18
|
||||
parentchildren = e["parent"]["children"] -- ./ecs/children.can:18
|
||||
table["insert"](parentchildren, e) -- ./ecs/children.can:19
|
||||
end -- ./ecs/children.can:19
|
||||
for _, o in ipairs(e["children"]) do -- ./ecs/children.can:21
|
||||
o["parent"] = e -- ./ecs/children.can:22
|
||||
self["world"]:add(o) -- ./ecs/children.can:23
|
||||
end -- ./ecs/children.can:23
|
||||
end, -- ./ecs/children.can:23
|
||||
["onRemove"] = function(self, e) -- ./ecs/children.can:26
|
||||
for i = # e["children"], 1, - 1 do -- ./ecs/children.can:27
|
||||
self["world"]:remove(e["children"][i]) -- ./ecs/children.can:28
|
||||
end -- ./ecs/children.can:28
|
||||
if e["parent"] then -- ./ecs/children.can:30
|
||||
local parentchildren -- ./ecs/children.can:31
|
||||
parentchildren = e["parent"]["children"] -- ./ecs/children.can:31
|
||||
for i = # parentchildren, 1, - 1 do -- ./ecs/children.can:32
|
||||
if parentchildren[i] == e then -- ./ecs/children.can:33
|
||||
table["remove"](parentchildren, i) -- ./ecs/children.can:34
|
||||
break -- ./ecs/children.can:35
|
||||
end -- ./ecs/children.can:35
|
||||
end -- ./ecs/children.can:35
|
||||
end -- ./ecs/children.can:35
|
||||
end -- ./ecs/children.can:35
|
||||
} -- ./ecs/children.can:35
|
||||
494
ecs/ecs.lua
Normal file
494
ecs/ecs.lua
Normal file
|
|
@ -0,0 +1,494 @@
|
|||
local loaded, scene -- ./ecs/ecs.can:51
|
||||
if ... then -- ./ecs/ecs.can:52
|
||||
loaded, scene = pcall(require, (...):match("^(.-)ecs") .. "scene") -- ./ecs/ecs.can:52
|
||||
end -- ./ecs/ecs.can:52
|
||||
if not loaded then -- ./ecs/ecs.can:53
|
||||
scene = nil -- ./ecs/ecs.can:53
|
||||
end -- ./ecs/ecs.can:53
|
||||
local ecs -- ./ecs/ecs.can:55
|
||||
local recDestroySystems -- ./ecs/ecs.can:102
|
||||
recDestroySystems = function(system) -- ./ecs/ecs.can:102
|
||||
for i = # system["systems"], 1, - 1 do -- ./ecs/ecs.can:103
|
||||
local s -- ./ecs/ecs.can:104
|
||||
s = system["systems"][i] -- ./ecs/ecs.can:104
|
||||
recDestroySystems(s) -- ./ecs/ecs.can:105
|
||||
s:onDestroy() -- ./ecs/ecs.can:106
|
||||
system["systems"][i] = nil -- ./ecs/ecs.can:107
|
||||
if s["name"] then -- ./ecs/ecs.can:108
|
||||
system["world"]["s"][s["name"]] = nil -- ./ecs/ecs.can:109
|
||||
end -- ./ecs/ecs.can:109
|
||||
end -- ./ecs/ecs.can:109
|
||||
end -- ./ecs/ecs.can:109
|
||||
local recCallOnRemoveFromWorld -- ./ecs/ecs.can:114
|
||||
recCallOnRemoveFromWorld = function(world, systems) -- ./ecs/ecs.can:114
|
||||
for _, s in ipairs(systems) do -- ./ecs/ecs.can:115
|
||||
s:clear() -- ./ecs/ecs.can:116
|
||||
recCallOnRemoveFromWorld(world, s["systems"]) -- ./ecs/ecs.can:117
|
||||
s:onRemoveFromWorld(world) -- ./ecs/ecs.can:118
|
||||
end -- ./ecs/ecs.can:118
|
||||
end -- ./ecs/ecs.can:118
|
||||
local nextEntity -- ./ecs/ecs.can:123
|
||||
nextEntity = function(s) -- ./ecs/ecs.can:123
|
||||
if s[1] then -- ./ecs/ecs.can:124
|
||||
local var -- ./ecs/ecs.can:125
|
||||
var = s[1][1] -- ./ecs/ecs.can:125
|
||||
s[1] = s[1][2] -- ./ecs/ecs.can:126
|
||||
return var -- ./ecs/ecs.can:127
|
||||
else -- ./ecs/ecs.can:127
|
||||
return nil -- ./ecs/ecs.can:129
|
||||
end -- ./ecs/ecs.can:129
|
||||
end -- ./ecs/ecs.can:129
|
||||
local copy -- ./ecs/ecs.can:135
|
||||
copy = function(a, b, cache) -- ./ecs/ecs.can:135
|
||||
if cache == nil then cache = {} end -- ./ecs/ecs.can:135
|
||||
for k, v in pairs(a) do -- ./ecs/ecs.can:136
|
||||
if type(v) == "table" then -- ./ecs/ecs.can:137
|
||||
if b[k] == nil then -- ./ecs/ecs.can:138
|
||||
if cache[v] then -- ./ecs/ecs.can:139
|
||||
b[k] = cache[v] -- ./ecs/ecs.can:140
|
||||
else -- ./ecs/ecs.can:140
|
||||
cache[v] = {} -- ./ecs/ecs.can:142
|
||||
b[k] = cache[v] -- ./ecs/ecs.can:143
|
||||
copy(v, b[k], cache) -- ./ecs/ecs.can:144
|
||||
setmetatable(b[k], getmetatable(v)) -- ./ecs/ecs.can:145
|
||||
end -- ./ecs/ecs.can:145
|
||||
elseif type(b[k]) == "table" then -- ./ecs/ecs.can:147
|
||||
copy(v, b[k], cache) -- ./ecs/ecs.can:148
|
||||
end -- ./ecs/ecs.can:148
|
||||
elseif b[k] == nil then -- ./ecs/ecs.can:150
|
||||
b[k] = v -- ./ecs/ecs.can:151
|
||||
end -- ./ecs/ecs.can:151
|
||||
end -- ./ecs/ecs.can:151
|
||||
end -- ./ecs/ecs.can:151
|
||||
local system_mt -- ./ecs/ecs.can:217
|
||||
system_mt = { -- ./ecs/ecs.can:217
|
||||
["name"] = nil, -- ./ecs/ecs.can:231
|
||||
["systems"] = nil, -- ./ecs/ecs.can:239
|
||||
["interval"] = false, -- ./ecs/ecs.can:245
|
||||
["active"] = true, -- ./ecs/ecs.can:249
|
||||
["visible"] = true, -- ./ecs/ecs.can:253
|
||||
["component"] = nil, -- ./ecs/ecs.can:260
|
||||
["default"] = nil, -- ./ecs/ecs.can:270
|
||||
["filter"] = function(self, e) -- ./ecs/ecs.can:291
|
||||
return false -- ./ecs/ecs.can:291
|
||||
end, -- ./ecs/ecs.can:291
|
||||
["compare"] = function(self, e1, e2) -- ./ecs/ecs.can:303
|
||||
return true -- ./ecs/ecs.can:303
|
||||
end, -- ./ecs/ecs.can:303
|
||||
["onAdd"] = function(self, e, c) -- ./ecs/ecs.can:309
|
||||
-- ./ecs/ecs.can:309
|
||||
end, -- ./ecs/ecs.can:309
|
||||
["onRemove"] = function(self, e, c) -- ./ecs/ecs.can:314
|
||||
-- ./ecs/ecs.can:314
|
||||
end, -- ./ecs/ecs.can:314
|
||||
["onInstance"] = function(self) -- ./ecs/ecs.can:317
|
||||
-- ./ecs/ecs.can:317
|
||||
end, -- ./ecs/ecs.can:317
|
||||
["onAddToWorld"] = function(self, world) -- ./ecs/ecs.can:321
|
||||
-- ./ecs/ecs.can:321
|
||||
end, -- ./ecs/ecs.can:321
|
||||
["onRemoveFromWorld"] = function(self, world) -- ./ecs/ecs.can:325
|
||||
-- ./ecs/ecs.can:325
|
||||
end, -- ./ecs/ecs.can:325
|
||||
["onDestroy"] = function(self) -- ./ecs/ecs.can:328
|
||||
-- ./ecs/ecs.can:328
|
||||
end, -- ./ecs/ecs.can:328
|
||||
["onUpdate"] = function(self, dt) -- ./ecs/ecs.can:333
|
||||
-- ./ecs/ecs.can:333
|
||||
end, -- ./ecs/ecs.can:333
|
||||
["onDraw"] = function(self) -- ./ecs/ecs.can:337
|
||||
-- ./ecs/ecs.can:337
|
||||
end, -- ./ecs/ecs.can:337
|
||||
["process"] = function(self, e, c, dt) -- ./ecs/ecs.can:344
|
||||
-- ./ecs/ecs.can:344
|
||||
end, -- ./ecs/ecs.can:344
|
||||
["render"] = function(self, e, c) -- ./ecs/ecs.can:350
|
||||
-- ./ecs/ecs.can:350
|
||||
end, -- ./ecs/ecs.can:350
|
||||
["onUpdateEnd"] = function(self, dt) -- ./ecs/ecs.can:355
|
||||
-- ./ecs/ecs.can:355
|
||||
end, -- ./ecs/ecs.can:355
|
||||
["onDrawEnd"] = function(self) -- ./ecs/ecs.can:359
|
||||
-- ./ecs/ecs.can:359
|
||||
end, -- ./ecs/ecs.can:359
|
||||
["world"] = nil, -- ./ecs/ecs.can:369
|
||||
["w"] = nil, -- ./ecs/ecs.can:373
|
||||
["entityCount"] = 0, -- ./ecs/ecs.can:377
|
||||
["s"] = nil, -- ./ecs/ecs.can:381
|
||||
["_first"] = nil, -- ./ecs/ecs.can:387
|
||||
["_previous"] = nil, -- ./ecs/ecs.can:391
|
||||
["_waited"] = 0, -- ./ecs/ecs.can:394
|
||||
["add"] = function(self, e, ...) -- ./ecs/ecs.can:415
|
||||
if e ~= nil and not self["_previous"][e] and self:filter(e) then -- ./ecs/ecs.can:416
|
||||
if self["component"] and self["default"] then -- ./ecs/ecs.can:418
|
||||
copy({ [self["component"]] = self["default"] }, e) -- ./ecs/ecs.can:419
|
||||
end -- ./ecs/ecs.can:419
|
||||
if self["_first"] == nil then -- ./ecs/ecs.can:422
|
||||
self["_first"] = { -- ./ecs/ecs.can:423
|
||||
e, -- ./ecs/ecs.can:423
|
||||
nil -- ./ecs/ecs.can:423
|
||||
} -- ./ecs/ecs.can:423
|
||||
self["_previous"][e] = true -- ./ecs/ecs.can:424
|
||||
elseif self:compare(e, self["_first"][1]) then -- ./ecs/ecs.can:425
|
||||
local nxt -- ./ecs/ecs.can:426
|
||||
nxt = self["_first"] -- ./ecs/ecs.can:426
|
||||
self["_first"] = { -- ./ecs/ecs.can:427
|
||||
e, -- ./ecs/ecs.can:427
|
||||
nxt -- ./ecs/ecs.can:427
|
||||
} -- ./ecs/ecs.can:427
|
||||
self["_previous"][e] = true -- ./ecs/ecs.can:428
|
||||
self["_previous"][nxt[1]] = self["_first"] -- ./ecs/ecs.can:429
|
||||
else -- ./ecs/ecs.can:429
|
||||
local entity -- ./ecs/ecs.can:431
|
||||
entity = self["_first"] -- ./ecs/ecs.can:431
|
||||
while entity[2] ~= nil do -- ./ecs/ecs.can:432
|
||||
if self:compare(e, entity[2][1]) then -- ./ecs/ecs.can:433
|
||||
local nxt -- ./ecs/ecs.can:434
|
||||
nxt = entity[2] -- ./ecs/ecs.can:434
|
||||
entity[2] = { -- ./ecs/ecs.can:435
|
||||
e, -- ./ecs/ecs.can:435
|
||||
nxt -- ./ecs/ecs.can:435
|
||||
} -- ./ecs/ecs.can:435
|
||||
self["_previous"][e] = entity -- ./ecs/ecs.can:436
|
||||
self["_previous"][nxt[1]] = entity[2] -- ./ecs/ecs.can:437
|
||||
break -- ./ecs/ecs.can:438
|
||||
end -- ./ecs/ecs.can:438
|
||||
entity = entity[2] -- ./ecs/ecs.can:440
|
||||
end -- ./ecs/ecs.can:440
|
||||
if entity[2] == nil then -- ./ecs/ecs.can:442
|
||||
entity[2] = { -- ./ecs/ecs.can:443
|
||||
e, -- ./ecs/ecs.can:443
|
||||
nil -- ./ecs/ecs.can:443
|
||||
} -- ./ecs/ecs.can:443
|
||||
self["_previous"][e] = entity -- ./ecs/ecs.can:444
|
||||
end -- ./ecs/ecs.can:444
|
||||
end -- ./ecs/ecs.can:444
|
||||
self["entityCount"] = self["entityCount"] + (1) -- ./ecs/ecs.can:448
|
||||
self:onAdd(e, e[self["component"]]) -- ./ecs/ecs.can:449
|
||||
if self["_previous"][e] then -- ./ecs/ecs.can:451
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:452
|
||||
s:add(e) -- ./ecs/ecs.can:453
|
||||
end -- ./ecs/ecs.can:453
|
||||
end -- ./ecs/ecs.can:453
|
||||
end -- ./ecs/ecs.can:453
|
||||
if ... then -- ./ecs/ecs.can:457
|
||||
return e, self:add(...) -- ./ecs/ecs.can:458
|
||||
else -- ./ecs/ecs.can:458
|
||||
return e -- ./ecs/ecs.can:460
|
||||
end -- ./ecs/ecs.can:460
|
||||
end, -- ./ecs/ecs.can:460
|
||||
["remove"] = function(self, e, ...) -- ./ecs/ecs.can:475
|
||||
if e ~= nil then -- ./ecs/ecs.can:476
|
||||
if self["_previous"][e] then -- ./ecs/ecs.can:477
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:479
|
||||
s:remove(e) -- ./ecs/ecs.can:480
|
||||
end -- ./ecs/ecs.can:480
|
||||
end -- ./ecs/ecs.can:480
|
||||
if self["_previous"][e] then -- ./ecs/ecs.can:483
|
||||
local prev -- ./ecs/ecs.can:485
|
||||
prev = self["_previous"][e] -- ./ecs/ecs.can:485
|
||||
if prev == true then -- ./ecs/ecs.can:486
|
||||
self["_first"] = self["_first"][2] -- ./ecs/ecs.can:487
|
||||
if self["_first"] then -- ./ecs/ecs.can:488
|
||||
self["_previous"][self["_first"][1]] = true -- ./ecs/ecs.can:489
|
||||
end -- ./ecs/ecs.can:489
|
||||
else -- ./ecs/ecs.can:489
|
||||
prev[2] = prev[2][2] -- ./ecs/ecs.can:492
|
||||
if prev[2] then -- ./ecs/ecs.can:493
|
||||
self["_previous"][prev[2][1]] = prev -- ./ecs/ecs.can:494
|
||||
end -- ./ecs/ecs.can:494
|
||||
end -- ./ecs/ecs.can:494
|
||||
self["_previous"][e] = nil -- ./ecs/ecs.can:498
|
||||
self["entityCount"] = self["entityCount"] - (1) -- ./ecs/ecs.can:499
|
||||
self:onRemove(e, e[self["component"]]) -- ./ecs/ecs.can:500
|
||||
end -- ./ecs/ecs.can:500
|
||||
end -- ./ecs/ecs.can:500
|
||||
if ... then -- ./ecs/ecs.can:503
|
||||
return e, self:remove(...) -- ./ecs/ecs.can:504
|
||||
else -- ./ecs/ecs.can:504
|
||||
return e -- ./ecs/ecs.can:506
|
||||
end -- ./ecs/ecs.can:506
|
||||
end, -- ./ecs/ecs.can:506
|
||||
["refresh"] = function(self, e, ...) -- ./ecs/ecs.can:518
|
||||
if e ~= nil then -- ./ecs/ecs.can:519
|
||||
if not self["_previous"][e] then -- ./ecs/ecs.can:520
|
||||
self:add(e) -- ./ecs/ecs.can:521
|
||||
elseif self["_previous"][e] then -- ./ecs/ecs.can:522
|
||||
if not self:filter(e) then -- ./ecs/ecs.can:523
|
||||
self:remove(e) -- ./ecs/ecs.can:524
|
||||
else -- ./ecs/ecs.can:524
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:526
|
||||
s:refresh(e) -- ./ecs/ecs.can:527
|
||||
end -- ./ecs/ecs.can:527
|
||||
end -- ./ecs/ecs.can:527
|
||||
end -- ./ecs/ecs.can:527
|
||||
end -- ./ecs/ecs.can:527
|
||||
if ... then -- ./ecs/ecs.can:532
|
||||
return e, self:refresh(...) -- ./ecs/ecs.can:533
|
||||
else -- ./ecs/ecs.can:533
|
||||
return e -- ./ecs/ecs.can:535
|
||||
end -- ./ecs/ecs.can:535
|
||||
end, -- ./ecs/ecs.can:535
|
||||
["reorder"] = function(self, e, ...) -- ./ecs/ecs.can:547
|
||||
if e ~= nil then -- ./ecs/ecs.can:548
|
||||
if self["_previous"][e] then -- ./ecs/ecs.can:549
|
||||
local prev -- ./ecs/ecs.can:550
|
||||
prev = self["_previous"][e] -- ./ecs/ecs.can:550
|
||||
local next -- ./ecs/ecs.can:551
|
||||
next = prev == true and self["_first"][2] or prev[2][2] -- ./ecs/ecs.can:551
|
||||
if prev == true then -- ./ecs/ecs.can:553
|
||||
self["_first"] = self["_first"][2] -- ./ecs/ecs.can:554
|
||||
else -- ./ecs/ecs.can:554
|
||||
prev[2] = next -- ./ecs/ecs.can:556
|
||||
end -- ./ecs/ecs.can:556
|
||||
if next then -- ./ecs/ecs.can:558
|
||||
self["_previous"][next[1]] = prev -- ./ecs/ecs.can:559
|
||||
end -- ./ecs/ecs.can:559
|
||||
while prev ~= true and self:compare(e, prev[1]) do -- ./ecs/ecs.can:562
|
||||
next = prev -- ./ecs/ecs.can:563
|
||||
prev = self["_previous"][prev[1]] -- ./ecs/ecs.can:564
|
||||
end -- ./ecs/ecs.can:564
|
||||
while next ~= nil and not self:compare(e, next[1]) do -- ./ecs/ecs.can:566
|
||||
prev = next -- ./ecs/ecs.can:567
|
||||
next = next[2] -- ./ecs/ecs.can:568
|
||||
end -- ./ecs/ecs.can:568
|
||||
local new -- ./ecs/ecs.can:571
|
||||
new = { -- ./ecs/ecs.can:571
|
||||
e, -- ./ecs/ecs.can:571
|
||||
next -- ./ecs/ecs.can:571
|
||||
} -- ./ecs/ecs.can:571
|
||||
self["_previous"][e] = prev -- ./ecs/ecs.can:572
|
||||
if next then -- ./ecs/ecs.can:573
|
||||
self["_previous"][next[1]] = new -- ./ecs/ecs.can:574
|
||||
end -- ./ecs/ecs.can:574
|
||||
if prev == true then -- ./ecs/ecs.can:576
|
||||
self["_first"] = new -- ./ecs/ecs.can:577
|
||||
else -- ./ecs/ecs.can:577
|
||||
prev[2] = new -- ./ecs/ecs.can:579
|
||||
end -- ./ecs/ecs.can:579
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:582
|
||||
s:reorder(e) -- ./ecs/ecs.can:583
|
||||
end -- ./ecs/ecs.can:583
|
||||
end -- ./ecs/ecs.can:583
|
||||
end -- ./ecs/ecs.can:583
|
||||
if ... then -- ./ecs/ecs.can:587
|
||||
return e, self:reorder(...) -- ./ecs/ecs.can:588
|
||||
else -- ./ecs/ecs.can:588
|
||||
return e -- ./ecs/ecs.can:590
|
||||
end -- ./ecs/ecs.can:590
|
||||
end, -- ./ecs/ecs.can:590
|
||||
["has"] = function(self, e, ...) -- ./ecs/ecs.can:599
|
||||
local has -- ./ecs/ecs.can:600
|
||||
has = e == nil or not not self["_previous"][e] -- ./ecs/ecs.can:600
|
||||
if ... then -- ./ecs/ecs.can:601
|
||||
return has and self:has(...) -- ./ecs/ecs.can:602
|
||||
else -- ./ecs/ecs.can:602
|
||||
return has -- ./ecs/ecs.can:604
|
||||
end -- ./ecs/ecs.can:604
|
||||
end, -- ./ecs/ecs.can:604
|
||||
["iter"] = function(self) -- ./ecs/ecs.can:609
|
||||
return nextEntity, { self["_first"] } -- ./ecs/ecs.can:610
|
||||
end, -- ./ecs/ecs.can:610
|
||||
["clear"] = function(self) -- ./ecs/ecs.can:613
|
||||
for e in self:iter() do -- ./ecs/ecs.can:614
|
||||
self:remove(e) -- ./ecs/ecs.can:615
|
||||
end -- ./ecs/ecs.can:615
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:617
|
||||
s:clear() -- ./ecs/ecs.can:618
|
||||
end -- ./ecs/ecs.can:618
|
||||
end, -- ./ecs/ecs.can:618
|
||||
["update"] = function(self, dt) -- ./ecs/ecs.can:625
|
||||
if self["active"] then -- ./ecs/ecs.can:626
|
||||
if self["interval"] then -- ./ecs/ecs.can:627
|
||||
self["_waited"] = self["_waited"] + (dt) -- ./ecs/ecs.can:628
|
||||
if self["_waited"] < self["interval"] then -- ./ecs/ecs.can:629
|
||||
return -- ./ecs/ecs.can:630
|
||||
end -- ./ecs/ecs.can:630
|
||||
end -- ./ecs/ecs.can:630
|
||||
self:onUpdate(dt) -- ./ecs/ecs.can:633
|
||||
if self["process"] ~= system_mt["process"] then -- ./ecs/ecs.can:634
|
||||
for e in self:iter() do -- ./ecs/ecs.can:635
|
||||
self:process(e, e[self["component"]], dt) -- ./ecs/ecs.can:636
|
||||
end -- ./ecs/ecs.can:636
|
||||
end -- ./ecs/ecs.can:636
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:639
|
||||
s:update(dt) -- ./ecs/ecs.can:640
|
||||
end -- ./ecs/ecs.can:640
|
||||
self:onUpdateEnd(dt) -- ./ecs/ecs.can:642
|
||||
if self["interval"] then -- ./ecs/ecs.can:643
|
||||
self["_waited"] = self["_waited"] - (self["interval"]) -- ./ecs/ecs.can:644
|
||||
end -- ./ecs/ecs.can:644
|
||||
end -- ./ecs/ecs.can:644
|
||||
end, -- ./ecs/ecs.can:644
|
||||
["draw"] = function(self) -- ./ecs/ecs.can:651
|
||||
if self["visible"] then -- ./ecs/ecs.can:652
|
||||
self:onDraw() -- ./ecs/ecs.can:653
|
||||
if self["render"] ~= system_mt["render"] then -- ./ecs/ecs.can:654
|
||||
for e in self:iter() do -- ./ecs/ecs.can:655
|
||||
self:render(e, e[self["component"]]) -- ./ecs/ecs.can:656
|
||||
end -- ./ecs/ecs.can:656
|
||||
end -- ./ecs/ecs.can:656
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:659
|
||||
s:draw() -- ./ecs/ecs.can:660
|
||||
end -- ./ecs/ecs.can:660
|
||||
self:onDrawEnd() -- ./ecs/ecs.can:662
|
||||
end -- ./ecs/ecs.can:662
|
||||
end, -- ./ecs/ecs.can:662
|
||||
["callback"] = function(self, name, e, ...) -- ./ecs/ecs.can:675
|
||||
if self["_previous"][e] and self[name] then -- ./ecs/ecs.can:677
|
||||
self[name](self, e, e[self["component"]], ...) -- ./ecs/ecs.can:678
|
||||
end -- ./ecs/ecs.can:678
|
||||
if self["_previous"][e] then -- ./ecs/ecs.can:681
|
||||
for _, ss in ipairs(self["systems"]) do -- ./ecs/ecs.can:682
|
||||
ss:callback(name, e, ...) -- ./ecs/ecs.can:683
|
||||
end -- ./ecs/ecs.can:683
|
||||
end -- ./ecs/ecs.can:683
|
||||
end, -- ./ecs/ecs.can:683
|
||||
["emit"] = function(self, name, ...) -- ./ecs/ecs.can:708
|
||||
local status -- ./ecs/ecs.can:710
|
||||
if self[name] then -- ./ecs/ecs.can:711
|
||||
status = self[name](self, ...) -- ./ecs/ecs.can:712
|
||||
end -- ./ecs/ecs.can:712
|
||||
if status ~= "stop" and status ~= "capture" then -- ./ecs/ecs.can:715
|
||||
for _, s in ipairs(self["systems"]) do -- ./ecs/ecs.can:716
|
||||
status = s:emit(name, ...) -- ./ecs/ecs.can:717
|
||||
if status == "capture" then -- ./ecs/ecs.can:718
|
||||
break -- ./ecs/ecs.can:718
|
||||
end -- ./ecs/ecs.can:718
|
||||
end -- ./ecs/ecs.can:718
|
||||
end -- ./ecs/ecs.can:718
|
||||
return status -- ./ecs/ecs.can:721
|
||||
end, -- ./ecs/ecs.can:721
|
||||
["destroy"] = function(self) -- ./ecs/ecs.can:724
|
||||
recCallOnRemoveFromWorld(self["world"], { self }) -- ./ecs/ecs.can:725
|
||||
recDestroySystems({ ["systems"] = { self } }) -- ./ecs/ecs.can:726
|
||||
end -- ./ecs/ecs.can:726
|
||||
} -- ./ecs/ecs.can:726
|
||||
local alwaysTrue -- ./ecs/ecs.can:731
|
||||
alwaysTrue = function() -- ./ecs/ecs.can:731
|
||||
return true -- ./ecs/ecs.can:731
|
||||
end -- ./ecs/ecs.can:731
|
||||
local alwaysFalse -- ./ecs/ecs.can:732
|
||||
alwaysFalse = function() -- ./ecs/ecs.can:732
|
||||
return false -- ./ecs/ecs.can:732
|
||||
end -- ./ecs/ecs.can:732
|
||||
local recInstanciateSystems -- ./ecs/ecs.can:737
|
||||
recInstanciateSystems = function(world, systems) -- ./ecs/ecs.can:737
|
||||
local t -- ./ecs/ecs.can:738
|
||||
t = {} -- ./ecs/ecs.can:738
|
||||
for _, s in ipairs(systems) do -- ./ecs/ecs.can:739
|
||||
local system -- ./ecs/ecs.can:740
|
||||
system = setmetatable({ -- ./ecs/ecs.can:742
|
||||
["systems"] = recInstanciateSystems(world, s["systems"] or {}), -- ./ecs/ecs.can:743
|
||||
["world"] = world, -- ./ecs/ecs.can:744
|
||||
["w"] = world, -- ./ecs/ecs.can:745
|
||||
["s"] = world["s"], -- ./ecs/ecs.can:746
|
||||
["_previous"] = {} -- ./ecs/ecs.can:747
|
||||
}, { ["__index"] = function(self, k) -- ./ecs/ecs.can:749
|
||||
if s[k] ~= nil then -- ./ecs/ecs.can:750
|
||||
return s[k] -- ./ecs/ecs.can:751
|
||||
else -- ./ecs/ecs.can:751
|
||||
return system_mt[k] -- ./ecs/ecs.can:753
|
||||
end -- ./ecs/ecs.can:753
|
||||
end }) -- ./ecs/ecs.can:753
|
||||
if type(s["filter"]) == "string" then -- ./ecs/ecs.can:758
|
||||
system["filter"] = function(_, e) -- ./ecs/ecs.can:759
|
||||
return e[s["filter"]] ~= nil -- ./ecs/ecs.can:759
|
||||
end -- ./ecs/ecs.can:759
|
||||
elseif type(s["filter"]) == "table" then -- ./ecs/ecs.can:760
|
||||
system["filter"] = ecs["all"](unpack(s["filter"])) -- ./ecs/ecs.can:761
|
||||
elseif type(s["filter"]) == "boolean" then -- ./ecs/ecs.can:762
|
||||
if s["filter"] then -- ./ecs/ecs.can:763
|
||||
system["filter"] = alwaysTrue -- ./ecs/ecs.can:764
|
||||
else -- ./ecs/ecs.can:764
|
||||
system["filter"] = alwaysFalse -- ./ecs/ecs.can:766
|
||||
end -- ./ecs/ecs.can:766
|
||||
end -- ./ecs/ecs.can:766
|
||||
if not s["component"] and s["name"] then -- ./ecs/ecs.can:770
|
||||
s["component"] = s["name"] -- ./ecs/ecs.can:771
|
||||
end -- ./ecs/ecs.can:771
|
||||
table["insert"](t, system) -- ./ecs/ecs.can:774
|
||||
if s["name"] then -- ./ecs/ecs.can:775
|
||||
world["s"][s["name"]] = system -- ./ecs/ecs.can:776
|
||||
end -- ./ecs/ecs.can:776
|
||||
system:onInstance() -- ./ecs/ecs.can:778
|
||||
end -- ./ecs/ecs.can:778
|
||||
return t -- ./ecs/ecs.can:780
|
||||
end -- ./ecs/ecs.can:780
|
||||
local recCallOnAddToWorld -- ./ecs/ecs.can:783
|
||||
recCallOnAddToWorld = function(world, systems) -- ./ecs/ecs.can:783
|
||||
for _, s in ipairs(systems) do -- ./ecs/ecs.can:784
|
||||
recCallOnAddToWorld(world, s["systems"]) -- ./ecs/ecs.can:785
|
||||
s:onAddToWorld(world) -- ./ecs/ecs.can:786
|
||||
end -- ./ecs/ecs.can:786
|
||||
end -- ./ecs/ecs.can:786
|
||||
ecs = { -- ./ecs/ecs.can:792
|
||||
["world"] = function(...) -- ./ecs/ecs.can:797
|
||||
local world -- ./ecs/ecs.can:798
|
||||
world = setmetatable({ -- ./ecs/ecs.can:798
|
||||
["filter"] = ecs["all"](), -- ./ecs/ecs.can:799
|
||||
["s"] = {}, -- ./ecs/ecs.can:800
|
||||
["_previous"] = {} -- ./ecs/ecs.can:801
|
||||
}, { ["__index"] = system_mt }) -- ./ecs/ecs.can:802
|
||||
world["world"] = world -- ./ecs/ecs.can:803
|
||||
world["w"] = world -- ./ecs/ecs.can:804
|
||||
world["systems"] = recInstanciateSystems(world, { ... }) -- ./ecs/ecs.can:805
|
||||
recCallOnAddToWorld(world, world["systems"]) -- ./ecs/ecs.can:806
|
||||
return world -- ./ecs/ecs.can:807
|
||||
end, -- ./ecs/ecs.can:807
|
||||
["all"] = function(...) -- ./ecs/ecs.can:813
|
||||
if ... then -- ./ecs/ecs.can:814
|
||||
local l -- ./ecs/ecs.can:815
|
||||
l = { ... } -- ./ecs/ecs.can:815
|
||||
return function(s, e) -- ./ecs/ecs.can:816
|
||||
for _, k in ipairs(l) do -- ./ecs/ecs.can:817
|
||||
if e[k] == nil then -- ./ecs/ecs.can:818
|
||||
return false -- ./ecs/ecs.can:819
|
||||
end -- ./ecs/ecs.can:819
|
||||
end -- ./ecs/ecs.can:819
|
||||
return true -- ./ecs/ecs.can:822
|
||||
end -- ./ecs/ecs.can:822
|
||||
else -- ./ecs/ecs.can:822
|
||||
return alwaysTrue -- ./ecs/ecs.can:825
|
||||
end -- ./ecs/ecs.can:825
|
||||
end, -- ./ecs/ecs.can:825
|
||||
["any"] = function(...) -- ./ecs/ecs.can:832
|
||||
if ... then -- ./ecs/ecs.can:833
|
||||
local l -- ./ecs/ecs.can:834
|
||||
l = { ... } -- ./ecs/ecs.can:834
|
||||
return function(s, e) -- ./ecs/ecs.can:835
|
||||
for _, k in ipairs(l) do -- ./ecs/ecs.can:836
|
||||
if e[k] ~= nil then -- ./ecs/ecs.can:837
|
||||
return true -- ./ecs/ecs.can:838
|
||||
end -- ./ecs/ecs.can:838
|
||||
end -- ./ecs/ecs.can:838
|
||||
return false -- ./ecs/ecs.can:841
|
||||
end -- ./ecs/ecs.can:841
|
||||
else -- ./ecs/ecs.can:841
|
||||
return alwaysFalse -- ./ecs/ecs.can:844
|
||||
end -- ./ecs/ecs.can:844
|
||||
end, -- ./ecs/ecs.can:844
|
||||
["scene"] = function(name, systems, entities) -- ./ecs/ecs.can:854
|
||||
if systems == nil then systems = {} end -- ./ecs/ecs.can:854
|
||||
if entities == nil then entities = {} end -- ./ecs/ecs.can:854
|
||||
assert(scene, "ubiquitousse.scene unavailable") -- ./ecs/ecs.can:855
|
||||
local s -- ./ecs/ecs.can:856
|
||||
s = scene["new"](name) -- ./ecs/ecs.can:856
|
||||
local w -- ./ecs/ecs.can:857
|
||||
s["enter"] = function(self) -- ./ecs/ecs.can:859
|
||||
w = ecs["world"](unpack(systems)) -- ./ecs/ecs.can:860
|
||||
w:add(unpack(entities)) -- ./ecs/ecs.can:861
|
||||
end -- ./ecs/ecs.can:861
|
||||
s["exit"] = function(self) -- ./ecs/ecs.can:863
|
||||
w:destroy() -- ./ecs/ecs.can:864
|
||||
end -- ./ecs/ecs.can:864
|
||||
s["update"] = function(self, dt) -- ./ecs/ecs.can:866
|
||||
w:update(dt) -- ./ecs/ecs.can:867
|
||||
end -- ./ecs/ecs.can:867
|
||||
s["draw"] = function(self) -- ./ecs/ecs.can:869
|
||||
w:draw() -- ./ecs/ecs.can:870
|
||||
end -- ./ecs/ecs.can:870
|
||||
return s -- ./ecs/ecs.can:873
|
||||
end -- ./ecs/ecs.can:873
|
||||
} -- ./ecs/ecs.can:873
|
||||
return ecs -- ./ecs/ecs.can:877
|
||||
23
ecs/timer.lua
Normal file
23
ecs/timer.lua
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
local timer -- ./ecs/timer.can:4
|
||||
timer = require((...):match("^(.-)ecs%.timer") .. "scene") -- ./ecs/timer.can:4
|
||||
return { -- ./ecs/timer.can:6
|
||||
["name"] = "timer", -- ./ecs/timer.can:7
|
||||
["filter"] = "timer", -- ./ecs/timer.can:8
|
||||
["default"] = {}, -- ./ecs/timer.can:9
|
||||
["process"] = function(self, t, dt) -- ./ecs/timer.can:12
|
||||
t:update(dt) -- ./ecs/timer.can:13
|
||||
if t:dead() then -- ./ecs/timer.can:14
|
||||
self["world"]:remove(t["entity"]) -- ./ecs/timer.can:15
|
||||
end -- ./ecs/timer.can:15
|
||||
end, -- ./ecs/timer.can:15
|
||||
["run"] = function(self, func) -- ./ecs/timer.can:20
|
||||
local t = timer["run"](func) -- ./ecs/timer.can:21
|
||||
self["world"]:add({ ["timer"] = t }) -- ./ecs/timer.can:23
|
||||
return t -- ./ecs/timer.can:25
|
||||
end, -- ./ecs/timer.can:25
|
||||
["tween"] = function(self, duration, tbl, to, method) -- ./ecs/timer.can:28
|
||||
local t = timer["tween"](duration, tbl, to, method) -- ./ecs/timer.can:29
|
||||
self["world"]:add({ ["timer"] = t }) -- ./ecs/timer.can:31
|
||||
return t -- ./ecs/timer.can:33
|
||||
end -- ./ecs/timer.can:33
|
||||
} -- ./ecs/timer.can:33
|
||||
Loading…
Add table
Add a link
Reference in a new issue