make groups only update update-causing ports

This commit is contained in:
Redo0
2021-05-25 16:08:58 -05:00
parent 8fe789eade
commit 53e9423ab1
5 changed files with 89 additions and 38 deletions

View File

@@ -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