make simulation non-global

This commit is contained in:
Redo0
2021-05-23 15:36:40 -05:00
parent 6c997a36fa
commit 569e79ab96
8 changed files with 52 additions and 54 deletions

View File

@@ -1,7 +1,7 @@
Group = {}
function Group.new(self)
function Group.new(self, sim)
local o = {
state = false,
fxstate = false,
@@ -12,7 +12,9 @@ function Group.new(self)
nwires = 0,
nout_ports = 0,
nin_ports = 0
nin_ports = 0,
sim = sim,
}
setmetatable(o, self)
self.__index = self
@@ -33,7 +35,7 @@ function Group.addwire(self, wire)
Wire.setgroup(wire, self)
Wire.update(wire)
Simulation.queuegroup(sim, self)
Simulation.queuegroup(self.sim, self)
end
end
end
@@ -55,15 +57,15 @@ function Group.removewire(self, wire)
end
for k, wire in pairs(self.wires) do
Simulation.connectwire(sim, wire)
Simulation.connectwire(self.sim, wire)
end
for k, port in pairs(self.out_ports) do
Simulation.connectport(sim, port)
Simulation.connectport(self.sim, port)
end
for k, port in pairs(self.in_ports) do
Simulation.connectport(sim, port)
Simulation.connectport(self.sim, port)
end
self.wires = {}
@@ -81,7 +83,7 @@ function Group.addport(self, port)
if port.type == PortTypes.output then
self.out_ports[port] = port
self.nout_ports = self.nout_ports + 1
sim:queuegroup(self)
self.sim:queuegroup(self)
elseif port.type == PortTypes.input then
self.in_ports[port] = port
self.nin_ports = self.nin_ports + 1
@@ -98,7 +100,7 @@ function Group.removeport(self, port)
self.nin_ports = self.nin_ports - 1
end
Simulation.queuegroup(sim, self)
Simulation.queuegroup(self.sim, self)
end
function Group.mergewith(self, group)
@@ -137,12 +139,12 @@ end
function Group.setstate(self, state)
if state ~= self.state then
self.state = state
self.updatetick = sim.currenttick
self.updatetick = self.sim.currenttick
for k, port in pairs(self.in_ports) do
Port.setinputstate(port, state)
end
Simulation.queuegroupfx(sim, self)
Simulation.queuegroupfx(self.sim, self)
end
end