Commit f4d34b0f authored by Benedikt Kleinmeier's avatar Benedikt Kleinmeier
Browse files

Merge branch 'master' into psychology

parents a7da932d c3a171ed
Pipeline #180583 passed with stages
in 130 minutes and 10 seconds
...@@ -5,7 +5,9 @@ ...@@ -5,7 +5,9 @@
## In Progress: ## In Progress:
### Added ### Added
- Add `PedestrianPotentialProcessor` which writes out different potentials (TARGET (target potential), OBSTACLE (obstacle potential), PEDESTRIAN (agent potential), ALL (sum of all)) configureable via its `Attributes`. It only writes those potentials if the used main model for the simulation is a `PotentialFieldModel`.
- Add `AttributesPedestrianPositionProcessor` to the `PedestrianPositionProcessor` such that the user can disable interpolation (using the default it is enabled), making it more flexible.
- Positions can now be interpolated i.e. Agents offer two methods: `getPosition` and `getInterpolatedPosition`. `getPosition` returns the Position the model is working with and `getInterpolatedPosition` the position the agent is approximatily at. For ODE-based models both methods return the same position but for footstep based models like the OSM the position is interpolated assuming that an agent performs his current step with a constant speed. This gives more accurate positions for visualizing and computing measures like the density.
- Added new scenario element `TargetChanger`. This scenario element has an arbitrary shape and changes the target of an agent. Either to another static target or to another agent (to get a follower behavior). A `TargetChanger` has two important parameters: - Added new scenario element `TargetChanger`. This scenario element has an arbitrary shape and changes the target of an agent. Either to another static target or to another agent (to get a follower behavior). A `TargetChanger` has two important parameters:
* `changeTargetProbability`: This defines how many percent of the agents, who enter the area, should change their target. * `changeTargetProbability`: This defines how many percent of the agents, who enter the area, should change their target.
* `nextTargetIsPedestrian`: If `nextTargetIsPedestrian == false`, assign a new static target. Otherwise, randomly choose a pedestrian (with given target id) to follow. * `nextTargetIsPedestrian`: If `nextTargetIsPedestrian == false`, assign a new static target. Otherwise, randomly choose a pedestrian (with given target id) to follow.
...@@ -37,6 +39,7 @@ ...@@ -37,6 +39,7 @@
### Changed ### Changed
- The Model (of the GUI MVC) of the Postvisualization changed to a DataFrame based structure using [Tablesaw](https://github.com/jtablesaw/tablesaw) which is based on [FastUtils](http://fastutil.di.unimi.it/).
- `FootStepProcessor` interpolates the pedestrian's foot step to obtain a more precise position. - `FootStepProcessor` interpolates the pedestrian's foot step to obtain a more precise position.
Was previously known as `PedestrianFootStepProcessor` Was previously known as `PedestrianFootStepProcessor`
- Use following shortcuts for zooming and scrolling in the topography creator: - Use following shortcuts for zooming and scrolling in the topography creator:
...@@ -131,12 +134,15 @@ Was previously known as `PedestrianFootStepProcessor` ...@@ -131,12 +134,15 @@ Was previously known as `PedestrianFootStepProcessor`
- add option to include osm ids into each obstacle created - add option to include osm ids into each obstacle created
`PostVis` added functionalities: `PostVis` added functionalities:
- the PostVis works now on the basis of simulation time instead of time steps. Agents' position will be interpolated. - the PostVis (optionally) works now on the basis of simulation time instead of time steps. Agents' position will be interpolated. The option can be enabled and disabled via the `SettingsDialog`
- the user can jump to a specific simulation time - the user can jump to a specific simulation time
- the user can step forward by steps as small as 0.01s - the user can step forward by steps as small as 0.01s
- the user can make videos using also this new feature which results in very smooth movement - the user can make videos using also this new feature which results in very smooth movement
- the frames per seconds (FPS) is now more accurate - the frames per seconds (FPS) is now more accurate
`OnlineVis` added functionalities:
- the OnlineVis (optionally) works now on the basis of simulation time instead of time steps. Agents' position will be interpolated. The option can be enabled and disabled via the `SettingsDialog`.
### Changed ### Changed
- version migration ensures that new attributes in the scenario file will be added - version migration ensures that new attributes in the scenario file will be added
......
...@@ -79,7 +79,7 @@ ProjectView.btnNewButton.text=New button ...@@ -79,7 +79,7 @@ ProjectView.btnNewButton.text=New button
ProjectView.btnRunAllTests.text=Run all scenarios ProjectView.btnRunAllTests.text=Run all scenarios
ProjectView.mntmRunSelectetTests.text=Run selected scenario ProjectView.mntmRunSelectetTests.text=Run selected scenario
ProjectView.mntmRunSelectedTests.text=Run selected scenarios ProjectView.mntmRunSelectedTests.text=Run selected scenarios
ProjectView.mntmSimulationResult.text=Show Simulation Result Dialog ProjectView.mntmSimulationResult.text=Show summary after simulation
ProjectView.btnPauseRunningTests.text=Pause ProjectView.btnPauseRunningTests.text=Pause
ProjectView.btnRunSelectedTest.text=Run selected scenario ProjectView.btnRunSelectedTest.text=Run selected scenario
ProjectView.btnRunSelectedTest.toolTipText=Run selected scenario ProjectView.btnRunSelectedTest.toolTipText=Run selected scenario
...@@ -203,8 +203,8 @@ OutputprocessorsView.dataProcessor.text={Processor: ""} ...@@ -203,8 +203,8 @@ OutputprocessorsView.dataProcessor.text={Processor: ""}
AdjustPanel.lblVelocity.text=FPS AdjustPanel.lblVelocity.text=FPS
AdjustPanel.lblTime=Time AdjustPanel.lblTime=Time
AdjustPanel.lblStep.text=Timestep AdjustPanel.lblStep.text=SimStep
AdjustPanel.lblVisTime.text=Res. AdjustPanel.lblTimeResolution.text=Res.
ProjectView.warning.lwjgl.title=Warning ProjectView.warning.lwjgl.title=Warning
ProjectView.warning.opencl.title=Warning ProjectView.warning.opencl.title=Warning
......
...@@ -79,7 +79,7 @@ ProjectView.btnNewButton.text=Neuer Button ...@@ -79,7 +79,7 @@ ProjectView.btnNewButton.text=Neuer Button
ProjectView.btnRunAllTests.text=Alle Szenarios ausf\u00FChren ProjectView.btnRunAllTests.text=Alle Szenarios ausf\u00FChren
ProjectView.mntmRunSelectetTests.text=Ausgew\u00E4hlte Szenarios ausf\u00FChren ProjectView.mntmRunSelectetTests.text=Ausgew\u00E4hlte Szenarios ausf\u00FChren
ProjectView.mntmRunSelectedTests.text=Ausgew\u00E4hlte Szenarios ausf\u00FChren ProjectView.mntmRunSelectedTests.text=Ausgew\u00E4hlte Szenarios ausf\u00FChren
ProjectView.mntmSimulationResult.text=Ergebnis Dialog anzeigen ProjectView.mntmSimulationResult.text=Zusammenfassung nach Simulation anzeigen
ProjectView.btnPauseRunningTests.text=Pausieren ProjectView.btnPauseRunningTests.text=Pausieren
ProjectView.btnRunSelectedTest.text=Ausgew\u00E4hltes Szenario ausf\u00FChren ProjectView.btnRunSelectedTest.text=Ausgew\u00E4hltes Szenario ausf\u00FChren
ProjectView.btnRunSelectedTest.toolTipText=Ausgew\u00E4hlten Szenario ausf\u00FChren ProjectView.btnRunSelectedTest.toolTipText=Ausgew\u00E4hlten Szenario ausf\u00FChren
...@@ -208,8 +208,8 @@ OutputprocessorsView.dataProcessor.text={"Processor": ""} ...@@ -208,8 +208,8 @@ OutputprocessorsView.dataProcessor.text={"Processor": ""}
AdjustPanel.lblVelocity.text=FPS AdjustPanel.lblVelocity.text=FPS
AdjustPanel.lblTime=Zeit AdjustPanel.lblTime=Zeit
AdjustPanel.lblStep.text=Zeitschritt AdjustPanel.lblStep.text=SimSchritt
AdjustPanel.lblVisTime.text=Aufl. AdjustPanel.lblTimeResolution.text=Aufl.
ProjectView.mntmOutputToSceneario.text=Generiere Szenario ProjectView.mntmOutputToSceneario.text=Generiere Szenario
ProjectView.mntmRunOutput.text=Offline erneut starten ProjectView.mntmRunOutput.text=Offline erneut starten
......
...@@ -87,7 +87,7 @@ public class Player implements Runnable { ...@@ -87,7 +87,7 @@ public class Player implements Runnable {
switch (state) { switch (state) {
case RUNNING: { case RUNNING: {
if (isRunnable()) { if (isRunnable()) {
double newSimeTimeInSec = model.getSimTimeInSec() + model.getVisTimeStepLength(); double newSimeTimeInSec = model.getSimTimeInSec() + model.getTimeResolution();
if(model.getSimTimeInSec() >= model.getMaxSimTimeInSec()) { if(model.getSimTimeInSec() >= model.getMaxSimTimeInSec()) {
newSimeTimeInSec = 0; newSimeTimeInSec = 0;
} }
......
...@@ -17,7 +17,7 @@ public class PostvisualizationConfig extends DefaultSimulationConfig { ...@@ -17,7 +17,7 @@ public class PostvisualizationConfig extends DefaultSimulationConfig {
private int fps = CONFIG.getInt("PostVis.framesPerSecond"); private int fps = CONFIG.getInt("PostVis.framesPerSecond");
private final int MAX_VELOCITY = CONFIG.getInt("PostVis.maxFramePerSecond"); private final int MAX_VELOCITY = CONFIG.getInt("PostVis.maxFramePerSecond");
private double visTimeStepLength = CONFIG.getDouble("PostVis.visTimeStepLength"); private double timeResolution = CONFIG.getDouble("PostVis.timeResolution");
private Observable observable; private Observable observable;
public PostvisualizationConfig() {} public PostvisualizationConfig() {}
...@@ -37,9 +37,9 @@ public class PostvisualizationConfig extends DefaultSimulationConfig { ...@@ -37,9 +37,9 @@ public class PostvisualizationConfig extends DefaultSimulationConfig {
setChanged(); setChanged();
} }
public void setVisTimeStepLength(double visTimeStepLength) { public void setTimeResolution(double timeResolution) {
this.visTimeStepLength = visTimeStepLength; this.timeResolution = timeResolution;
CONFIG.setProperty("PostVis.visTimeStepLength", visTimeStepLength); CONFIG.setProperty("PostVis.timeResolution", timeResolution);
setChanged(); setChanged();
} }
...@@ -47,8 +47,8 @@ public class PostvisualizationConfig extends DefaultSimulationConfig { ...@@ -47,8 +47,8 @@ public class PostvisualizationConfig extends DefaultSimulationConfig {
return fps; return fps;
} }
public double getVisTimeStepLength() { public double getTimeResolution() {
return visTimeStepLength; return timeResolution;
} }
public int getMaxVelocity() { public int getMaxVelocity() {
......
...@@ -48,7 +48,7 @@ public class PostvisualizationModel extends SimulationModel<PostvisualizationCon ...@@ -48,7 +48,7 @@ public class PostvisualizationModel extends SimulationModel<PostvisualizationCon
private double visTime; private double visTime;
private double visTimeStepLength; private double timeResolution;
private double simTimeStepLength; private double simTimeStepLength;
...@@ -75,7 +75,7 @@ public class PostvisualizationModel extends SimulationModel<PostvisualizationCon ...@@ -75,7 +75,7 @@ public class PostvisualizationModel extends SimulationModel<PostvisualizationCon
this.topographyId = 0; this.topographyId = 0;
this.potentialContainer = null; this.potentialContainer = null;
this.simTimeStepLength = new AttributesSimulation().getSimTimeStepLength(); this.simTimeStepLength = new AttributesSimulation().getSimTimeStepLength();
this.visTimeStepLength = this.simTimeStepLength; this.timeResolution = this.simTimeStepLength;
this.visTime = 0; this.visTime = 0;
this.predicateColoringModel = new PredicateColoringModel(); this.predicateColoringModel = new PredicateColoringModel();
this.outputChanged = false; this.outputChanged = false;
...@@ -118,19 +118,19 @@ public class PostvisualizationModel extends SimulationModel<PostvisualizationCon ...@@ -118,19 +118,19 @@ public class PostvisualizationModel extends SimulationModel<PostvisualizationCon
} }
private double stepToTime(final int step) { private double stepToTime(final int step) {
return visTimeStepLength * (step - 1); return timeResolution * (step - 1);
} }
public synchronized PredicateColoringModel getPredicateColoringModel() { public synchronized PredicateColoringModel getPredicateColoringModel() {
return predicateColoringModel; return predicateColoringModel;
} }
public synchronized double getVisTimeStepLength() { public synchronized double getTimeResolution() {
return visTimeStepLength; return timeResolution;
} }
public synchronized void setVisTimeStepLength(final double visTimeStepLength) { public synchronized void setTimeResolution(final double visTimeStepLength) {
this.visTimeStepLength = visTimeStepLength; this.timeResolution = visTimeStepLength;
} }
public synchronized double getSimTimeStepLength() { public synchronized double getSimTimeStepLength() {
......
...@@ -2,40 +2,37 @@ package org.vadere.gui.postvisualization.view; ...@@ -2,40 +2,37 @@ package org.vadere.gui.postvisualization.view;
import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.FormLayout;
import javax.swing.*;
import org.vadere.gui.components.utils.Messages; import org.vadere.gui.components.utils.Messages;
import org.vadere.gui.components.utils.Resources;
import org.vadere.gui.postvisualization.control.ActionSetTimeStep; import org.vadere.gui.postvisualization.control.ActionSetTimeStep;
import org.vadere.gui.postvisualization.control.EJSliderAction; import org.vadere.gui.postvisualization.control.EJSliderAction;
import org.vadere.gui.postvisualization.model.PostvisualizationModel; import org.vadere.gui.postvisualization.model.PostvisualizationModel;
import org.vadere.state.simulation.Step;
import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.util.Locale;
import java.util.Observable; import java.util.Observable;
import java.util.Observer; import java.util.Observer;
import java.util.Optional;
public class AdjustPanel extends JPanel implements Observer { public class AdjustPanel extends JPanel implements Observer {
private static Resources resources = Resources.getInstance("postvisualization");
private final JSlider slider; private final JSlider slider;
private final JSpinner sStep;
private final JSpinner sVelocity;
private final JSpinner sVisTimeStepLength;
private final JSpinner sVelocity;
private final JSpinner sTime; private final JSpinner sTime;
private final SpinnerModel sModelTime; private final JSpinner sStep;
private final SpinnerModel sModelTimeStep; private final JSpinner sTimeResolution;
private final SpinnerModel sModelVelocity; private final SpinnerModel sModelVelocity;
// No "final" because if step size of "sTimeResolution" changes,
// this should also effect the step size of "sTime" and its underlying spinner model.
private SpinnerModel sModelTime;
private final SpinnerModel sModelTimeStep;
private final SpinnerModel sModelTimeResolution;
private final SpinnerModel sModelVisTimeStepLength;
private final PostvisualizationModel model; private final PostvisualizationModel model;
public AdjustPanel(final PostvisualizationModel model) { public AdjustPanel(final PostvisualizationModel model) {
this.model = model; this.model = model;
if (!model.isEmpty()) { if (!model.isEmpty()) {
slider = new JSlider(SwingConstants.HORIZONTAL, model.getFirstStep(), slider = new JSlider(SwingConstants.HORIZONTAL, model.getFirstStep(),
model.getLastStep(), model.getFirstStep()); model.getLastStep(), model.getFirstStep());
...@@ -44,28 +41,24 @@ public class AdjustPanel extends JPanel implements Observer { ...@@ -44,28 +41,24 @@ public class AdjustPanel extends JPanel implements Observer {
} }
slider.addMouseListener(new EJSliderAction(slider)); slider.addMouseListener(new EJSliderAction(slider));
// sStep.setEditable(false);
sModelVelocity = new SpinnerNumberModel(model.config.getFps(), 1, 200, 1); sModelVelocity = new SpinnerNumberModel(model.config.getFps(), 1, 200, 1);
sModelTime = new SpinnerNumberModel(0.0, 0.0, Double.MAX_VALUE, model.getTimeResolution());
sModelTimeStep = new SpinnerNumberModel(1, 1, Integer.MAX_VALUE, 1); sModelTimeStep = new SpinnerNumberModel(1, 1, Integer.MAX_VALUE, 1);
sModelTime = new SpinnerNumberModel(0.0, 0.0, Double.MAX_VALUE, model.getVisTimeStepLength()); sModelTimeResolution = new SpinnerNumberModel(model.config.getTimeResolution(), 0.01, Double.MAX_VALUE, 0.01);
sModelVisTimeStepLength = new SpinnerNumberModel(model.config.getVisTimeStepLength(), 0.01, Double.MAX_VALUE, 0.01); model.setTimeResolution(model.config.getTimeResolution());
model.setVisTimeStepLength(model.config.getVisTimeStepLength());
sVelocity = new JSpinner(sModelVelocity); sVelocity = new JSpinner(sModelVelocity);
sTime = new JSpinner(sModelTime); sTime = new JSpinner(sModelTime);
sStep = new JSpinner(sModelTimeStep); sStep = new JSpinner(sModelTimeStep);
sVisTimeStepLength = new JSpinner(sModelVisTimeStepLength); sTimeResolution = new JSpinner(sModelTimeResolution);
//sTime.setEnabled(false);
// lTime.set
// lTime.setV
sStep.setPreferredSize(new Dimension(50, 30)); sStep.setPreferredSize(new Dimension(50, 30));
sVelocity.setPreferredSize(new Dimension(50, 30)); sVelocity.setPreferredSize(new Dimension(50, 30));
sTime.setPreferredSize(new Dimension(70, 30)); sTime.setPreferredSize(new Dimension(70, 30));
sVisTimeStepLength.setPreferredSize(new Dimension(70, 30)); sTimeResolution.setPreferredSize(new Dimension(70, 30));
// Layout definition!
// Arrange the GUI components according to a column-based layout
FormLayout layout = new FormLayout( FormLayout layout = new FormLayout(
"2dlu, default:grow, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu", // col "2dlu, default:grow, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu", // col
"2dlu, default, 2dlu"); // rows "2dlu, default, 2dlu"); // rows
...@@ -78,8 +71,8 @@ public class AdjustPanel extends JPanel implements Observer { ...@@ -78,8 +71,8 @@ public class AdjustPanel extends JPanel implements Observer {
add(sTime, cc.xy(10, 2)); add(sTime, cc.xy(10, 2));
add(new JLabel(Messages.getString("AdjustPanel.lblStep.text")), cc.xy(12, 2)); add(new JLabel(Messages.getString("AdjustPanel.lblStep.text")), cc.xy(12, 2));
add(sStep, cc.xy(14, 2)); add(sStep, cc.xy(14, 2));
add(new JLabel(Messages.getString("AdjustPanel.lblVisTime.text")), cc.xy(16, 2)); add(new JLabel(Messages.getString("AdjustPanel.lblTimeResolution.text")), cc.xy(16, 2));
add(sVisTimeStepLength, cc.xy(18, 2)); add(sTimeResolution, cc.xy(18, 2));
sVelocity.addChangeListener(e -> { sVelocity.addChangeListener(e -> {
model.config.setFps((int) sVelocity.getValue()); model.config.setFps((int) sVelocity.getValue());
...@@ -98,10 +91,15 @@ public class AdjustPanel extends JPanel implements Observer { ...@@ -98,10 +91,15 @@ public class AdjustPanel extends JPanel implements Observer {
} }
}); });
sVisTimeStepLength.addChangeListener(e -> { sTimeResolution.addChangeListener(e -> {
model.config.setVisTimeStepLength((double) sVisTimeStepLength.getValue()); model.config.setTimeResolution((double) sTimeResolution.getValue());
model.setVisTimeStepLength(model.config.getVisTimeStepLength()); model.setTimeResolution(model.config.getTimeResolution());
model.notifyObservers(); model.notifyObservers();
double currentTimeValue = (double)sModelTime.getValue();
double newStepSize = model.config.getTimeResolution();
sModelTime = new SpinnerNumberModel(currentTimeValue, 0.0, Double.MAX_VALUE, newStepSize);
sTime.setModel(sModelTime);
}); });
...@@ -123,7 +121,7 @@ public class AdjustPanel extends JPanel implements Observer { ...@@ -123,7 +121,7 @@ public class AdjustPanel extends JPanel implements Observer {
slider.setValue(currentStepNumber); slider.setValue(currentStepNumber);
sStep.setValue(currentStepNumber); sStep.setValue(currentStepNumber);
sTime.setValue(model.getSimTimeInSec()); sTime.setValue(model.getSimTimeInSec());
sVisTimeStepLength.setValue(model.getVisTimeStepLength()); sTimeResolution.setValue(model.getTimeResolution());
sTime.setValue(model.getSimTimeInSec()); sTime.setValue(model.getSimTimeInSec());
//((SpinnerNumberModel)sModelTime).setStepSize(model.getSimTimeInSec()); //((SpinnerNumberModel)sModelTime).setStepSize(model.getSimTimeInSec());
//slider.setValueIsAdjusting(false); //slider.setValueIsAdjusting(false);
......
...@@ -22,7 +22,7 @@ public class ShowResultDialogAction extends AbstractAction { ...@@ -22,7 +22,7 @@ public class ShowResultDialogAction extends AbstractAction {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
model.setShowSimulationResultDialog(item.getState());
VadereConfig.getConfig().setProperty("Project.simulationResult.show", item.getState()); VadereConfig.getConfig().setProperty("Project.simulationResult.show", item.getState());
model.setShowSimulationResultDialog(item.getState());
} }
} }
...@@ -251,6 +251,10 @@ public class ProjectViewModel implements IScenarioChecker { ...@@ -251,6 +251,10 @@ public class ProjectViewModel implements IScenarioChecker {
.findAny().isPresent(); .findAny().isPresent();
} }
public boolean getShowSimulationResultDialog() {
return showSimulationResultDialog;
}
public void fireRefreshOutputStarted() { public void fireRefreshOutputStarted() {
outputRefreshListeners.forEach(l -> l.preRefresh()); outputRefreshListeners.forEach(l -> l.preRefresh());
} }
......
...@@ -437,9 +437,7 @@ public class ProjectView extends JFrame implements ProjectFinishedListener, Sing ...@@ -437,9 +437,7 @@ public class ProjectView extends JFrame implements ProjectFinishedListener, Sing
// Checkbox menu item to turn off result dialog of project run. // Checkbox menu item to turn off result dialog of project run.
mnFile.addSeparator(); mnFile.addSeparator();
boolean showDialogDefault = VadereConfig.getConfig() JCheckBoxMenuItem showResultDialogMenu = new JCheckBoxMenuItem(Messages.getString("ProjectView.mntmSimulationResult.text"), null, model.getShowSimulationResultDialog());
.getBoolean("Project.simulationResult.show", false);
JCheckBoxMenuItem showResultDialogMenu = new JCheckBoxMenuItem(Messages.getString("ProjectView.mntmSimulationResult.text"), null, showDialogDefault);
Action showResultDialogMenuAction = new ShowResultDialogAction(Messages.getString("ProjectView.mntmSimulationResult.text"), model, showResultDialogMenu); Action showResultDialogMenuAction = new ShowResultDialogAction(Messages.getString("ProjectView.mntmSimulationResult.text"), model, showResultDialogMenu);
showResultDialogMenu.setAction(showResultDialogMenuAction); showResultDialogMenu.setAction(showResultDialogMenuAction);
mnFile.add(showResultDialogMenu); mnFile.add(showResultDialogMenu);
......
...@@ -245,7 +245,7 @@ public class VadereConfig { ...@@ -245,7 +245,7 @@ public class VadereConfig {
defaultConfig.put("PostVis.maxNumberOfSaveDirectories", "5"); defaultConfig.put("PostVis.maxNumberOfSaveDirectories", "5");
defaultConfig.put("PostVis.maxFramePerSecond", "40"); defaultConfig.put("PostVis.maxFramePerSecond", "40");
defaultConfig.put("PostVis.framesPerSecond", "20"); defaultConfig.put("PostVis.framesPerSecond", "20");
defaultConfig.put("PostVis.visTimeStepLength", "0.1"); defaultConfig.put("PostVis.timeResolution", "0.4");
defaultConfig.put("PostVis.cellWidth", "1.0"); defaultConfig.put("PostVis.cellWidth", "1.0");
defaultConfig.put("PostVis.minCellWidth", "0.01"); defaultConfig.put("PostVis.minCellWidth", "0.01");
defaultConfig.put("PostVis.maxCellWidth", "10.0"); defaultConfig.put("PostVis.maxCellWidth", "10.0");
...@@ -259,6 +259,7 @@ public class VadereConfig { ...@@ -259,6 +259,7 @@ public class VadereConfig {
defaultConfig.put("ProjectView.defaultDirectoryAttributes", defaultSearchDirectory); defaultConfig.put("ProjectView.defaultDirectoryAttributes", defaultSearchDirectory);
defaultConfig.put("ProjectView.defaultDirectoryScenarios", defaultSearchDirectory); defaultConfig.put("ProjectView.defaultDirectoryScenarios", defaultSearchDirectory);
defaultConfig.put("ProjectView.defaultDirectoryOutputProcessors", defaultSearchDirectory); defaultConfig.put("ProjectView.defaultDirectoryOutputProcessors", defaultSearchDirectory);
defaultConfig.put("Project.simulationResult.show", "true");
defaultConfig.put("SettingsDialog.dataFormat", "yyyy_MM_dd_HH_mm_ss"); defaultConfig.put("SettingsDialog.dataFormat", "yyyy_MM_dd_HH_mm_ss");
defaultConfig.put("SettingsDialog.outputDirectory.path", "."); defaultConfig.put("SettingsDialog.outputDirectory.path", ".");
defaultConfig.put("SettingsDialog.snapshotDirectory.path", "."); defaultConfig.put("SettingsDialog.snapshotDirectory.path", ".");
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment