-
Notifications
You must be signed in to change notification settings - Fork 2
Node appearance の設定方法
Node appearance ファイルを使ってノードの表示スタイルを変更することが出来ます。
手順:
- プロパティファイルが存在するディレクトリに Node appearance ファイルを作成します。
- プロパティファイルに Node appearance の設定を追加します。
- JSON 形式で記述します。
- ルートの要素は配列です。その中に複数の連想配列を記述します。
- 連想配列には tag、2D_View、3D_View を記述し、これで一つの定義となります。
- tag には、この定義を適用するノードを決めるためのキーワードを設定します。このキーワードとノードタグが以下のルールで照合されます。
- キーワードが "文字列" の場合にはタグに "文字列" が含まれていれば該当します。(部分一致)
- キーワードが "/正規表現/" の場合にはタグがその正規表現とマッチすれば該当します。
- キーワードが "*" の場合にはタグなしを含むすべてに該当します。
- 2D_View には 2D シミュレーションビューアで使用するノードの表示スタイルを設定します。
- className にはクラス名を設定します。
- parameters には初期設定用のパラメータを設定します。
- 3D_View には 3D シミュレーションビューアで使用するノードの表示スタイルを設定します。
- className にはクラス名を設定します。
- parameters には初期設定用のパラメータを設定します。
- className に不適切な値を設定すると "Node appearance file error: invalid className" や "java.lang.ClassCastException" が発生して CrowdWalk がエラー終了します。
- 旧書式(タグ名: { 設定内容 })での記述は非推奨になりました。
className | 表示内容 | parameters | 値 | |
---|---|---|---|---|
2D_View | FixedScaleImageNode2D | 固定スケールで画像を原寸表示する (透過GIF/PNG対応) |
fileName | 画像ファイル名 (プロパティファイルのディレクトリからの相対パス) |
FixedScaleRoundNode2D | 固定スケールで丸を表示する | diameter | 直径(pixel) | |
color | 色名 | |||
transparency | 透明度(0.0~1.0) ※1.0 で完全に透明 |
|||
ImageNode2D | 画像を表示する (透過GIF/PNG対応) |
fileName | 画像ファイル名 (プロパティファイルのディレクトリからの相対パス) |
|
width | マップ上の画像の幅(m) | |||
height | マップ上の画像の高さ(m) | |||
InvisibleNode2D | 何も表示しない | |||
RoundNode2D | 丸を表示する | diameter | 直径(m) | |
color | 色名 | |||
transparency | 透明度(0.0~1.0) ※1.0 で完全に透明 |
|||
SquareNode2D | 正方形を表示する | sideLength | 辺の長さ(m) | |
color | 色名 | |||
transparency | 透明度(0.0~1.0) ※1.0 で完全に透明 |
|||
3D_View | ImageNode3D | 画像を表示する (透過GIF/PNG対応) |
fileName | 画像ファイル名 (プロパティファイルのディレクトリからの相対パス) |
width | マップ上の画像の幅(m) | |||
height | マップ上の画像の高さ(m) | |||
InvisibleNode3D | 何も表示しない | |||
RoundNode3D | 丸を表示する | diameter | 直径(m) | |
height | 厚さ(m) | |||
color | 色名 | |||
transparency | 透明度(0.0~1.0) ※1.0 で完全に透明 |
|||
SquareNode3D | 正方形を表示する | sideLength | 辺の長さ(m) | |
height | 厚さ(m) | |||
color | 色名 | |||
transparency | 透明度(0.0~1.0) ※1.0 で完全に透明 |
※colorパラメータに指定できる色名の種類:
BLACK, BLACK2, GRAY, GRAY2, LIGHTGRAY, RED, GREEN, BLUE, DARKBLUE, LIGHTBLUE, SLATEBLUE, TURQUOISE, YELLOW, WHITE, PINK, LIGHTB, APINK, ALIGHTB, ARED, PURPLE, PRED, BACKGROUND_3D_COLOR, DEFAULT_LINK_COLOR, DEFAULT_AGENT_COLOR
(2D_Viewと3D_Viewでは色味が少し異なります)
[
{
"tag" : "GOAL1",
"2D_View" : {
"className" : "ImageNode2D",
"parameters" : {
"fileName" : "goal.png",
"width" : 20.0,
"height" : 20.0
}
},
"3D_View" : {
"className" : "ImageNode3D",
"parameters" : {
"fileName" : "goal.png",
"width" : 20.0,
"height" : 20.0
}
}
},
{
"tag" : "GOAL2",
"2D_View" : {
"className" : "SquareNode2D",
"parameters" : {
"sideLength" : 1.5,
"color" : "BLUE",
"transparency" : 0.0
}
},
"3D_View" : {
"className" : "SquareNode3D",
"parameters" : {
"sideLength" : 1.5,
"height" : 0.1,
"color" : "BLUE",
"transparency" : 0.0
}
}
}
]
node_appearance_file 項目に Node appearance ファイルのパスを指定します。
"node_appearance_file" : "node_appearance.json",
標準形式で表示するための設定ファイルが "CrowdWalk/crowdwalk/src/main/resources/node_appearance.json" です。
Node appearance ファイルを使用しない場合、または使用しても適用されなかったノードには標準の設定が適用されます。
標準の設定ファイルの内容:
[
{
"tag" : "EXIT",
"2D_View" : {
"className" : "RoundNode2D",
"parameters" : {
"diameter" : 2.0,
"color" : "BLACK2",
"transparency" : 0.7
}
},
"3D_View" : {
"className" : "RoundNode3D",
"parameters" : {
"diameter" : 2.0,
"height" : 0.1,
"color" : "BLACK2",
"transparency" : 0.65
}
}
},
{
"tag" : "*",
"2D_View" : {
"className" : "InvisibleNode2D",
"parameters" : {}
},
"3D_View" : {
"className" : "InvisibleNode3D",
"parameters" : {}
}
}
]
2D_View のクラスは CrowdWalk/crowdwalk/src/main/java/nodagumi/ananPJ/Gui/NodeAppearance/view2d ディレクトリに、NodeViewBase2D のサブクラスとして作成します。
- 初期設定パラメータの解析は init() メソッドをオーバーライドして記述します。パラメータの読み取りは JsonicHashMapGetter クラスのメソッドでおこないます。
3D_View のクラスは CrowdWalk/crowdwalk/src/main/java/nodagumi/ananPJ/Gui/NodeAppearance/view3d ディレクトリに、NodeViewBase3D のサブクラスとして作成します。
- 初期設定パラメータの解析は init() メソッドをオーバーライドして記述します。パラメータの読み取りは JsonicHashMapGetter クラスのメソッドでおこないます。
新しくクラスを作成した時には "CrowdWalk/crowdwalk/src/main/resources/node_appearance_classes.json" に定義を加える必要があります。
{
"FixedScaleImageNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.FixedScaleImageNode2D",
"FixedScaleRoundNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.FixedScaleRoundNode2D",
"ImageNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.ImageNode2D",
"ImageNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.ImageNode3D",
"InvisibleNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.InvisibleNode2D",
"InvisibleNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.InvisibleNode3D",
"RoundNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.RoundNode2D",
"RoundNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.RoundNode3D",
"SquareNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.SquareNode2D",
"SquareNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.SquareNode3D"
}