Кажется, не получает ссылку в lua, но только значение - PullRequest
0 голосов
/ 11 октября 2018

Я получаю компоненты, которые сохраняются в таблицах (я использую специальную систему для повышения эффективности использования памяти).Затем я даю их в качестве параметров в данной функции (с помощью оператора 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

конец

1 Ответ

0 голосов
/ 11 октября 2018

Проблема в том, что если вы установите переменную на значение содержимого таблицы, будет установлено значение, а не ссылка.

...