X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.simulation%2Fsrc%2Forg%2Fsimantics%2Fsimulation%2Fexperiment%2FExperimentUtil.java;h=d2fc9b560e7e9b54e1e3e4e81e7a5ea7acedec2d;hp=fb9f6780551ba488e32d838bc9ac9597cdcf61fc;hb=ca59190923cb45fbcde8d18d78c9c1418c1f0471;hpb=5e340942bc7de041b75c6ba281617eb0c800f30a diff --git a/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java b/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java index fb9f67805..d2fc9b560 100644 --- a/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java +++ b/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java @@ -88,6 +88,31 @@ public final class ExperimentUtil { ((IDynamicExperiment)experiment).simulateDuration(duration); } + public static boolean canStepUntil(double endTime) { + IExperimentManager manager = + Simantics.getProject().getHint(IExperimentManager.KEY_EXPERIMENT_MANAGER); + IExperiment experiment = manager.getActiveExperiment(); + if (experiment instanceof IDynamicExperiment) { + IDynamicExperiment exp = (IDynamicExperiment) experiment; + double currentTime = exp.getSimulationTime(); + return currentTime < endTime; + } + return false; + } + + public static void stepUntil(double endTime) { + IExperimentManager manager = + Simantics.getProject().getHint(IExperimentManager.KEY_EXPERIMENT_MANAGER); + IExperiment experiment = manager.getActiveExperiment(); + if (experiment instanceof IDynamicExperiment) { + IDynamicExperiment exp = (IDynamicExperiment) experiment; + double currentTime = exp.getSimulationTime(); + if (currentTime < endTime) { + exp.simulateDuration(endTime - currentTime); + } + } + } + public static void simulate(boolean enabled) { IExperimentManager manager = Simantics.getProject().getHint(IExperimentManager.KEY_EXPERIMENT_MANAGER);