站台线路指示信息构建

This commit is contained in:
soul-walker 2024-04-27 10:02:45 +08:00
parent f2213efc26
commit 09da919c38
52 changed files with 1339 additions and 12 deletions

BIN
Assets/models/test.blend Normal file

Binary file not shown.

View File

@ -0,0 +1,50 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c8btaqbln1kwd"
path="res://.godot/imported/test.blend-9cb9e6c909d62d8f0f8f05f4d74d0854.scn"
[deps]
source_file="res://Assets/models/test.blend"
dest_files=["res://.godot/imported/test.blend-9cb9e6c909d62d8f0f8f05f4d74d0854.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1
blender/nodes/visible=0
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dcinlstcrnlwe"
path.s3tc="res://.godot/imported/116plsmoxingT.jpg-d8464435752d2c24f7aa375312d38dc5.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/116plsmoxingT.jpg"
dest_files=["res://.godot/imported/116plsmoxingT.jpg-d8464435752d2c24f7aa375312d38dc5.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://xbduj60kp0mc"
path.s3tc="res://.godot/imported/1225zhantai.jpg-2dcd1a4e68b8032cf9e617ed9ba014cc.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/1225zhantai.jpg"
dest_files=["res://.godot/imported/1225zhantai.jpg-2dcd1a4e68b8032cf9e617ed9ba014cc.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8ss2cf00sdtl"
path.s3tc="res://.godot/imported/2cengtietu_zst.png-f5ac87fe360ab0f857daa28f680f6e32.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/2cengtietu_zst.png"
dest_files=["res://.godot/imported/2cengtietu_zst.png-f5ac87fe360ab0f857daa28f680f6e32.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://4jkgrvsrckou"
path.s3tc="res://.godot/imported/DKL_PINGBIMENYAOSHI.jpg-6d90cad02b20128c1377664c03275d98.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/DKL_PINGBIMENYAOSHI.jpg"
dest_files=["res://.godot/imported/DKL_PINGBIMENYAOSHI.jpg-6d90cad02b20128c1377664c03275d98.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cj7w1o64d33v"
path.s3tc="res://.godot/imported/DKL_dimian111.jpg-f9fd1902fdc1f8542785ce3a764d06ec.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/DKL_dimian111.jpg"
dest_files=["res://.godot/imported/DKL_dimian111.jpg-f9fd1902fdc1f8542785ce3a764d06ec.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://oqjkw5m7guo4"
path.s3tc="res://.godot/imported/Gd_ZTM.jpg-8f56c957860c82ed05854280904ec31e.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/Gd_ZTM.jpg"
dest_files=["res://.godot/imported/Gd_ZTM.jpg-8f56c957860c82ed05854280904ec31e.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bnevqc3a83u41"
path.s3tc="res://.godot/imported/Gd_hzzx.jpg-aff173efdb312161978dad7e68df8f0b.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/Gd_hzzx.jpg"
dest_files=["res://.godot/imported/Gd_hzzx.jpg-aff173efdb312161978dad7e68df8f0b.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dm7k5pqc58np1"
path.s3tc="res://.godot/imported/QLS_qiangmian001.jpg-471b737787817974c1fbd0e975986db5.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/QLS_qiangmian001.jpg"
dest_files=["res://.godot/imported/QLS_qiangmian001.jpg-471b737787817974c1fbd0e975986db5.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cr31xe6dmfbdg"
path.s3tc="res://.godot/imported/dt12.png-2c59900a2026d53f024cf88e893751e0.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/dt12.png"
dest_files=["res://.godot/imported/dt12.png-2c59900a2026d53f024cf88e893751e0.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://brthvtln3vx67"
path.s3tc="res://.godot/imported/dt13.png-3755c4c3c6711530ab61e161f98b3ebb.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/dt13.png"
dest_files=["res://.godot/imported/dt13.png-3755c4c3c6711530ab61e161f98b3ebb.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://brmii43nh2t0g"
path.s3tc="res://.godot/imported/dt8dSF.jpg-744b30aa83e22f76787d141fc08c2638.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/dt8dSF.jpg"
dest_files=["res://.godot/imported/dt8dSF.jpg-744b30aa83e22f76787d141fc08c2638.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b51sgnuchv144"
path.s3tc="res://.godot/imported/dtcz01.jpg-3890d37c64a9e48d1f08fb1c6a8b75f9.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/dtcz01.jpg"
dest_files=["res://.godot/imported/dtcz01.jpg-3890d37c64a9e48d1f08fb1c6a8b75f9.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfx2djiufk6s4"
path.s3tc="res://.godot/imported/dtnb1.jpg-73a15ff53cde9544cfe346423b7d4835.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/dtnb1.jpg"
dest_files=["res://.godot/imported/dtnb1.jpg-73a15ff53cde9544cfe346423b7d4835.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0vikuryq3gct"
path.s3tc="res://.godot/imported/dtnb2.jpg-f9ad8cff028eec1cff23c9b0b0f152df.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/dtnb2.jpg"
dest_files=["res://.godot/imported/dtnb2.jpg-f9ad8cff028eec1cff23c9b0b0f152df.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d1v2dca3v85sf"
path.s3tc="res://.godot/imported/haerbin_jz_menkuangyanse87.png-3c3fd06023e4d858a98cf3bda2cb0e84.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/haerbin_jz_menkuangyanse87.png"
dest_files=["res://.godot/imported/haerbin_jz_menkuangyanse87.png-3c3fd06023e4d858a98cf3bda2cb0e84.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b6d6fd02ucux8"
path.s3tc="res://.godot/imported/haerbin_jz_wuzhanming.jpg-aa99dd7598808435618fa137216e48d0.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/haerbin_jz_wuzhanming.jpg"
dest_files=["res://.godot/imported/haerbin_jz_wuzhanming.jpg-aa99dd7598808435618fa137216e48d0.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8bg508ox0q5g"
path.s3tc="res://.godot/imported/xian3che_chezuo1_jz_z01.png-858e0634848f218d769e036a5bbf7dff.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/xian3che_chezuo1_jz_z01.png"
dest_files=["res://.godot/imported/xian3che_chezuo1_jz_z01.png-858e0634848f218d769e036a5bbf7dff.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dcaqavw4d642e"
path.s3tc="res://.godot/imported/xian3che_chezuo_jz_z01.png-39482a76c514f3e5678c0122b6659f5f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/xian3che_chezuo_jz_z01.png"
dest_files=["res://.godot/imported/xian3che_chezuo_jz_z01.png-39482a76c514f3e5678c0122b6659f5f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3gfdi87pgrbo"
path.s3tc="res://.godot/imported/xian3che_simoqi_jz_z032sf.jpg-0cb4f7824c5e113a06977773941845b6.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/models/textures/xian3che_simoqi_jz_z032sf.jpg"
dest_files=["res://.godot/imported/xian3che_simoqi_jz_z032sf.jpg-0cb4f7824c5e113a06977773941845b6.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

61
SiteInfo.gd Normal file
View File

@ -0,0 +1,61 @@
@tool
extends Node2D
## 圆条颜色
@export var stripColor: Color = Color.DARK_GRAY:
get:
return stripColor
set(v):
stripColor = v
update()
## 车站名颜色
@export var nameColor: Color = Color.WHITE:
get:
return nameColor
set(v):
nameColor = v
update()
## 车站名
@export var stationName: String = "车站一":
get:
return stationName
set(v):
stationName = v
update()
## 车站英文/拼音名
@export var stationEnName: String = "CHEZHANYI":
get:
return stationEnName
set(v):
stationEnName = v
update()
var isReady = false
func update():
if not isReady:
return
# 更新背景色
$Strip["theme_override_styles/panel"].bg_color = stripColor
$Circle["theme_override_styles/panel"].border_color = stripColor
# 更新文字颜色
%Name.label_settings.font_color = nameColor
%EnName.label_settings.font_color = nameColor
# 更新文字
%Name.text = stationName
%EnName.text = stationEnName
func calculateWidth() -> float:
assert(isReady, "需要先添加到节点树中才可用")
var nameWidth =%Name.get_combined_minimum_size().x* cos($VBoxContainer.rotation)
var enNameWidth =%EnName.get_combined_minimum_size().x* cos($VBoxContainer.rotation)
print(%Name.text,%Name.get_combined_minimum_size(), %EnName.text,%EnName.get_combined_minimum_size(),$VBoxContainer.rotation)
var w = nameWidth if nameWidth > enNameWidth else enNameWidth
return w + 5
func _ready():
print("site info ready")
isReady = true
update()

View File

@ -2,11 +2,25 @@
extends Node3D extends Node3D
@export_range(0.2, 20, 0.2) var repeat_times: float = 1 @export_range(0.2, 20, 0.2) var repeat_times: float = 1
@export_range(10, 200) var panel_width: float = 100
#get:
#return panel_width
#set(value):
#panel_width = value
#initial(panel_width, panel_height, repeat_times, station_names)
@export_range(1, 5) var panel_height: float = 2
@export var panel_color: Color = Color.WHITE
@export var station_names: Array[String] = []
func initial(panelWidth, panelHeight, repeat, stations):
var vp = $LabelTexture
#vp.set_clear_mode(SubViewport.CLEAR_MODE_ONCE)
$Plane.mesh.size.x = panelWidth
$Plane.mesh.size.y = panelHeight
$Plane.material_override.albedo_texture = vp.get_texture()
$Plane.material_override.uv1_scale = Vector3(repeat, 1, 1)
func _ready(): func _ready():
var vp = $LabelTexture initial(panel_width, panel_height, repeat_times, station_names)
vp.set_clear_mode(SubViewport.CLEAR_MODE_ONCE)
$Plane.material_override.albedo_texture = vp.get_texture()
$Plane.material_override.uv1_scale = Vector3(repeat_times, 1, 1)

View File

@ -3,21 +3,23 @@
[ext_resource type="Script" path="res://experiments/psd_panel.gd" id="1_wg3fd"] [ext_resource type="Script" path="res://experiments/psd_panel.gd" id="1_wg3fd"]
[ext_resource type="PackedScene" uid="uid://c5vvgu50akjwl" path="res://experiments/psd_panel_ui.tscn" id="2_rtht1"] [ext_resource type="PackedScene" uid="uid://c5vvgu50akjwl" path="res://experiments/psd_panel_ui.tscn" id="2_rtht1"]
[sub_resource type="ViewportTexture" id="ViewportTexture_lwjc8"] [sub_resource type="ViewportTexture" id="ViewportTexture_c5roc"]
viewport_path = NodePath("LabelTexture") viewport_path = NodePath("LabelTexture")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pbh8q"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pbh8q"]
albedo_texture = SubResource("ViewportTexture_lwjc8") albedo_texture = SubResource("ViewportTexture_c5roc")
uv1_scale = Vector3(5, 1, 1) uv1_scale = Vector3(4, 1, 1)
[sub_resource type="PlaneMesh" id="PlaneMesh_mfy0l"] [sub_resource type="PlaneMesh" id="PlaneMesh_mfy0l"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(100, 2) size = Vector2(45.948, 2)
orientation = 2 orientation = 2
[node name="PSD_Panel" type="Node3D"] [node name="PSD_Panel" type="Node3D"]
script = ExtResource("1_wg3fd") script = ExtResource("1_wg3fd")
repeat_times = 4.0 repeat_times = 4.0
panel_width = 131.533
station_names = null
[node name="LabelTexture" type="SubViewport" parent="."] [node name="LabelTexture" type="SubViewport" parent="."]
canvas_item_default_texture_repeat = 1 canvas_item_default_texture_repeat = 1

View File

@ -23,14 +23,14 @@ layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
theme_override_font_sizes/font_size = 36 theme_override_font_sizes/font_size = 36
text = "会展中心" text = "交通大学"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="EnName" type="Label" parent="VBoxContainer"] [node name="EnName" type="Label" parent="VBoxContainer"]
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_font_sizes/font_size = 20 theme_override_font_sizes/font_size = 20
text = "Exhibition Center" text = "JiaoTong Univercity"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="Container" type="Node2D" parent="."] [node name="Container" type="Node2D" parent="."]

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://4ygkabji3g16"] [gd_scene load_steps=6 format=3 uid="uid://4ygkabji3g16"]
[ext_resource type="PackedScene" uid="uid://bmiexmyoh0ehv" path="res://experiments/platform1.tscn" id="1_cq2ki"] [ext_resource type="PackedScene" uid="uid://bmiexmyoh0ehv" path="res://experiments/platform1.tscn" id="1_cq2ki"]
[ext_resource type="PackedScene" uid="uid://c8btaqbln1kwd" path="res://Assets/models/test.blend" id="1_vdsgb"]
[ext_resource type="PackedScene" uid="uid://crpmwcp85khdr" path="res://experiments/screen_door_t1.tscn" id="2_rvfj7"] [ext_resource type="PackedScene" uid="uid://crpmwcp85khdr" path="res://experiments/screen_door_t1.tscn" id="2_rvfj7"]
[ext_resource type="PackedScene" uid="uid://c63e3ugq35q5g" path="res://experiments/psd_panel.tscn" id="4_wjde3"] [ext_resource type="PackedScene" uid="uid://c63e3ugq35q5g" path="res://experiments/psd_panel.tscn" id="4_wjde3"]
@ -10,11 +11,16 @@ ambient_light_energy = 6.23
[node name="Node3D" type="Node3D"] [node name="Node3D" type="Node3D"]
[node name="test" parent="." instance=ExtResource("1_vdsgb")]
[node name="platform" parent="." instance=ExtResource("1_cq2ki")] [node name="platform" parent="." instance=ExtResource("1_cq2ki")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.16258, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.16258, 0)
visible = false
[node name="PSD_Panel" parent="." instance=ExtResource("4_wjde3")] [node name="PSD_Panel" parent="." instance=ExtResource("4_wjde3")]
transform = Transform3D(0.381944, 0, 0, 0, 0.381944, 0, 0, 0, 0.381944, 15.3792, 1.86346, -7.03252) transform = Transform3D(0.381944, 0, 0, 0, 0.381944, 0, 0, 0, 0.381944, 15.3792, 1.86346, -7.03252)
visible = false
station_names = Array[String]([])
[node name="screenDoor" parent="." instance=ExtResource("2_rvfj7")] [node name="screenDoor" parent="." instance=ExtResource("2_rvfj7")]
@ -26,8 +32,8 @@ transform = Transform3D(0.775947, 2.3125e-07, -0.630798, 0.387003, 0.789684, 0.4
light_energy = 4.962 light_energy = 4.962
[node name="Camera3D" type="Camera3D" parent="."] [node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.92041, 0.390956, 0, -0.390956, 0.92041, 4.25592, 2.82422, -2.07876) transform = Transform3D(1, 0, 0, 0, 0.948246, 0.317536, 0, -0.317536, 0.948246, 1.07512, 3.22131, -0.904984)
projection = 1 projection = 1
current = true current = true
fov = 23.7 fov = 23.7
size = 4.56913 size = 5.357

View File

@ -0,0 +1,91 @@
#@tool
extends Node3D
## 面板宽度,单位(m)
@export_range(1, 10) var panelWidth: float = 3:
get:
return panelWidth
set(v):
panelWidth = v
update()
## 面板高度,单位(m)
@export_range(0.1, 5) var panelHeight: float = 1:
get:
return panelHeight
set(v):
panelHeight = v
update()
## 面板背景色
@export var bgColor: Color = Color.DARK_GRAY:
get:
return bgColor
set(v):
bgColor = v
update()
## 装饰条颜色
@export var stripColor: Color = Color.DARK_GREEN:
get:
return stripColor
set(v):
stripColor = v
update()
## 是否显示线路信息
@export var lineInfoShow: bool = true:
get:
return lineInfoShow
set(v):
lineInfoShow = v
update()
## 线路信息背景色
@export var lineInfoBgColor: Color = Color.DARK_GREEN:
get:
return lineInfoBgColor
set(v):
lineInfoBgColor = v
update()
## 线路号
@export_range(1, 40) var lineNumber: int = 1:
get:
return lineNumber
set(v):
lineNumber = v
update()
## 车站名称
@export var stationName: String = "车站一":
get:
return stationName
set(v):
stationName = v
update()
## 车站英文/拼音名称
@export var stationEnName: String = "CHEZHANYI":
get:
return stationEnName
set(v):
stationEnName = v
update()
var isReady: bool = false
func update():
if not isReady:
return
$SubViewport/CurrentStationPanelContent.bgColor = bgColor
$SubViewport/CurrentStationPanelContent.stripColor = stripColor
$SubViewport/CurrentStationPanelContent.lineInfoShow = lineInfoShow
$SubViewport/CurrentStationPanelContent.lineInfoBgColor = lineInfoBgColor
$SubViewport/CurrentStationPanelContent.lineNumber = lineNumber
$SubViewport/CurrentStationPanelContent.stationName = stationName
$SubViewport/CurrentStationPanelContent.stationEnName = stationEnName
var vp = $SubViewport
$Plane.mesh.size.x = panelWidth
$Plane.mesh.size.y = panelHeight
$Plane.material_override.albedo_texture = vp.get_texture()
func _ready():
isReady = true
print("csPanel ready")
update()

View File

@ -0,0 +1,25 @@
[gd_scene load_steps=5 format=3 uid="uid://cgu3hl1db2sgn"]
[ext_resource type="Script" path="res://station_info_panel/style1/current_station_panel.gd" id="1_farda"]
[ext_resource type="PackedScene" uid="uid://cnc8yp8xdrm00" path="res://station_info_panel/style1/current_station_panel_content.tscn" id="2_v131p"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hypnq"]
[sub_resource type="PlaneMesh" id="PlaneMesh_xu5kk"]
size = Vector2(5.189, 1.459)
orientation = 2
[node name="CurrentStationPanel" type="Node3D"]
script = ExtResource("1_farda")
panelWidth = 5.189
panelHeight = 1.459
[node name="SubViewport" type="SubViewport" parent="."]
size = Vector2i(1024, 256)
[node name="CurrentStationPanelContent" parent="SubViewport" instance=ExtResource("2_v131p")]
bgColor = Color(0.662745, 0.662745, 0.662745, 1)
[node name="Plane" type="MeshInstance3D" parent="."]
material_override = SubResource("StandardMaterial3D_hypnq")
mesh = SubResource("PlaneMesh_xu5kk")

View File

@ -0,0 +1,82 @@
#@tool
extends Node2D
## 面板背景色
@export var bgColor: Color = Color.DARK_GRAY:
get:
return bgColor
set(v):
bgColor = v
update()
## 装饰条颜色
@export var stripColor: Color = Color.DARK_GREEN:
get:
return stripColor
set(v):
stripColor = v
update()
## 是否显示线路信息
@export var lineInfoShow: bool = true:
get:
return lineInfoShow
set(v):
lineInfoShow = v
update()
## 线路信息背景色
@export var lineInfoBgColor: Color = Color.DARK_GREEN:
get:
return lineInfoBgColor
set(v):
lineInfoBgColor = v
update()
## 线路号
@export_range(1, 40) var lineNumber: int = 1:
get:
return lineNumber
set(v):
lineNumber = v
update()
## 车站名称
@export var stationName: String = "车站一":
get:
return stationName
set(v):
stationName = v
update()
## 车站英文/拼音名称
@export var stationEnName: String = "CHEZHANYI":
get:
return stationEnName
set(v):
stationEnName = v
update()
var isReady: bool = false
func update():
if not isReady:
return
# 更新背景色
$Bg["theme_override_styles/panel"].bg_color = bgColor
# 装饰条颜色
$Bg/Strip["theme_override_styles/panel"].color = stripColor
$Bg/Strip2["theme_override_styles/panel"].color = stripColor
# 控制线路显示
if lineInfoShow:
$LineInfo["theme_override_styles/panel"].bg_color = lineInfoBgColor
var lns = str(lineNumber)
%LineNumber.text = lns
%LineNumber2.text = lns
$LineInfo.show()
else:
$LineInfo.hide()
# 车站名称
%StationName.text = stationName
%EnName.text = stationEnName
func _ready():
isReady = true
print("csPanel content ready")
update()

View File

@ -0,0 +1,134 @@
[gd_scene load_steps=7 format=3 uid="uid://cnc8yp8xdrm00"]
[ext_resource type="Script" path="res://station_info_panel/style1/current_station_panel_content.gd" id="1_wspij"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wec8e"]
bg_color = Color(0.662745, 0.662745, 0.662745, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0, 0, 0, 1)
[sub_resource type="StyleBoxLine" id="StyleBoxLine_vsvkd"]
color = Color(0, 0.392157, 0, 1)
thickness = 24
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_iudvd"]
bg_color = Color(0, 0.392157, 0, 1)
border_width_left = 3
border_width_top = 3
border_width_right = 3
border_width_bottom = 3
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
expand_margin_left = 5.0
expand_margin_top = 5.0
expand_margin_right = 5.0
expand_margin_bottom = 5.0
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_sehtn"]
content_margin_top = 25.0
[sub_resource type="SystemFont" id="SystemFont_bllij"]
subpixel_positioning = 0
[node name="CurrentStationPanelContent" type="Node2D"]
script = ExtResource("1_wspij")
[node name="Bg" type="Panel" parent="."]
offset_right = 1024.0
offset_bottom = 300.0
theme_override_styles/panel = SubResource("StyleBoxFlat_wec8e")
[node name="Strip" type="Panel" parent="Bg"]
layout_mode = 0
offset_left = 3.0
offset_top = 100.0
offset_right = 223.0
offset_bottom = 124.0
theme_override_styles/panel = SubResource("StyleBoxLine_vsvkd")
[node name="Strip2" type="Panel" parent="Bg"]
layout_mode = 0
offset_left = 801.0
offset_top = 100.0
offset_right = 1021.0
offset_bottom = 124.0
theme_override_styles/panel = SubResource("StyleBoxLine_vsvkd")
[node name="LineInfo" type="PanelContainer" parent="."]
custom_minimum_size = Vector2(100, 60)
offset_left = 16.0
offset_top = 16.0
offset_right = 116.0
offset_bottom = 76.0
theme_override_styles/panel = SubResource("StyleBoxFlat_iudvd")
[node name="HBoxContainer" type="HBoxContainer" parent="LineInfo"]
layout_mode = 2
alignment = 1
[node name="LineNumber" type="Label" parent="LineInfo/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 0
theme_override_font_sizes/font_size = 48
text = "1"
[node name="VBoxContainer" type="VBoxContainer" parent="LineInfo/HBoxContainer"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="LineInfo/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_top = 7
[node name="Label" type="Label" parent="LineInfo/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 18
text = "号线"
horizontal_alignment = 1
vertical_alignment = 2
[node name="LineEn" type="HBoxContainer" parent="LineInfo/HBoxContainer/VBoxContainer"]
layout_mode = 2
[node name="Label2" type="Label" parent="LineInfo/HBoxContainer/VBoxContainer/LineEn"]
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "Line"
[node name="LineNumber2" type="Label" parent="LineInfo/HBoxContainer/VBoxContainer/LineEn"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "1"
[node name="PanelContainer" type="PanelContainer" parent="."]
offset_left = 200.0
offset_top = 42.0
offset_right = 824.0
offset_bottom = 202.0
size_flags_horizontal = 4
theme_override_styles/panel = SubResource("StyleBoxEmpty_sehtn")
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
[node name="StationName" type="Label" parent="PanelContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_fonts/font = SubResource("SystemFont_bllij")
theme_override_font_sizes/font_size = 56
text = "车站一"
horizontal_alignment = 1
vertical_alignment = 2
[node name="EnName" type="Label" parent="PanelContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "CHEZHANYI"
horizontal_alignment = 1

View File

@ -0,0 +1,91 @@
[gd_scene load_steps=8 format=3 uid="uid://dbun083kn0oom"]
[ext_resource type="Script" path="res://SiteInfo.gd" id="1_x2sr2"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_flnbk"]
bg_color = Color(0, 1, 1, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j0fnk"]
bg_color = Color(1, 1, 1, 1)
border_width_left = 7
border_width_top = 7
border_width_right = 7
border_width_bottom = 7
border_color = Color(0, 1, 1, 1)
corner_radius_top_left = 40
corner_radius_top_right = 40
corner_radius_bottom_right = 40
corner_radius_bottom_left = 40
[sub_resource type="SystemFont" id="SystemFont_7obcg"]
[sub_resource type="LabelSettings" id="LabelSettings_6l0vq"]
font = SubResource("SystemFont_7obcg")
font_size = 20
font_color = Color(0, 0, 1, 1)
[sub_resource type="SystemFont" id="SystemFont_ys3vy"]
[sub_resource type="LabelSettings" id="LabelSettings_uy188"]
font = SubResource("SystemFont_ys3vy")
font_size = 11
font_color = Color(0, 0, 1, 1)
[node name="SiteInfo" type="Node2D"]
script = ExtResource("1_x2sr2")
stripColor = Color(0, 0.788235, 0.482353, 1)
stationName = "北客站北广场"
stationEnName = "DATANGFURONGYUAN"
[node name="Strip" type="Panel" parent="."]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -3.5
offset_right = 3.5
offset_bottom = 34.0
grow_horizontal = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_flnbk")
metadata/_edit_use_anchors_ = true
[node name="Circle" type="Panel" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -17.0
offset_top = -15.0
offset_right = 17.0
offset_bottom = 19.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_j0fnk")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
offset_left = 10.0
offset_top = 38.0
offset_right = 67.0
offset_bottom = 78.0
rotation = 0.909087
size_flags_horizontal = 6
theme_override_constants/separation = -4
[node name="Name" type="Label" parent="VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "北客站北广场"
label_settings = SubResource("LabelSettings_6l0vq")
vertical_alignment = 2
[node name="EnName" type="Label" parent="VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "DATANGFURONGYUAN"
label_settings = SubResource("LabelSettings_uy188")
[node name="Panel" type="Panel" parent="."]
offset_left = -2.0
offset_top = -10.0
offset_right = 71.0
offset_bottom = 190.0

View File

@ -0,0 +1,56 @@
@tool
extends Node2D
## 从左到右/从右到左
@export var leftToRight: bool = true:
get:
return leftToRight
set(v):
leftToRight = v
update()
## 车站列表
@export var stations: Array[String] = ["车站一|CHEZHANYI"]:
get:
return stations
set(v):
stations = v
assert(stations.size() > 0, "车站列表不能为空")
for s in stations:
assert(s.split("|").size() == 2, "车站名格式:'车站名|车站英文名'")
update()
## 当前车站索引
@export var currentStationIndex: int = 0:
get:
return currentStationIndex
set(v):
currentStationIndex = v
update()
@onready var siteInfoScene: PackedScene = preload("res://station_info_panel/style1/site_info.tscn")
var isReady = false
func update():
if not isReady:
return
for c in $Sites.get_children():
c.free()
var size = stations.size()
var s = stations[0]
var sns = s.split("|")
var sis = siteInfoScene.instantiate()
sis.stationName = sns[0]
sis.stationEnName = sns[1]
sis.stripColor = Color.AQUA
sis.nameColor = Color.BLUE
$Sites.add_child(sis)
var w = sis.calculateWidth()
print(w)
#for i in stations.size():
func _ready():
isReady = true
update()

View File

@ -0,0 +1,50 @@
[gd_scene load_steps=5 format=3 uid="uid://dsv55hv2sr7hd"]
[ext_resource type="Script" path="res://station_info_panel/style1/site_panel.gd" id="1_fjyyy"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_48edc"]
bg_color = Color(0.941176, 0.466667, 0.788235, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0, 0, 0, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dmayk"]
bg_color = Color(0.113725, 0.470588, 0.113725, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ve86j"]
bg_color = Color(0.47451, 0.47451, 0.47451, 1)
[node name="SitePanel" type="Node2D"]
script = ExtResource("1_fjyyy")
stations = Array[String](["北客站北广场|BEIKEZHAN"])
[node name="Bg" type="Panel" parent="."]
offset_right = 1450.0
offset_bottom = 350.0
theme_override_styles/panel = SubResource("StyleBoxFlat_48edc")
[node name="Unfinished" type="Panel" parent="Bg"]
layout_mode = 0
offset_left = 3.0
offset_top = 100.0
offset_right = 223.0
offset_bottom = 120.0
theme_override_styles/panel = SubResource("StyleBoxFlat_dmayk")
[node name="Finished" type="Panel" parent="Bg"]
layout_mode = 0
offset_left = 500.0
offset_top = 100.0
offset_right = 720.0
offset_bottom = 120.0
theme_override_styles/panel = SubResource("StyleBoxFlat_ve86j")
[node name="Sites" type="Control" parent="."]
layout_mode = 3
anchors_preset = 0
offset_left = 176.0
offset_top = 110.0
offset_right = 216.0
offset_bottom = 150.0