Skip to content

Commit

Permalink
GUIの描画間隔を設定する機能を追加.
Browse files Browse the repository at this point in the history
display_interval
主には,スクリーンショット数を抑制する目的で追加した.
  • Loading branch information
tkmnet committed Jun 22, 2024
1 parent dee0007 commit adaf6e5
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 1 deletion.
1 change: 1 addition & 0 deletions crowdwalk/sample/generatedTown/gridTown00.prop.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"auto_simulation_start":false,
"_auto_simulation_start":true,
"_view_synchronized":true,
"display_interval": 1,

"mental_map_rules" :
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,10 @@ public static GuiSimulationLauncher createInstance(String className) {
protected String linkAppearanceFile = null;
/** ノード表示属性設定ファイル */
protected String nodeAppearanceFile = null;
/** ??? */
/** 地図画像タイルを取得するときの画像の詳細度(指定可能な値はソースによる) */
protected int gsiTileZoom = 14;
/** 描画間隔(スクリーンショットもこの間隔に従う) */
protected int displayInterval = 1;

/**
* 画像ファイルかどうかをファイル名の拡張子で判別するフィルタ
Expand Down Expand Up @@ -491,6 +493,7 @@ protected void initPropertyValues() {
linkAppearanceFile = null;
nodeAppearanceFile = null;
gsiTileZoom = 14;
displayInterval = 1;
}

/**
Expand Down Expand Up @@ -554,6 +557,10 @@ protected void setPropertiesForDisplay() {
exitWithSimulationFinished);
simulationPanelWidth = properties.getInteger("simulation_panel_width", simulationPanelWidth);
simulationPanelHeight = properties.getInteger("simulation_panel_height", simulationPanelHeight);
displayInterval = properties.getInteger("display_interval", displayInterval);
if (displayInterval < 1) {
displayInterval = 1;
}
} catch(Exception e) {
Itk.logFatal("Property file error", e.getMessage()) ;
Itk.quitByError() ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ public void run() {
* サイクル毎の画面描画
*/
public void updateEveryTick(SimTime currentTime) {
// 描画のスキップ
// [2024-06-22 S.Takami] ステップ実行時はステップ毎に描画するが,最終ステップは描画間隔に従う.
if (currentTime.getTickCount() % displayInterval != 0 && isRunning()) {
return;
}

// 表示の更新
simulationFrame.updateCamerawork(currentTime);
simulationFrame.panel.setUpdated(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ public void pauseRequest() {
* サイクル毎の画面描画
*/
public void updateEveryTick(final SimTime currentTime) {
// 描画のスキップ
// [2024-06-22 S.Takami] ステップ実行時はステップ毎に描画するが,最終ステップは描画間隔に従う.
if (currentTime.getTickCount() % displayInterval != 0 && isRunning()) {
return;
}

viewController.resume();
viewController.statusChanged("statusText", getStatusLine());
viewController.statusChanged("displayClock", currentTime);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1140,6 +1140,11 @@ public boolean updateEveryTick() {
/**
* シミュレーション遅延
*/
/* [2024-06-22 S.Takami]
* この実装は描画側で行うべき?
* とりあえず,CUIで止めたい可能性は無くはないかもしれないので保留.
* そのため,display_intervalを変更した場合にも,同じ時間待つことになる.
*/
private void deferSimulation() {
if (simulationDeferFactor > 0) {
try {
Expand Down

0 comments on commit adaf6e5

Please sign in to comment.