diff --git a/sim/group.lua b/sim/group.lua index 417c387..675c626 100644 --- a/sim/group.lua +++ b/sim/group.lua @@ -185,7 +185,7 @@ function Group.setstate(group, state) local len = group.num_gates_update for i = 1, len do local gate = group.gates_update[i] - if gate.in_queue==0 then + if gate and gate.in_queue==0 then Simulation.queuegate(sim, gate) end end diff --git a/sim/main.lua b/sim/main.lua index b9bbc1e..ae0f027 100644 --- a/sim/main.lua +++ b/sim/main.lua @@ -55,6 +55,8 @@ GSim = sim network_accept_client() while true do + network_update() + local time = os.clock() if OPT_TICK_ENABLED then @@ -84,8 +86,6 @@ while true do end if time-lastfxtime >= OPT_FX_TIME then - network_update() - if OPT_FX_UPDATES then Simulation.sendfxupdate(sim) end diff --git a/sim/simulation.lua b/sim/simulation.lua index 23bb2c5..010a8f6 100644 --- a/sim/simulation.lua +++ b/sim/simulation.lua @@ -263,7 +263,9 @@ end function Simulation.queuegateinput(sim, gate, argv) sim.inputqueue = sim.inputqueue or {} - sim.inputqueue[gate] = argv + --sim.inputqueue[gate] = argv + sim.inputqueue[gate] = sim.inputqueue[gate] or {} + table.insert(sim.inputqueue[gate], argv) end function Simulation.queuegateinit(sim, gate) @@ -358,8 +360,10 @@ end function Simulation.tickinput(sim) if sim.inputqueue ~= nil then - for gate, argv in pairs(sim.inputqueue) do - Gate.input(gate, argv) + for gate, inputs in pairs(sim.inputqueue) do + for k, argv in ipairs(inputs) do + Gate.input(gate, argv) + end end sim.inputqueue = nil end