X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodeladapter%2Fcomponentadapters%2FSimpleRectangularHardcodedModelComponentAdapter.java;h=57effc32654a650af0da906f61e9bc0e17e4ca17;hb=13577856cd85c46f2cd4ad956332697bc820f425;hp=e4bd59dce2800ca8ccec05df9d785978149ac281;hpb=69ec19d54ceb6d5abbb8b4faa55284af22174859;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedModelComponentAdapter.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedModelComponentAdapter.java index e4bd59dc..57effc32 100644 --- a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedModelComponentAdapter.java +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedModelComponentAdapter.java @@ -32,7 +32,7 @@ public class SimpleRectangularHardcodedModelComponentAdapter implements Componen ObservableAtomicReference state = new ObservableAtomicReference<>(); Runnable recalculate = () -> state.updateAndGet(s -> modelComponent.recalculate(s, readEnds, readWriteEnds)); - LogicObserver logicObs = c -> timeline.addEvent(e -> recalculate.run(), params.gateProcessTime); + LogicObserver logicObs = c -> recalculate.run(); modelComponent.setCoreModelBindingAndResetState(state, recalculate); @@ -42,11 +42,12 @@ public class SimpleRectangularHardcodedModelComponentAdapter implements Componen ReadEnd end; if (pin.usage != PinUsage.INPUT) { - ReadWriteEnd rwEnd = wire.createReadWriteEnd(); - readWriteEnds.put(pin.name, rwEnd); - end = rwEnd; - } else - end = wire.createReadOnlyEnd(); + // TODO do this prettier + CoreWire pseudoWire = new CoreWire(timeline, wire.width, params.hardcodedComponentProcessTime); + CoreWire.fuse(wire, pseudoWire); + readWriteEnds.put(pin.name, pseudoWire.createReadWriteEnd()); + } + end = wire.createReadOnlyEnd(); readEnds.put(pin.name, end); if (pin.usage != PinUsage.OUTPUT) end.registerObserver(logicObs);