make groups only update update-causing ports
This commit is contained in:
24
sim/port.lua
24
sim/port.lua
@@ -45,19 +45,15 @@ function Port.new(self, type, direction, position, causeupdate, sim)
|
||||
return o
|
||||
end
|
||||
|
||||
function Port.setstate(port, state)
|
||||
function Port.setstate(port, state) -- output state
|
||||
if state ~= port.state then
|
||||
port.state = state
|
||||
Simulation.queuegroup(Port.getsim(port), port.group)
|
||||
end
|
||||
end
|
||||
|
||||
function Port.setinputstate(port, state)
|
||||
if state ~= port.state then
|
||||
port.state = state
|
||||
if port.causeupdate then
|
||||
Simulation.queuegate(Port.getsim(port), port.gate)
|
||||
if state then
|
||||
Port.getgroup(port).state_num = Port.getgroup(port).state_num + 1
|
||||
else
|
||||
Port.getgroup(port).state_num = Port.getgroup(port).state_num - 1
|
||||
end
|
||||
Simulation.queuegroup(Port.getsim(port), Port.getgroup(port))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -80,6 +76,10 @@ function Port.isfalling(port)
|
||||
return port.group.state == false and (port.updatetick == Port.getsim(port).currenttick)
|
||||
end
|
||||
|
||||
function Port.getgate(port)
|
||||
return port.gate
|
||||
end
|
||||
|
||||
function Port.setgate(port, gate)
|
||||
port.gate = gate
|
||||
end
|
||||
@@ -100,6 +100,10 @@ function Port.getstate(port)
|
||||
return port.state
|
||||
end
|
||||
|
||||
function Port.getinputstate(port)
|
||||
return Port.getgroup(port).state
|
||||
end
|
||||
|
||||
function Port.getsim(port)
|
||||
return port.sim
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user