Я получаю компоненты, которые сохраняются в таблицах (я использую специальную систему для повышения эффективности использования памяти).Затем я даю их в качестве параметров в данной функции (с помощью оператора unpack (я уже проверил, что это не причина)).Пока все хорошо, я получаю значение, которое сохраняется в таблице.Но если я изменю его, компонент в таблице не изменит значение.Короче говоря: я хочу дать компонент по ссылке, но я даю его по значению.Я думал, что Lua всегда дает значения, хранящиеся в таблицах, по ссылке.Любая помощь будет оценена.Если вам нужны какие-либо дополнительные ресурсы, просто спросите :).Спасибо заранее
function pool:run(dt)-- runs all active systems
local sprite = self.img
for i, method in ipairs(self.mPool) do
if method[1] then
--finds entities with required components
local matches = {}
for x=1, #self.ePool do
if band(self.ePool[x][1], method[2]) == method[2] then
matches[#matches+1] = x
end
end
--get components of entities
local components = {}
for x=1, #method[3] do
components[x] = {}
local marker=1
local savePosition = 1
for Eid=1, matches[#matches] do-- Eid = entity id
if Eid == matches[marker] then
components[marker][#components[marker]+1] = self.cPool[method[3][x]][savePosition]
marker = marker +1
end
if self.cBool[method[3][x]][Eid] then
savePosition = savePosition +1
end
end
end
--reorder and run as coroutine or function
if method[5] then
for x=1, #components do
coroutine.wrap(method[4])(matches[x], unpack(components[x]), dt)
end
else
for x=1, #components do
method[4](matches[x], unpack(components[x]), dt)
end
end
end
end
конец