X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Fcomponents%2FBasicCoreComponent.java;h=c82f2b37ddcb6f746dedd42d471dd163d4ccb154;hb=d7f31fafc300b0c7fd1265574507c37a697aadab;hp=9f3da4a238464d2d24f378ba83e56784d89478e6;hpb=0a04a4ed66ecebd4254541c4977599f6052c115a;p=Mograsim.git diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java index 9f3da4a2..c82f2b37 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java @@ -3,6 +3,7 @@ package net.mograsim.logic.core.components; import net.mograsim.logic.core.LogicObservable; import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.timeline.TimelineEventHandler; /** * A basic component that recomputes all outputs (with a delay), when it is updated. @@ -26,10 +27,17 @@ public abstract class BasicCoreComponent extends CoreComponent implements LogicO } @Override - public void update(LogicObservable initiator) + public final void update(LogicObservable initiator) { - timeline.addEvent(e -> compute(), processTime); + update(); } - protected abstract void compute(); + public void update() + { + TimelineEventHandler delayedUpdates = compute(); + if (delayedUpdates != null) + timeline.addEvent(delayedUpdates, processTime); + } + + protected abstract TimelineEventHandler compute(); }