Compare commits
No commits in common. "80b8b8e9cbd24ea1fcd91272f6f031ac4329838e" and "4a862d86f28140db119e3a8c767de8faa2469bb4" have entirely different histories.
80b8b8e9cb
...
4a862d86f2
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cv2r7m0hmnisc"
|
||||
path="res://.godot/imported/Character 1.png-afa71f25195fe20689a64e6896ff56b2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 10/Character 1.png"
|
||||
dest_files=["res://.godot/imported/Character 1.png-afa71f25195fe20689a64e6896ff56b2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://xrx3mkswyhk4"
|
||||
path="res://.godot/imported/Character 5.png-2b102d72ea782d4f72ce3fce7ecfa309.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 11/Character 5.png"
|
||||
dest_files=["res://.godot/imported/Character 5.png-2b102d72ea782d4f72ce3fce7ecfa309.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://kcn0es7aibn4"
|
||||
path="res://.godot/imported/Character 9.png-20b7ff0c0e8caf229c2cea9f835a1f8d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 12/Character 9.png"
|
||||
dest_files=["res://.godot/imported/Character 9.png-20b7ff0c0e8caf229c2cea9f835a1f8d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://be58der6eox0y"
|
||||
path="res://.godot/imported/Character 1.png-209e9f7c016381e65e33e09edba9e5de.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 13/Character 1.png"
|
||||
dest_files=["res://.godot/imported/Character 1.png-209e9f7c016381e65e33e09edba9e5de.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c18h6nl2eqv4v"
|
||||
path="res://.godot/imported/Character 5.png-ad7ac62347d04df7ee7d4fcd21e4e771.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 14/Character 5.png"
|
||||
dest_files=["res://.godot/imported/Character 5.png-ad7ac62347d04df7ee7d4fcd21e4e771.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d4i08l3xoatx8"
|
||||
path="res://.godot/imported/Character 9.png-5b1e15ebb431bf03e562398622a5152e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 15/Character 9.png"
|
||||
dest_files=["res://.godot/imported/Character 9.png-5b1e15ebb431bf03e562398622a5152e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cfhywvi6gyamp"
|
||||
path="res://.godot/imported/Character 1.png-b4f39778f948e4e2dbca58389e93669a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 16/Character 1.png"
|
||||
dest_files=["res://.godot/imported/Character 1.png-b4f39778f948e4e2dbca58389e93669a.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://0t14tbvjtdod"
|
||||
path="res://.godot/imported/Character 5.png-977d6613e9cbe32dc9f227d9102222bd.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 17/Character 5.png"
|
||||
dest_files=["res://.godot/imported/Character 5.png-977d6613e9cbe32dc9f227d9102222bd.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b2ngs6wkiurmt"
|
||||
path="res://.godot/imported/Character 9.png-f6fe7a2a6b78344a902e4c0b1b9f52a0.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 18/Character 9.png"
|
||||
dest_files=["res://.godot/imported/Character 9.png-f6fe7a2a6b78344a902e4c0b1b9f52a0.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://drbtkux8n3h8w"
|
||||
path="res://.godot/imported/Character 5.png-8a54a65555fe02b1dd97b584bda1bcf6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 2/Character 5.png"
|
||||
dest_files=["res://.godot/imported/Character 5.png-8a54a65555fe02b1dd97b584bda1bcf6.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dqxsaoeb5kcxp"
|
||||
path="res://.godot/imported/Character 9.png-74e2e4f30d4ba14105d6327336b9b462.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 3/Character 9.png"
|
||||
dest_files=["res://.godot/imported/Character 9.png-74e2e4f30d4ba14105d6327336b9b462.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d0cpr4umsndgf"
|
||||
path="res://.godot/imported/Character 1.png-2b4ef941ba65061b5eebeac703ac3820.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 4/Character 1.png"
|
||||
dest_files=["res://.godot/imported/Character 1.png-2b4ef941ba65061b5eebeac703ac3820.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d38rvmky1mr5f"
|
||||
path="res://.godot/imported/Character 5.png-e8c35410fad61c8e0b57612479895096.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 5/Character 5.png"
|
||||
dest_files=["res://.godot/imported/Character 5.png-e8c35410fad61c8e0b57612479895096.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://5iec1dqk4bjb"
|
||||
path="res://.godot/imported/Character 9.png-7a71dddd0f7aef1237f36ab212a848b2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 6/Character 9.png"
|
||||
dest_files=["res://.godot/imported/Character 9.png-7a71dddd0f7aef1237f36ab212a848b2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 59 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1ljb3kglrv0r"
|
||||
path="res://.godot/imported/Character 1.png-b7d909154284d14dd22087f3dfde5ab2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 7/Character 1.png"
|
||||
dest_files=["res://.godot/imported/Character 1.png-b7d909154284d14dd22087f3dfde5ab2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ce8r6xxay7wsw"
|
||||
path="res://.godot/imported/Character 5.png-0cdabda1dede22b4155356897bbbec69.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 8/Character 5.png"
|
||||
dest_files=["res://.godot/imported/Character 5.png-0cdabda1dede22b4155356897bbbec69.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://5hg6qondjuyt"
|
||||
path="res://.godot/imported/Character 9.png-af1d6ab822dbafdecf429ee5a3ef55cc.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 9/Character 9.png"
|
||||
dest_files=["res://.godot/imported/Character 9.png-af1d6ab822dbafdecf429ee5a3ef55cc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 808 KiB |
|
Before Width: | Height: | Size: 463 KiB |
|
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://uptdcefxlv4c"
|
||||
path="res://.godot/imported/ppdf_bio_image_placeholder_2.png-95efb56131d6f4393fe011f7f38695e5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Icones/ppdf_bio_image_placeholder_2.png"
|
||||
dest_files=["res://.godot/imported/ppdf_bio_image_placeholder_2.png-95efb56131d6f4393fe011f7f38695e5.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
BIN
Assets/Skybox/Van_Gogh_-_Starry_Night_skybox.png
Normal file
|
After Width: | Height: | Size: 41 MiB |
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://db2efj41fwjee"
|
||||
path.s3tc="res://.godot/imported/Character 1.png-87cd2704255318e889e8123eb8b19238.s3tc.ctex"
|
||||
uid="uid://cdqch4xk2sner"
|
||||
path.s3tc="res://.godot/imported/Van_Gogh_-_Starry_Night_skybox.png-d81a74db678abe046adf1d1b3fe33c86.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
|
|
@ -11,8 +11,8 @@ metadata={
|
|||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Characters/72 Character Free/Char 1/Character 1.png"
|
||||
dest_files=["res://.godot/imported/Character 1.png-87cd2704255318e889e8123eb8b19238.s3tc.ctex"]
|
||||
source_file="res://Assets/Skybox/Van_Gogh_-_Starry_Night_skybox.png"
|
||||
dest_files=["res://.godot/imported/Van_Gogh_-_Starry_Night_skybox.png-d81a74db678abe046adf1d1b3fe33c86.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
|
@ -11,7 +11,7 @@ signal tower_selected(tower : PackedScene, tower_button : TowerButton)
|
|||
signal tower_builded(tower : PackedScene)
|
||||
|
||||
|
||||
#Emitter : UpgradeButton.gd
|
||||
#Emitter :
|
||||
#Subscriber : tower.gd
|
||||
signal tower_upgraded(tower_to_upgrade : String, upgrade : TowerUpgrade)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,7 @@
|
|||
extends Node3D
|
||||
|
||||
#TODO Get rid of tower_blueprint, remake player controler
|
||||
@onready var tower_blueprint = preload("res://Towers/tower.tscn")
|
||||
|
||||
|
||||
@onready var selected_tower : Tower
|
||||
@onready var selected_tower_button : TowerButton = $CanvasLayer/GameMenu/VBoxContainer/PierreButton
|
||||
@onready var selected_tower_button : TowerButton = $CanvasLayer/UI/ShopPanel/VBoxContainer/PierreButton
|
||||
|
||||
@onready var cam : Camera3D = $Camera3D
|
||||
@onready var selector : Node3D = $Selector
|
||||
|
|
@ -31,7 +27,7 @@ var selected_collider : CollisionObject3D
|
|||
|
||||
func _ready() -> void:
|
||||
$Spawner.spawn_next_wave()
|
||||
$CanvasLayer/GameMenu.visible = in_build_menu
|
||||
$CanvasLayer/UI/ShopPanel.visible = in_build_menu
|
||||
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
|
||||
|
||||
|
||||
|
|
@ -113,7 +109,7 @@ func build_tower(scene : PackedScene) -> void:
|
|||
EventBus.money_spent.emit(temp_tower.price)
|
||||
temp_tower.tower_button = selected_tower_button
|
||||
tower_count += 1
|
||||
$Towers.add_child(temp_tower)
|
||||
add_child(temp_tower)
|
||||
EventBus.tower_builded.emit(temp_tower)
|
||||
selected_tower_button.tower_in_game = temp_tower
|
||||
send_to_action(temp_tower)
|
||||
|
|
@ -144,13 +140,13 @@ func open_shop():
|
|||
return
|
||||
|
||||
in_build_menu = true
|
||||
$CanvasLayer/GameMenu.visible = in_build_menu
|
||||
$CanvasLayer/UI/ShopPanel.visible = in_build_menu
|
||||
|
||||
|
||||
|
||||
func close_shop():
|
||||
in_build_menu = false
|
||||
$CanvasLayer/GameMenu.visible = in_build_menu
|
||||
$CanvasLayer/UI/ShopPanel.visible = in_build_menu
|
||||
|
||||
|
||||
func _on_EventBus_tower_selected(tower : PackedScene, tower_button : TowerButton):
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=18 format=3 uid="uid://ky0uewndeuwv"]
|
||||
[gd_scene load_steps=17 format=3 uid="uid://ky0uewndeuwv"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://Levels/world.gd" id="1_fj7yv"]
|
||||
[ext_resource type="PackedScene" uid="uid://d1f6m15niwgt" path="res://Tiles/tile.tscn" id="3_aqk2v"]
|
||||
|
|
@ -8,25 +8,33 @@
|
|||
[ext_resource type="PackedScene" uid="uid://dpjfo15otkfru" path="res://Tiles/cube.tscn" id="5_wse8f"]
|
||||
[ext_resource type="Script" uid="uid://chu8s12rtdeqx" path="res://Scripts/Wave.gd" id="6_gbfbk"]
|
||||
[ext_resource type="Resource" uid="uid://dkbuy7fetnihs" path="res://Waves/wave_1.tres" id="7_ioo17"]
|
||||
[ext_resource type="PackedScene" uid="uid://djyye2otjju2d" path="res://game_menu.tscn" id="9_44brb"]
|
||||
[ext_resource type="PackedScene" uid="uid://c54881eookjth" path="res://Assets/Meshes/SM_B26.glb" id="12_44brb"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbx8ow3v45k4k" path="res://UI/ui.tscn" id="9_ioo17"]
|
||||
[ext_resource type="Texture2D" uid="uid://cdqch4xk2sner" path="res://Assets/Skybox/Van_Gogh_-_Starry_Night_skybox.png" id="9_k3n1d"]
|
||||
[ext_resource type="PackedScene" uid="uid://p6a6rb7sgeqd" path="res://UI/gui.tscn" id="11_ic0uy"]
|
||||
[ext_resource type="Script" uid="uid://xkk2pxkrwsq8" path="res://bullet_container.gd" id="12_k3n1d"]
|
||||
[ext_resource type="PackedScene" uid="uid://dxeb1kk5ieix2" path="res://Assets/Meshes/SM_MiniHouse.glb" id="13_ju8gl"]
|
||||
[ext_resource type="PackedScene" uid="uid://3u5ds5imu6d7" path="res://Assets/Meshes/SM_Minoterie.glb" id="14_4eob5"]
|
||||
[ext_resource type="PackedScene" uid="uid://trsvfgyds26p" path="res://Assets/Meshes/SM_Polyson.glb" id="15_ikoig"]
|
||||
[ext_resource type="PackedScene" uid="uid://c8qg6bkxv643o" path="res://Assets/Meshes/SM_Studio24.glb" id="16_ju8gl"]
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_aqk2v"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 1.212, -0.5, 0.5, 0, 0, 0, 0, 0, 0, 9.787, -0.5, 0.5),
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 1.21236, 0, 0.534171, 0, 0, 0, 0, 0, 0, 9.78741, 0, 0.534171),
|
||||
"tilts": PackedFloat32Array(0, 0)
|
||||
}
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_2o6r5"]
|
||||
panorama = ExtResource("9_k3n1d")
|
||||
energy_multiplier = 0.5
|
||||
|
||||
[sub_resource type="Sky" id="Sky_70uel"]
|
||||
sky_material = SubResource("PanoramaSkyMaterial_2o6r5")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_036b0"]
|
||||
background_mode = 1
|
||||
background_color = Color(0.924338, 0.849272, 0.847318, 1)
|
||||
background_mode = 2
|
||||
background_color = Color(0.298412, 0.776976, 0.672082, 1)
|
||||
sky = SubResource("Sky_70uel")
|
||||
sky_custom_fov = 90.0
|
||||
sky_rotation = Vector3(0, 0, 0.785398)
|
||||
ambient_light_source = 3
|
||||
ambient_light_color = Color(0.28519, 0.478909, 0.608112, 1)
|
||||
tonemap_white = 0.3
|
||||
volumetric_fog_density = 0.02
|
||||
volumetric_fog_albedo = Color(1, 1, 2, 1)
|
||||
|
|
@ -39,7 +47,7 @@ adjustment_saturation = 1.2
|
|||
script = ExtResource("1_fj7yv")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(-0.992981, -0.0586822, 0.10269, -0.00234758, 0.877843, 0.478943, -0.118251, 0.47534, -0.871819, 5.87173, 2.81458, -3.88415)
|
||||
transform = Transform3D(-3.90165e-08, -0.228368, 0.973575, 1.97078e-08, 0.973575, 0.228368, -1, 2.80972e-08, -3.34849e-08, 11.3374, 2.49219, 0.496601)
|
||||
|
||||
[node name="Selector" parent="." instance=ExtResource("3_tlwt5")]
|
||||
visible = false
|
||||
|
|
@ -155,7 +163,7 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 9.5, 0
|
|||
|
||||
[node name="TheCube" parent="Map" instance=ExtResource("5_wse8f")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 10.1496, 0.209118, 0.497613)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.1496, 0.209118, 0.497613)
|
||||
|
||||
[node name="Spawner" type="Path3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
|
|
@ -169,34 +177,20 @@ waves = Array[ExtResource("6_gbfbk")]([ExtResource("7_ioo17")])
|
|||
environment = SubResource("Environment_036b0")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.0532597, 0.998581, 0, -0.998581, 0.0532597, 0, 4, 6)
|
||||
transform = Transform3D(1, 0, 0, 0, 0.258819, 0.965926, 0, -0.965926, 0.258819, 0, 4, 6)
|
||||
light_energy = 0.0
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="GameMenu" parent="CanvasLayer" instance=ExtResource("9_44brb")]
|
||||
visible = false
|
||||
[node name="UI" parent="CanvasLayer" instance=ExtResource("9_ioo17")]
|
||||
|
||||
[node name="GUI" parent="CanvasLayer/UI" instance=ExtResource("11_ic0uy")]
|
||||
layout_mode = 1
|
||||
|
||||
[node name="BulletContainer" type="Node3D" parent="."]
|
||||
script = ExtResource("12_k3n1d")
|
||||
|
||||
[node name="Props" type="Node3D" parent="."]
|
||||
|
||||
[node name="SM_B26" parent="Props" instance=ExtResource("12_44brb")]
|
||||
transform = Transform3D(-1.99902, 0, -0.0625423, 0, 2, 0, 0.0625423, 0, -1.99902, -1.30633, 0, 0.0903215)
|
||||
|
||||
[node name="SM_MiniHouse" parent="Props" instance=ExtResource("13_ju8gl")]
|
||||
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 3.71264, 0, 2.59755)
|
||||
|
||||
[node name="SM_Minoterie" parent="Props" instance=ExtResource("14_4eob5")]
|
||||
transform = Transform3D(0.0377317, 0, 1.99964, 0, 2, 0, -1.99964, 0, 0.0377317, 6.07778, 0, 3.52353)
|
||||
|
||||
[node name="SM_Polyson" parent="Props" instance=ExtResource("15_ikoig")]
|
||||
transform = Transform3D(-0.0471892, 0, 1.99944, 0, 2, 0, -1.99944, 0, -0.0471892, 9.34047, 0, 3.1498)
|
||||
|
||||
[node name="SM_Studio24" parent="Props" instance=ExtResource("16_ju8gl")]
|
||||
transform = Transform3D(1.08365, 0, 1.68098, 0, 2, 0, -1.68098, 0, 1.08365, 1.44235, 0, 4.63481)
|
||||
|
||||
[node name="Towers" type="Node3D" parent="."]
|
||||
|
||||
[connection signal="timeout" from="Spawner/SpawnTimer" to="Spawner" method="_on_spawn_timer_timeout"]
|
||||
|
||||
[editable path="CanvasLayer/UI"]
|
||||
[editable path="CanvasLayer/UI/GUI"]
|
||||
|
|
|
|||
|
|
@ -3,5 +3,3 @@ class_name Upgrade
|
|||
|
||||
@export var icon : Texture2D = preload("res://Assets/Icones/medal2.png")
|
||||
@export var text : String = "Upgrade"
|
||||
|
||||
var condition : Upgrade
|
||||
|
|
|
|||
|
|
@ -46,34 +46,10 @@ var is_rest : bool = false:
|
|||
else:
|
||||
in_action()
|
||||
|
||||
@export_category("Upgrades")
|
||||
|
||||
var tower_upgrades : Array[TowerUpgrade]
|
||||
@export var tower_shop : Array[TowerUpgrade]
|
||||
|
||||
|
||||
func get_available_upgrades() -> Array[TowerUpgrade]:
|
||||
var available_upgrades : Array[TowerUpgrade]
|
||||
#Check every upgrades in shop
|
||||
for shop_upgrade in tower_shop:
|
||||
#If they have no conditions, they are available
|
||||
if shop_upgrade.condition == null:
|
||||
available_upgrades.append(shop_upgrade)
|
||||
continue
|
||||
else:
|
||||
# If they have a condition, check for the previously bought upgrades
|
||||
for owned_upgrade in tower_upgrades: #Check
|
||||
if shop_upgrade.condition == owned_upgrade:
|
||||
available_upgrades.append(shop_upgrade)
|
||||
return available_upgrades
|
||||
|
||||
func apply_upgrade(upgrade : TowerUpgrade):
|
||||
upgrade.apply_upgrade(self)
|
||||
if tower_shop.has(upgrade):
|
||||
tower_shop.erase(upgrade)
|
||||
tower_upgrades.append(upgrade)
|
||||
else:
|
||||
printerr("Upgrade already bought")
|
||||
|
||||
func _ready() -> void:
|
||||
EventBus.tower_upgraded.connect(_on_EventBus_tower_upgraded)
|
||||
energy_bar.set_up(energy, max_energy)
|
||||
|
|
@ -153,8 +129,5 @@ func _on_energy_cooldown_timeout() -> void:
|
|||
|
||||
func _on_EventBus_tower_upgraded(tower_to_upgrade : String, upgrade : TowerUpgrade) -> void:
|
||||
if tower_to_upgrade == tower_name:
|
||||
apply_upgrade(upgrade)
|
||||
|
||||
|
||||
func _on_input_event(camera: Node, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) -> void:
|
||||
if event
|
||||
upgrade.apply_upgrade(self)
|
||||
tower_upgrades.append(upgrade)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,8 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://trg7ag3dqr2l"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://trg7ag3dqr2l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://8kpvuurr5h5n" path="res://Towers/tower.gd" id="1_egfuc"]
|
||||
[ext_resource type="Texture2D" uid="uid://bn6ikwol6x8r0" path="res://Assets/Characters/Male1.png" id="2_egfuc"]
|
||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Scripts/Upgrades/TowerUpgrade.gd" id="2_mnaic"]
|
||||
[ext_resource type="Resource" uid="uid://c6844q5o2gjhd" path="res://Upgrades/Tower/TowerUpgradeMaxEnergy1.tres" id="3_jv31o"]
|
||||
[ext_resource type="PackedScene" uid="uid://bm303ot1ck82l" path="res://UI/energy_bar_3d.tscn" id="3_pajr1"]
|
||||
[ext_resource type="Resource" uid="uid://bus11qw5jg8yo" path="res://Upgrades/Tower/TowerUpgradeMaxEnergy2.tres" id="4_5dr1v"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_egfuc"]
|
||||
size = Vector3(1, 0.1, 1)
|
||||
|
|
@ -17,14 +14,7 @@ radius = 3.0
|
|||
collision_layer = 4
|
||||
collision_mask = 4
|
||||
script = ExtResource("1_egfuc")
|
||||
tower_name = null
|
||||
price = null
|
||||
bullet_damage = 5
|
||||
action_cooldown = null
|
||||
max_energy = null
|
||||
energy_regen = null
|
||||
energy_cost = null
|
||||
tower_shop = Array[ExtResource("2_mnaic")]([ExtResource("3_jv31o"), ExtResource("4_5dr1v")])
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0)
|
||||
|
|
@ -40,7 +30,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.475708, 0)
|
|||
shape = SubResource("SphereShape3D_pajr1")
|
||||
|
||||
[node name="Aim" type="Marker3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.572046, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.02026, 0)
|
||||
|
||||
[node name="BulletContainer" type="Node" parent="."]
|
||||
|
||||
|
|
@ -51,7 +41,7 @@ wait_time = 1.5
|
|||
wait_time = 0.5
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0.385348, 0)
|
||||
transform = Transform3D(3.5, 0, 0, 0, 3.5, 0, 0, 0, 3.5, 0, 0.515442, 0)
|
||||
billboard = 2
|
||||
texture = ExtResource("2_egfuc")
|
||||
hframes = 8
|
||||
|
|
@ -61,7 +51,6 @@ frame = 75
|
|||
[node name="EnergyBar3D" parent="." instance=ExtResource("3_pajr1")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.44473, 0)
|
||||
|
||||
[connection signal="input_event" from="." to="." method="_on_input_event"]
|
||||
[connection signal="body_entered" from="Range" to="." method="_on_range_body_entered"]
|
||||
[connection signal="body_exited" from="Range" to="." method="_on_range_body_exited"]
|
||||
[connection signal="timeout" from="Cooldown" to="." method="_on_cooldown_timeout"]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://he31g7f3ru1c"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://he31g7f3ru1c"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bqpeu50pgsdfk" path="res://UI/tower_button.tscn" id="1_txsyf"]
|
||||
[ext_resource type="PackedScene" uid="uid://cpdr2a3xqscfa" path="res://UI/upgrade_button.tscn" id="2_pyoxy"]
|
||||
[ext_resource type="Script" uid="uid://tn3qdhcyaxsg" path="res://UI/upgrade_button.gd" id="3_jgt3m"]
|
||||
[ext_resource type="Resource" uid="uid://c6844q5o2gjhd" path="res://Upgrades/Tower/TowerUpgradeMaxEnergy1.tres" id="4_jgt3m"]
|
||||
[ext_resource type="Resource" uid="uid://b50h2sx6xhdb2" path="res://Upgrades/Tower/TowerUpgradeEnergyRegen1.tres" id="5_wvtj5"]
|
||||
[ext_resource type="Resource" uid="uid://cfyahlbi4apsj" path="res://Upgrades/Tower/TowerUpgradeActionCooldown1.tres" id="6_32wxa"]
|
||||
[ext_resource type="Resource" uid="uid://bus11qw5jg8yo" path="res://Upgrades/Tower/TowerUpgradeMaxEnergy2.tres" id="7_dyfge"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_oxe32"]
|
||||
bg_color = Color(0.921569, 0.890196, 0.415686, 1)
|
||||
|
|
@ -38,6 +44,34 @@ grow_vertical = 0
|
|||
theme_override_styles/fill = SubResource("StyleBoxFlat_oxe32")
|
||||
show_percentage = false
|
||||
|
||||
[node name="UpgradeButton" parent="VBoxContainer" instance=ExtResource("2_pyoxy")]
|
||||
layout_mode = 2
|
||||
text = "Max Energy Upgrade +50"
|
||||
script = ExtResource("3_jgt3m")
|
||||
upgrade = ExtResource("4_jgt3m")
|
||||
tower_to_upgrade = "Pierre"
|
||||
|
||||
[node name="UpgradeButton2" parent="VBoxContainer" instance=ExtResource("2_pyoxy")]
|
||||
layout_mode = 2
|
||||
text = "Energy Regen Upgrade +5"
|
||||
script = ExtResource("3_jgt3m")
|
||||
upgrade = ExtResource("5_wvtj5")
|
||||
tower_to_upgrade = "Pierre"
|
||||
|
||||
[node name="UpgradeButton3" parent="VBoxContainer" instance=ExtResource("2_pyoxy")]
|
||||
layout_mode = 2
|
||||
text = "Cooldown Upgrade -0.3"
|
||||
script = ExtResource("3_jgt3m")
|
||||
upgrade = ExtResource("6_32wxa")
|
||||
tower_to_upgrade = "Pierre"
|
||||
|
||||
[node name="UpgradeButton4" parent="VBoxContainer" instance=ExtResource("2_pyoxy")]
|
||||
layout_mode = 2
|
||||
text = "Max Energy Upgrade +100"
|
||||
script = ExtResource("3_jgt3m")
|
||||
upgrade = ExtResource("7_dyfge")
|
||||
tower_to_upgrade = "Pierre"
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
|
@ -47,3 +81,8 @@ custom_minimum_size = Vector2(0, 50)
|
|||
layout_mode = 2
|
||||
text = "Cancel
|
||||
"
|
||||
|
||||
[connection signal="pressed" from="VBoxContainer/UpgradeButton" to="VBoxContainer/UpgradeButton" method="_on_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/UpgradeButton2" to="VBoxContainer/UpgradeButton2" method="_on_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/UpgradeButton3" to="VBoxContainer/UpgradeButton3" method="_on_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/UpgradeButton4" to="VBoxContainer/UpgradeButton4" method="_on_pressed"]
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@ extends Button
|
|||
class_name TowerButton
|
||||
|
||||
@export var tower : PackedScene
|
||||
#var tower_in_game : Tower
|
||||
var tower_in_game : Tower
|
||||
|
||||
func _on_pressed() -> void:
|
||||
EventBus.tower_selected.emit(tower, self)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if tower_in_game:
|
||||
$EnergyBar.value = tower_in_game.energy/tower_in_game.max_energy * 100.0
|
||||
|
|
|
|||
|
|
@ -7,4 +7,3 @@ class_name UpgradeButton
|
|||
|
||||
func _on_pressed() -> void:
|
||||
EventBus.tower_upgraded.emit(tower_to_upgrade, upgrade)
|
||||
queue_free()
|
||||
|
|
|
|||
|
|
@ -1,192 +0,0 @@
|
|||
## This autoload is responsible for receiving the node path that will be inspected
|
||||
## from the editor panel and then sending back all the signal data from that node
|
||||
## parsed into a debugger friendly array
|
||||
extends Node
|
||||
|
||||
## Reference to the currently targeted node in the remote tree
|
||||
var target_node: Node = null
|
||||
|
||||
## On singleton ready in scene
|
||||
## subscribe to the editor panel's request
|
||||
func _ready() -> void:
|
||||
EngineDebugger.register_message_capture("signal_lens", _on_node_signal_data_requested)
|
||||
|
||||
## This callback parses a node's signal data into an array that can be sent to the debugger
|
||||
## The data is packaged in the following structure:
|
||||
## Pseudo-code: [Name of target node, [All of the node's signals and each signal's respective callables], Class of target node]
|
||||
## This request is received in the debugger with an array containing the target node's node path
|
||||
## which will be used to retrieve the target node from the scene
|
||||
func _on_node_signal_data_requested(prefix, data) -> bool:
|
||||
var new_target_node = get_tree().root.get_node(data[0])
|
||||
|
||||
# If node is not found, return false
|
||||
# If found, keep going
|
||||
if new_target_node == null:
|
||||
printerr("No node found in path " + str(data[0]))
|
||||
return false
|
||||
|
||||
# Avoid error when trying to inspect root node
|
||||
if new_target_node == get_tree().root:
|
||||
EngineDebugger.send_message("signal_lens:incoming_node_signal_data", ["Root"])
|
||||
return false
|
||||
|
||||
# Disconnect this autoload's callable connections from the previously targeted node's signals
|
||||
if target_node != null:
|
||||
if target_node != new_target_node:
|
||||
for signal_name in target_node.get_signal_list().map(func(p_signal): return p_signal["name"]):
|
||||
if target_node.is_connected(signal_name, _on_target_node_signal_emitted):
|
||||
target_node.disconnect(signal_name, _on_target_node_signal_emitted)
|
||||
|
||||
# Acquire newly targeted node reference
|
||||
target_node = new_target_node
|
||||
|
||||
# Initialize the first piece of data that will be sent to the debugger
|
||||
# The unique name of the targeted node
|
||||
# This will be used to set the name of the main graph node in the editor panel
|
||||
var target_node_name: String = target_node.name
|
||||
|
||||
# Get target node class using Object.get_class()
|
||||
var target_node_class: String = target_node.get_class()
|
||||
|
||||
# Initialize the array that will store the node's signal data
|
||||
var target_node_signal_data: Array
|
||||
|
||||
# Get unparsed signal data from target node
|
||||
var target_node_signal_list: Array[Dictionary] = target_node.get_signal_list()
|
||||
|
||||
# Iterate all signals in target node and parse signal data
|
||||
# to debugger-friendly format
|
||||
for i in range(target_node_signal_list.size()):
|
||||
|
||||
var raw_signal_data: Dictionary = target_node_signal_list[i]
|
||||
# Raw signal data is formatted as:
|
||||
# [name] is the name of the method, as a String
|
||||
# [args] is an Array of dictionaries representing the arguments
|
||||
# [default_args] is the default arguments as an Array of variants
|
||||
# [flags] is a combination of MethodFlags
|
||||
# [id] is the method's internal identifier int
|
||||
# [return] is the returned value, as a Dictionary;
|
||||
|
||||
# Parse signal name
|
||||
var parsed_signal_name: String = raw_signal_data["name"]
|
||||
|
||||
# Parse signal callables
|
||||
var raw_signal_connections: Array[Dictionary] = target_node.get_signal_connection_list(raw_signal_data["name"])
|
||||
# Raw signal connection is formatted as:
|
||||
# [signal] is a reference to the Signal;
|
||||
# [callable] is a reference to the connected Callable;
|
||||
# [flags] is a combination of ConnectFlags.
|
||||
|
||||
var parsed_signal_callables = parse_signal_callables_to_debugger_format(raw_signal_connections)
|
||||
|
||||
# Create debugger-friendly signal data dictionary
|
||||
var parsed_signal_data: Dictionary = {
|
||||
"signal": parsed_signal_name,
|
||||
"callables": parsed_signal_callables
|
||||
}
|
||||
|
||||
# Append to overall signal data that will be sent to debugger
|
||||
target_node_signal_data.append(parsed_signal_data)
|
||||
|
||||
# Connect this autoload's signal emission capture callable to currently iterated signal
|
||||
# so we can send signal emissions to the editor panel
|
||||
if not target_node.is_connected(parsed_signal_name, _on_target_node_signal_emitted):
|
||||
var signal_args: Array = raw_signal_data["args"]
|
||||
if signal_args.size() > 0:
|
||||
target_node.connect(parsed_signal_name, _on_target_node_signal_emitted.bind(target_node_name, parsed_signal_name).unbind(signal_args.size()))
|
||||
else:
|
||||
target_node.connect(parsed_signal_name, _on_target_node_signal_emitted.bind(target_node_name, parsed_signal_name))
|
||||
|
||||
# On node data ready, prepare the array as per the debugger's specifications
|
||||
EngineDebugger.send_message("signal_lens:incoming_node_signal_data", [target_node_name, target_node_signal_data, target_node_class])
|
||||
return true
|
||||
|
||||
|
||||
func parse_signal_callables_to_debugger_format(raw_signal_connections):
|
||||
var parsed_signal_callables: Array[Dictionary]
|
||||
# Iterate all connections of signal to parse callables
|
||||
for raw_signal_connection: Dictionary in raw_signal_connections:
|
||||
var parsed_callable_object: Object = raw_signal_connection["callable"].get_object()
|
||||
var parsed_callable_object_name: String
|
||||
|
||||
# If object has property "name", get this property
|
||||
# Otherwise, get the string value of the object
|
||||
# This is important to allow parsing anonymous lambdas, which
|
||||
# don't have name properties. The names in the nodes are not
|
||||
# very user-friendly right now, so this is a good spot for a
|
||||
# TODO: improve readability of anonymous lambda nodes
|
||||
if not parsed_callable_object: return {"object_name": "ERROR: Couldn't parse node name."}
|
||||
if parsed_callable_object.get("name") != null:
|
||||
parsed_callable_object_name = parsed_callable_object.get("name")
|
||||
else:
|
||||
parsed_callable_object_name = parsed_callable_object.to_string()
|
||||
|
||||
var parsed_callable_method_name = str(raw_signal_connection["callable"].get_method())
|
||||
|
||||
# Don't parse callable that is in this autoload
|
||||
if parsed_callable_method_name == "_on_target_node_signal_emitted": continue
|
||||
|
||||
var parsed_callable_data = {
|
||||
"object_name": parsed_callable_object_name,
|
||||
"method_name": parsed_callable_method_name
|
||||
}
|
||||
|
||||
parsed_signal_callables.append(parsed_callable_data)
|
||||
return parsed_signal_callables
|
||||
|
||||
|
||||
## This callable receives all signal emissions from the currently targeted node
|
||||
## and sends them to the editor panel
|
||||
|
||||
func _on_target_node_signal_emitted(node_name: String, signal_name: String):
|
||||
var emission_data: Dictionary = {
|
||||
"node_name": node_name,
|
||||
"signal_name": signal_name,
|
||||
"signal_arguments": [], # NOTE: Empty for now, will be available in a future release targeting Godot 4.5
|
||||
"datetime": get_current_datetime_string(),
|
||||
"timestamp": get_engine_ticks_string(),
|
||||
"process_frames": Engine.get_process_frames(),
|
||||
"physics_frames": Engine.get_physics_frames(),
|
||||
}
|
||||
|
||||
EngineDebugger.send_message("signal_lens:incoming_node_signal_emission", [emission_data])
|
||||
|
||||
|
||||
# NOTE: This function is compatible with Godot 4.5+ only, but 1.4.0 version of Signal Lens
|
||||
# will still support 4.3+, so I'm keeping it here so it can reimplemented in a future release.
|
||||
#func _on_target_node_signal_emitted(...args: Array):
|
||||
#
|
||||
#var parsed_args: Array
|
||||
#var signal_args = args.slice(0, args.size() - 2)
|
||||
#for arg in signal_args:
|
||||
#parsed_args.append(str(arg))
|
||||
#
|
||||
#var emission_data: Dictionary = {
|
||||
#"node_name": args[args.size() - 2],
|
||||
#"signal_name": args[args.size() - 1],
|
||||
#"datetime": get_current_datetime_string(),
|
||||
#"timestamp": get_engine_ticks_string(),
|
||||
#"process_frames": Engine.get_process_frames(),
|
||||
#"physics_frames": Engine.get_physics_frames(),
|
||||
#"signal_arguments": parsed_args
|
||||
#}
|
||||
#
|
||||
#EngineDebugger.send_message("signal_lens:incoming_node_signal_emission", [emission_data])
|
||||
|
||||
func get_current_datetime_string() -> String:
|
||||
return Time.get_datetime_string_from_system()
|
||||
|
||||
func get_engine_ticks_string() -> String:
|
||||
var ticks: int = Time.get_ticks_msec()
|
||||
|
||||
# Convert milliseconds to total seconds
|
||||
var total_seconds = ticks / 1000
|
||||
var milliseconds = ticks % 1000
|
||||
|
||||
# Calculate hours, minutes, and seconds
|
||||
var hours = total_seconds / 3600
|
||||
var minutes = (total_seconds % 3600) / 60
|
||||
var seconds = total_seconds % 60
|
||||
|
||||
# Format with leading zeros
|
||||
return "%02d:%02d:%02d:%03d" % [hours, minutes, seconds, milliseconds]
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://85rkx60vm7a7
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
## Backend debugger class that is necessary for debugger plugins
|
||||
## Handles the engine's debugger callbacks for receiving and sending data
|
||||
## to the project that is playing
|
||||
## Sets up the editor panel inside the debugger tab
|
||||
class_name SignalLensDebugger
|
||||
extends EditorDebuggerPlugin
|
||||
|
||||
## Emitted on debugging session started
|
||||
## Can happen on engine open or on play
|
||||
signal started
|
||||
|
||||
## Emitted when node data is received from autoload in remote scene
|
||||
signal received_node_data_from_remote(data)
|
||||
|
||||
## Emitted when signal emission data is received from autoload in remote scene
|
||||
signal received_signal_emission_from_remote(data)
|
||||
|
||||
## Emitted when editor panel requests inspection for [param node_path]
|
||||
signal requested_node_data_from_remote(node_path: NodePath)
|
||||
|
||||
## Emitted on a breakpoint activated
|
||||
## Not used yet, can be useful in the future
|
||||
signal breaked
|
||||
|
||||
## Emitted on continued after breakpoint
|
||||
## Not used yet, can be useful in the future
|
||||
signal continued
|
||||
|
||||
## Emitted on debugging session stopped
|
||||
## Can happen on editor quit or on stopped playing
|
||||
signal stopped
|
||||
|
||||
## Identifier for debugger session
|
||||
## Acquired on session started and cached
|
||||
var current_session_id: int = 0
|
||||
|
||||
## Designates debugger messages containing this prefix
|
||||
## as being specific to the plugin
|
||||
const DEBUGGER_MESSAGE_PREFIX := "signal_lens"
|
||||
|
||||
## Sends data request message to remote scene with [param node_path]
|
||||
func request_node_data_from_remote(node_path: NodePath):
|
||||
get_session(current_session_id).send_message("signal_lens:node_signal_data_requested", [node_path])
|
||||
requested_node_data_from_remote.emit(node_path)
|
||||
|
||||
## Appends editor panel control to Godot's debugger bottom panel
|
||||
func setup_editor_panel(editor_panel: SignalLensEditorPanel):
|
||||
get_session(current_session_id).add_session_tab(editor_panel)
|
||||
|
||||
## This override is necessary so you can send and receive
|
||||
## messages from the project that is playing
|
||||
func _has_capture(prefix) -> bool:
|
||||
return prefix == DEBUGGER_MESSAGE_PREFIX
|
||||
|
||||
## On data from autoload received, send it to the editor panel
|
||||
func _capture(message, data, session_id) -> bool:
|
||||
if message == "signal_lens:incoming_node_signal_data":
|
||||
received_node_data_from_remote.emit(data)
|
||||
return true
|
||||
elif message == "signal_lens:incoming_node_signal_emission":
|
||||
received_signal_emission_from_remote.emit(data)
|
||||
return true
|
||||
return false
|
||||
|
||||
## Engine callback override where we set up signals
|
||||
func _setup_session(session_id):
|
||||
current_session_id = session_id
|
||||
var session = get_session(current_session_id)
|
||||
session.started.connect(_on_session_started)
|
||||
session.stopped.connect(_on_session_stopped)
|
||||
session.breaked.connect(_on_session_breaked)
|
||||
session.continued.connect(_on_session_continued)
|
||||
|
||||
func _on_session_started(): started.emit()
|
||||
func _on_session_stopped(): stopped.emit()
|
||||
func _on_session_breaked(can_debug: bool): breaked.emit(can_debug)
|
||||
func _on_session_continued(): continued.emit()
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://clkfqlih838to
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
@tool
|
||||
class_name Logger
|
||||
extends Control
|
||||
|
||||
const MAX_LOGS := 1000
|
||||
|
||||
enum Options {
|
||||
DATETIME,
|
||||
TIMESTAMP,
|
||||
PROCESS_FRAME,
|
||||
PHYSICS_FRAME
|
||||
}
|
||||
|
||||
@export var log_container: Control
|
||||
@export var copy_button: Button
|
||||
@export var clear_button: Button
|
||||
@export var v_split_container: VSplitContainer
|
||||
@export var h_split_container: HSplitContainer
|
||||
@export var log_scroll: ScrollContainer
|
||||
@export var counter_label: Label
|
||||
|
||||
var _logs: Array[String]
|
||||
|
||||
var _starting_v_split_margin_end: int
|
||||
var _starting_h_split_offset: int
|
||||
|
||||
var _options_popup: PopupMenu
|
||||
|
||||
func _ready() -> void:
|
||||
copy_button.icon = EditorInterface.get_base_control().get_theme_icon("ActionCopy", "EditorIcons")
|
||||
clear_button.icon = EditorInterface.get_base_control().get_theme_icon("Clear", "EditorIcons")
|
||||
_starting_v_split_margin_end = v_split_container.drag_area_margin_end
|
||||
_starting_h_split_offset = h_split_container.split_offset
|
||||
counter_label.text = ""
|
||||
|
||||
func clear():
|
||||
_logs.clear()
|
||||
for child in log_container.get_children():
|
||||
child.queue_free()
|
||||
counter_label.text = ""
|
||||
|
||||
func create_log(datetime: String, timestamp: String, node_name: String, signal_name: String, signal_arguments: Array, process_frames: int, physics_frames: int):
|
||||
if _logs.size() >= MAX_LOGS:
|
||||
_logs.pop_front()
|
||||
log_container.get_child(0).queue_free()
|
||||
|
||||
var raw_log = "%s | %s\n%s | %s\n%s → %s" % [datetime, timestamp, process_frames, physics_frames, node_name, signal_name]
|
||||
if not signal_arguments.is_empty(): raw_log += "\n" + str(signal_arguments)
|
||||
_logs.append(raw_log)
|
||||
|
||||
var pretty_log: String = ""
|
||||
|
||||
pretty_log += "[font_size=12]"
|
||||
pretty_log += "[color=WEB_GRAY]%s | %s\nProcess: %s | Physics: %s[/color]\n" % [datetime, timestamp, process_frames, physics_frames]
|
||||
pretty_log += "[font_size=13][color=WHITE][b]%s → %s[/b]\n" % [node_name, signal_name]
|
||||
if not signal_arguments.is_empty(): pretty_log += "[color=WHITE]" + str(signal_arguments)
|
||||
|
||||
var log_label: RichTextLabel = RichTextLabel.new()
|
||||
log_label.bbcode_enabled = true
|
||||
log_label.fit_content = true
|
||||
log_label.selection_enabled = true
|
||||
log_label.add_theme_constant_override("line_separation", 5)
|
||||
log_label.context_menu_enabled = true
|
||||
log_label.text = pretty_log
|
||||
log_label.add_theme_stylebox_override("background", StyleBoxEmpty.new())
|
||||
log_label.add_theme_stylebox_override("normal", StyleBoxEmpty.new())
|
||||
|
||||
log_container.add_child(log_label)
|
||||
await get_tree().process_frame
|
||||
log_scroll.scroll_vertical = log_scroll.get_v_scroll_bar().max_value
|
||||
|
||||
counter_label.text = "(%s)" % [str(_logs.size())]
|
||||
|
||||
func _on_clear_button_pressed() -> void:
|
||||
clear()
|
||||
|
||||
|
||||
func _on_copy_button_pressed() -> void:
|
||||
var result: String
|
||||
var index = 0
|
||||
for pretty_log: String in _logs:
|
||||
result += pretty_log
|
||||
index += 1
|
||||
if index < _logs.size():
|
||||
result += "\n\n"
|
||||
DisplayServer.clipboard_set(result)
|
||||
|
||||
|
||||
func _on_h_split_container_dragged(offset: int) -> void:
|
||||
var h_split_offset_progress = inverse_lerp(_starting_h_split_offset, 0, offset)
|
||||
var new_v_split_drag_area = lerp(_starting_v_split_margin_end, 0, h_split_offset_progress)
|
||||
v_split_container.drag_area_margin_end = new_v_split_drag_area
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dpn0ev0370mga
|
||||
|
|
@ -1,542 +0,0 @@
|
|||
## Draw's Signal Lens panel in the debugger bottom tab inside Godot's editor
|
||||
## Parses data received from the runtime autoload into
|
||||
## a user-friendly graph of a node's signal and its connections
|
||||
@tool
|
||||
class_name SignalLensEditorPanel
|
||||
extends Control
|
||||
|
||||
## Written in the panel's line edit if nothing is selected and a debugger
|
||||
## session is active
|
||||
const TUTORIAL_TEXT: String = "Select a node in the remote scene"
|
||||
|
||||
## Default duration a signal emission pulse in seconds
|
||||
## TODO: This could be a user setting
|
||||
const DEFAULT_EMISSION_DURATION: float = 1.0
|
||||
|
||||
## Default opacity of a connection line in the graph when rendered
|
||||
## TODO: This could be a user setting
|
||||
const DEFAULT_CONNECTION_OPACITY: float = 0.3
|
||||
|
||||
## This enum is used to set up the graph node's ports
|
||||
## in a way that provides more legibility in the code
|
||||
enum Direction {LEFT, RIGHT}
|
||||
|
||||
## This enum keeps available option IDs
|
||||
enum Options {
|
||||
HIDE_SIGNALS_WITHOUT_CONNECTIONS,
|
||||
HIDE_BUILT_IN_SIGNALS,
|
||||
SHOW_GRAPH_TOOLBAR,
|
||||
SHOW_GRAPH_MINIMAP
|
||||
}
|
||||
|
||||
## Emitted on user pressed "refresh" button
|
||||
signal node_data_requested(node_path)
|
||||
|
||||
## Current node path being inspected
|
||||
var current_node: NodePath = ""
|
||||
|
||||
## If true, ignores new incoming data from the remote tree
|
||||
## effectively locking the panel current node path
|
||||
var block_new_inspections: bool = false
|
||||
|
||||
## If true, all incoming signal emissions will be drawn and won't fade out
|
||||
var keep_emissions: bool = false
|
||||
|
||||
## Multiplier that increases or decreases emission drawing speed
|
||||
## Acquired from slider in scene
|
||||
var emission_speed_multiplier: float = 1.0
|
||||
|
||||
var connection_opacity: float = DEFAULT_CONNECTION_OPACITY
|
||||
|
||||
## Array that collects active pulse connections so that they can be
|
||||
## all cleanup together when unfreezing emissions
|
||||
var pulsing_connections: Array = []
|
||||
|
||||
## Value of options
|
||||
var settings: Dictionary = {
|
||||
Options.HIDE_SIGNALS_WITHOUT_CONNECTIONS: true,
|
||||
Options.HIDE_BUILT_IN_SIGNALS: false,
|
||||
Options.SHOW_GRAPH_TOOLBAR: false,
|
||||
Options.SHOW_GRAPH_MINIMAP: false
|
||||
}
|
||||
|
||||
# Scene references
|
||||
@export var graph_edit: GraphEdit
|
||||
@export var logger_button: Button
|
||||
@export var node_path_line_edit: LineEdit
|
||||
@export var refresh_button: Button
|
||||
@export var options_button: MenuButton
|
||||
@onready var options_popup: PopupMenu = options_button.get_popup()
|
||||
@export var clear_button: Button
|
||||
@export var inactive_text: Label
|
||||
@export var warning_text: Label
|
||||
@export var pin_checkbox: CheckButton
|
||||
@export var keep_emissions_checkbox: CheckButton
|
||||
@export var emission_speed_slider: Slider
|
||||
@export var emission_speed_icon: Button
|
||||
@export var connection_opacity_icon: Button
|
||||
@export var logger: Control
|
||||
|
||||
## Initialize panel: Load icons
|
||||
func _ready() -> void:
|
||||
_get_parent_editor_split()
|
||||
options_button.icon = EditorInterface.get_base_control().get_theme_icon("GuiTabMenuHl", "EditorIcons")
|
||||
clear_button.icon = EditorInterface.get_base_control().get_theme_icon("Clear", "EditorIcons")
|
||||
refresh_button.icon = EditorInterface.get_base_control().get_theme_icon("Reload", "EditorIcons")
|
||||
pin_checkbox.icon = EditorInterface.get_base_control().get_theme_icon("Pin", "EditorIcons")
|
||||
keep_emissions_checkbox.icon = EditorInterface.get_base_control().get_theme_icon("Override", "EditorIcons")
|
||||
emission_speed_icon.icon = EditorInterface.get_base_control().get_theme_icon("Timer", "EditorIcons")
|
||||
logger_button.icon = EditorInterface.get_base_control().get_theme_icon("FileList", "EditorIcons")
|
||||
options_popup.index_pressed.connect(_on_options_index_pressed) # NOTE: ID & index must have same value!
|
||||
connection_opacity_icon.icon = EditorInterface.get_base_control().get_theme_icon("GuiVisibilityVisible", "EditorIcons")
|
||||
#main_buttons_container.reparent(graph_edit.get_menu_hbox())
|
||||
#graph_edit.get_menu_hbox().move_child(main_buttons_container, 0)
|
||||
#graph_edit.get_menu_hbox().custom_minimum_size.x = graph_edit.size.x
|
||||
graph_edit.get_menu_hbox().reparent(panel_container)
|
||||
graph_edit.get_menu_hbox().hide()
|
||||
#graph_edit.get_menu_hbox().hide()
|
||||
repo_button.icon = EditorInterface.get_base_control().get_theme_icon("ExternalLink", "EditorIcons")
|
||||
|
||||
@onready var repo_button: Button = $EditorPanel/MainButtonsContainer/HBoxContainer2/RepoButton
|
||||
|
||||
@onready var panel_container: PanelContainer = $EditorPanel/PanelContainer
|
||||
@onready var main_buttons_container: MarginContainer = $EditorPanel/MainButtonsContainer
|
||||
|
||||
## Requests inspection of [param current_node] in remote scene
|
||||
func request_node_data():
|
||||
node_data_requested.emit(current_node)
|
||||
|
||||
## Receives node signal data from remote scene
|
||||
## Data structure is detailed further below
|
||||
func receive_node_data(data: Array):
|
||||
draw_node_data(data)
|
||||
|
||||
## Sets up editor on project play
|
||||
func start_session():
|
||||
clear_graph()
|
||||
pin_checkbox.button_pressed = false
|
||||
keep_emissions_checkbox.button_pressed = false
|
||||
emission_speed_slider.editable = true
|
||||
emission_speed_icon.disabled = false
|
||||
node_path_line_edit.text = TUTORIAL_TEXT
|
||||
inactive_text.hide()
|
||||
|
||||
|
||||
## Cleans up editor on project stop
|
||||
func stop_session():
|
||||
clear_graph()
|
||||
pin_checkbox.disabled = true
|
||||
keep_emissions_checkbox.disabled = true
|
||||
refresh_button.disabled = true
|
||||
clear_button.disabled = true
|
||||
emission_speed_slider.editable = false
|
||||
emission_speed_icon.disabled = true
|
||||
node_path_line_edit.text = ""
|
||||
pin_checkbox.button_pressed = false
|
||||
keep_emissions_checkbox.button_pressed = false
|
||||
inactive_text.show()
|
||||
warning_text.hide()
|
||||
warning_text.text = ""
|
||||
|
||||
|
||||
## Assigns a [param target_node] to internal member [param current_node]
|
||||
func assign_node_path(target_node: NodePath):
|
||||
# If locked button is toggled, don't change the current node
|
||||
if block_new_inspections: return
|
||||
|
||||
# If incoming node is invalid, disable refreshing to avoid null nodes
|
||||
refresh_button.disabled = target_node.is_empty()
|
||||
|
||||
# Assign incoming node as the current one
|
||||
current_node = target_node
|
||||
|
||||
# Update line edit
|
||||
node_path_line_edit.text = current_node
|
||||
node_path_line_edit.caret_column = node_path_line_edit.text.length()
|
||||
|
||||
#region Graph Rendering
|
||||
|
||||
## Clears all nodes from the debugger panel
|
||||
## Called on user inspecting new node or on play/quit current
|
||||
## debug session
|
||||
func clear_graph():
|
||||
# If nothing in graph, return
|
||||
if graph_edit.get_child_count() == 0: return
|
||||
# Not clearing connection activity can lead to unwanted behaviour
|
||||
# So this function must be called here for now
|
||||
clean_connection_activity()
|
||||
# Frees child nodes
|
||||
for child: Node in graph_edit.get_children():
|
||||
# This seems to be necessary as per Godot 4.3
|
||||
# because this child, despite being internal,
|
||||
# is iterated in get_children() and if it is
|
||||
# destroyed, the editor crashed
|
||||
# so let's ignore it and move on
|
||||
if child.name == "_connection_layer": continue
|
||||
child.free()
|
||||
## Necessary for the minimap to update, it seems
|
||||
if graph_edit.minimap_enabled:
|
||||
graph_edit.minimap_enabled = false
|
||||
graph_edit.minimap_enabled = true
|
||||
|
||||
## Draws data received from the runtime autoload
|
||||
## The data is packages in the following structure:
|
||||
## Pseudo-code: [Name of target node, [All of the node's signals and each signal's respective callables], Class of target node]
|
||||
## Print result: [{&"name_of_targeted_node", [{"signal": "item_rect_changed", "callables": [{ "object_name": &"Control", "callable_method": "Control::_size_changed"}], "Control"]
|
||||
## Is is parsed and drawin into nodes, with connections established between signals and their callables
|
||||
func draw_node_data(data: Array):
|
||||
# If lock button toggled on, don't draw incoming data
|
||||
if block_new_inspections: return
|
||||
|
||||
# Clear graph to avoid drawing over old data
|
||||
clear_graph()
|
||||
logger.clear()
|
||||
|
||||
# This line is super important to avoid random rendering errors
|
||||
# It seems we need to give a small breathing room for the graph edit
|
||||
# to fully cleanup, otherwise, artifacts from a previously rendered
|
||||
# graph edit may appear and mess up the new drawing
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
|
||||
# Retrieve the targeted node from the data array, which is always index 0
|
||||
var target_node_name = data[0]
|
||||
|
||||
# Handle root node inspection edge case
|
||||
if target_node_name == "Root":
|
||||
warning_text.show()
|
||||
warning_text.text = "Root node inspection is not supported."
|
||||
return
|
||||
else:
|
||||
warning_text.hide()
|
||||
|
||||
# Retrieve the targeted node signal data, which is always index 1
|
||||
var target_node_signal_data: Array = data[1]
|
||||
|
||||
# Create main node from which connections will be created
|
||||
# and add it to the graph
|
||||
var target_node: SignalLensGraphNode = create_node(target_node_name, "(Signals)")
|
||||
graph_edit.add_child(target_node)
|
||||
|
||||
var current_signal_index = 0
|
||||
|
||||
# Start iterating signal by signal
|
||||
for signal_data in target_node_signal_data:
|
||||
# Check signal connections and skip not connected signals (based on settings)
|
||||
if settings[Options.HIDE_SIGNALS_WITHOUT_CONNECTIONS] and signal_data["callables"].size() == 0: continue
|
||||
|
||||
# Check signal connections and skip if signal is built-in (based on settings)
|
||||
if settings[Options.HIDE_BUILT_IN_SIGNALS]:
|
||||
var class_signals: Array = []
|
||||
for class_signal in ClassDB.class_get_signal_list(data[2]):
|
||||
class_signals.append(class_signal["name"])
|
||||
if signal_data["signal"] in class_signals:
|
||||
continue
|
||||
|
||||
# Get the color based on the index so we can have the rainbow vibes
|
||||
var slot_color = get_slot_color(current_signal_index, target_node_signal_data.size())
|
||||
|
||||
# Create the slot button with the signal's name
|
||||
create_button_slot(signal_data["signal"], target_node, Direction.RIGHT, slot_color)
|
||||
|
||||
# Start iterating each callable in the signal
|
||||
var callables_for_current_signal = signal_data["callables"]
|
||||
for callable_index in range(callables_for_current_signal.size()):
|
||||
var object_name: String = callables_for_current_signal[callable_index]["object_name"]
|
||||
var callable_method: String = callables_for_current_signal[callable_index]["method_name"]
|
||||
# If a node has already been created for the object that owns the callable
|
||||
# Then we don't create an entirely new node
|
||||
# Otherwise, we create a new node
|
||||
if graph_edit.has_node(object_name):
|
||||
var callable_node = graph_edit.get_node(object_name)
|
||||
# If callable's object is the same as signal's
|
||||
# It means that the target node listens to it's own signals
|
||||
# So we create a new node to avoid confusion and keep everything legible
|
||||
# for the user
|
||||
# Otherwise, we just add a new button to an already existing node
|
||||
if callable_node.name == target_node.name:
|
||||
var target_callables_node
|
||||
if !graph_edit.has_node(target_node_name + " (Callables)"):
|
||||
target_callables_node = create_node(target_node_name + " (Callables)")
|
||||
graph_edit.add_child(target_callables_node)
|
||||
target_callables_node.position_offset += Vector2(250, 0)
|
||||
else:
|
||||
target_callables_node = graph_edit.get_node(target_node_name + " (Callables)")
|
||||
create_button_slot(callable_method, target_callables_node, Direction.LEFT, slot_color)
|
||||
graph_edit.connect_node(target_node.name, current_signal_index, target_callables_node.name, target_callables_node.get_child_count() - 1)
|
||||
else:
|
||||
create_button_slot(callable_method, callable_node, Direction.LEFT, slot_color)
|
||||
graph_edit.connect_node(target_node.name, current_signal_index, callable_node.name, callable_node.get_child_count() - 1)
|
||||
else:
|
||||
var callable_node: SignalLensGraphNode = create_node(object_name, "(Callables)")
|
||||
create_button_slot(callable_method, callable_node, Direction.LEFT, slot_color)
|
||||
graph_edit.add_child(callable_node)
|
||||
# We set the offsets here to se can have the descending stair effect in the resulting graph
|
||||
# TODO: This could be a user setting
|
||||
callable_node.position_offset += Vector2(callable_node.get_index() * 250, callable_node.get_index() * 50)
|
||||
graph_edit.connect_node(target_node.name, current_signal_index, callable_node.name, callable_node.get_child_count() - 1)
|
||||
# Finally, we add to the current iterator and move on to the next signal
|
||||
current_signal_index += 1
|
||||
# Manage button states
|
||||
# This is important to make sure that if a valid graph is rendered
|
||||
# in case the buttons are disabled, they are enabled again
|
||||
if clear_button.disabled:
|
||||
clear_button.disabled = false
|
||||
if pin_checkbox.disabled:
|
||||
pin_checkbox.disabled = false
|
||||
if keep_emissions_checkbox.disabled:
|
||||
keep_emissions_checkbox.disabled = false
|
||||
if emission_speed_slider.editable:
|
||||
emission_speed_slider.editable = true
|
||||
emission_speed_icon.disabled = false
|
||||
|
||||
func create_node(node_name: String, title_appendix: String = "") -> SignalLensGraphNode:
|
||||
var new_node = SignalLensGraphNode.new()
|
||||
new_node.name = node_name
|
||||
new_node.title = node_name + " " + title_appendix
|
||||
return new_node
|
||||
|
||||
func create_button_slot(button_text: String, parent_node: GraphNode, slot_direction: Direction, slot_color: Color):
|
||||
var signal_button: Button = Button.new()
|
||||
signal_button.flat = true
|
||||
signal_button.name = button_text
|
||||
signal_button.text = button_text
|
||||
parent_node.add_child(signal_button)
|
||||
signal_button.pressed.connect(_on_signal_button_pressed.bind(parent_node, signal_button.get_index()))
|
||||
signal_button.focus_exited.connect(clean_connection_activity)
|
||||
parent_node.set_slot(signal_button.get_index(), slot_direction == Direction.LEFT, 0, slot_color, slot_direction == Direction.RIGHT, 0, slot_color)
|
||||
|
||||
func get_slot_color(slot_index, signal_amount) -> Color:
|
||||
var hue = float(slot_index) / float(signal_amount)
|
||||
return Color.from_hsv(hue, 1.0, 0.5, connection_opacity)
|
||||
|
||||
func clean_connection_activity():
|
||||
for connection in graph_edit.get_connection_list():
|
||||
graph_edit.set_connection_activity(connection["from_node"], connection["from_port"], connection["to_node"], connection["to_port"], 0)
|
||||
|
||||
#endregion
|
||||
|
||||
#region Signal Emission Rendering
|
||||
|
||||
func draw_signal_emission(data: Array):
|
||||
logger.create_log(data[0]["datetime"], data[0]["timestamp"], data[0]["node_name"], data[0]["signal_name"], data[0]["signal_arguments"], data[0]["physics_frames"], data[0]["process_frames"])
|
||||
# Avoid trying to draw signal emission if graph not fully drawn yet
|
||||
if graph_edit.get_child_count() <= 1: return
|
||||
var target_node: GraphNode = graph_edit.get_child(1)
|
||||
var port_index = get_port_index_from_signal_name(data[0]["signal_name"])
|
||||
if port_index == -1: return
|
||||
for connection in graph_edit.get_connection_list():
|
||||
if connection["from_node"] == target_node.name && connection["from_port"] == port_index:
|
||||
pulse_connection(connection)
|
||||
|
||||
|
||||
func pulse_connection(connection: Dictionary) -> void:
|
||||
if connection not in pulsing_connections: pulsing_connections.append(connection)
|
||||
|
||||
var from_node = connection["from_node"]
|
||||
var from_port = connection["from_port"]
|
||||
var to_node = connection["to_node"]
|
||||
var to_port = connection["to_port"]
|
||||
|
||||
if keep_emissions:
|
||||
graph_edit.set_connection_activity(from_node, from_port, to_node, to_port, 1.0)
|
||||
else:
|
||||
fade_out_connection(connection)
|
||||
|
||||
func fade_out_connection(connection: Dictionary):
|
||||
var tween := create_tween()
|
||||
var fade_out_duration = DEFAULT_EMISSION_DURATION * emission_speed_multiplier
|
||||
var from_node = connection["from_node"]
|
||||
var from_port = connection["from_port"]
|
||||
var to_node = connection["to_node"]
|
||||
var to_port = connection["to_port"]
|
||||
|
||||
tween.tween_method(
|
||||
func(value): graph_edit.set_connection_activity(from_node, from_port, to_node, to_port, value), 1.0, 0.0, fade_out_duration
|
||||
).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN)
|
||||
|
||||
tween.tween_callback(func(): pulsing_connections.erase(connection))
|
||||
|
||||
func get_port_index_from_signal_name(signal_name: String):
|
||||
var target_node = graph_edit.get_child(1)
|
||||
for child in target_node.get_children():
|
||||
if child.name == signal_name:
|
||||
return child.get_index()
|
||||
return -1
|
||||
|
||||
func keep_signal_emissions():
|
||||
keep_emissions = true
|
||||
|
||||
func dont_keep_signal_emissions():
|
||||
for connection in pulsing_connections:
|
||||
fade_out_connection(connection)
|
||||
keep_emissions = false
|
||||
|
||||
#endregion
|
||||
|
||||
#region Panel Resizing
|
||||
|
||||
# Reference to the Split Container that holds the bottom panel in the editor
|
||||
var _editor_dock
|
||||
|
||||
# split_offset value of editor dock, works as a size for the panel
|
||||
# Important: the value is negative because of split_offset's implementation
|
||||
var _original_panel_size: float
|
||||
|
||||
## Grabs a reference to the parent split container of the debugger
|
||||
func _get_parent_editor_split():
|
||||
var base = EditorInterface.get_base_control()
|
||||
var waiting := base.get_children()
|
||||
while not waiting.is_empty():
|
||||
var node := waiting.pop_back() as Node
|
||||
if node.name.find("DockVSplitCenter") >= 0:
|
||||
_editor_dock = node
|
||||
_original_panel_size = _editor_dock.split_offset
|
||||
if visible:
|
||||
_resize_panel(-ProjectSettings.get_setting("addons/Signal Lens/height_to_resize_to"))
|
||||
else:
|
||||
_resize_panel(0)
|
||||
else:
|
||||
waiting.append_array(node.get_children())
|
||||
|
||||
## Resizes panel to new_size if possible
|
||||
func _resize_panel(new_size: float):
|
||||
if _can_resize_panel():
|
||||
_editor_dock.split_offset = new_size
|
||||
|
||||
|
||||
func _can_resize_panel() -> bool:
|
||||
# If user wants to resize panel on open
|
||||
if not ProjectSettings.get_setting("addons/Signal Lens/resize_panel_on_open"): return false
|
||||
|
||||
# If editor dock reference has been acquired
|
||||
if not _editor_dock: return false
|
||||
return true
|
||||
|
||||
|
||||
func _on_visibility_changed() -> void:
|
||||
# Only resize bottom panel if both visible and visible in editor
|
||||
if visible and is_visible_in_tree():
|
||||
_resize_panel(-ProjectSettings.get_setting("addons/Signal Lens/height_to_resize_to"))
|
||||
else:
|
||||
_resize_panel(_original_panel_size)
|
||||
|
||||
func _open_project_settings():
|
||||
var base = EditorInterface.get_base_control()
|
||||
|
||||
# Find the Project Settings Editor
|
||||
var settings = base.find_child('*ProjectSettingsEditor*', true, false)
|
||||
if not settings:
|
||||
print('ProjectSettingsEditor not found (?)')
|
||||
return
|
||||
|
||||
# Grab the tab container from the sectioned editor
|
||||
var tab_container = settings.find_child('*TabContainer*', true, false)
|
||||
if not tab_container is TabContainer:
|
||||
print('Could not find the tab container')
|
||||
return
|
||||
|
||||
# Set the current tab to General
|
||||
tab_container.current_tab = 0
|
||||
|
||||
# Find the Sectioned Editor inside it
|
||||
var sectioned_inspector = tab_container.find_child('*SectionedInspector*', true, false)
|
||||
if not sectioned_inspector:
|
||||
print('SectionedInspector not found (?)')
|
||||
return
|
||||
|
||||
# Find the Tree inside it
|
||||
var tree = sectioned_inspector.find_child("Tree", true, false) as Tree
|
||||
if not tree:
|
||||
print('Could not find Tree')
|
||||
return
|
||||
|
||||
# Find the entry in the tree
|
||||
var found_item = null
|
||||
var item = tree.get_root()
|
||||
while item:
|
||||
item = item.get_next_visible()
|
||||
if not item:
|
||||
print('--finished')
|
||||
break
|
||||
if item.get_text(0) == "Signal Lens":
|
||||
found_item = item
|
||||
break
|
||||
|
||||
# Select the found item
|
||||
if found_item:
|
||||
tree.set_selected(found_item, 0)
|
||||
tree.ensure_cursor_is_visible()
|
||||
|
||||
# Finally popup the Project Settings Editor
|
||||
settings.popup()
|
||||
|
||||
#endregion
|
||||
|
||||
#region Signal Callbacks
|
||||
|
||||
func _on_refresh_button_pressed() -> void:
|
||||
if current_node.is_empty(): return
|
||||
request_node_data()
|
||||
|
||||
func _on_signal_button_pressed(graph_node: GraphNode, internal_index: int):
|
||||
graph_edit.set_selected(null)
|
||||
clean_connection_activity()
|
||||
for connection in graph_edit.get_connection_list():
|
||||
if (connection["from_node"] == graph_node.name && connection["from_port"] == internal_index) or (connection["to_node"] == graph_node.name && connection["to_port"] == internal_index):
|
||||
graph_edit.set_connection_activity(connection["from_node"], connection["from_port"], connection["to_node"], connection["to_port"], 0.75)
|
||||
|
||||
func _on_graph_edit_node_selected(node: Node) -> void:
|
||||
var graph_node = node as GraphNode
|
||||
for connection in graph_edit.get_connection_list():
|
||||
if connection["to_node"] == graph_node.name:
|
||||
graph_edit.set_connection_activity(connection["from_node"], connection["from_port"], connection["to_node"], connection["to_port"], 0.75)
|
||||
|
||||
func _on_graph_edit_node_deselected(node: Node) -> void:
|
||||
var graph_node = node as GraphNode
|
||||
for connection in graph_edit.get_connection_list():
|
||||
if connection["to_node"] == graph_node.name:
|
||||
graph_edit.set_connection_activity(connection["from_node"], connection["from_port"], connection["to_node"], connection["to_port"], 0)
|
||||
|
||||
func _on_clear_button_pressed() -> void:
|
||||
clear_graph()
|
||||
|
||||
func _on_repo_button_pressed() -> void:
|
||||
OS.shell_open("https://github.com/yannlemos/signal-lens")
|
||||
|
||||
func _on_pin_checkbox_toggled(toggled_on: bool) -> void:
|
||||
block_new_inspections = toggled_on
|
||||
|
||||
func _on_emission_speed_slider_value_changed(value: float) -> void:
|
||||
emission_speed_multiplier = value
|
||||
|
||||
func _on_keep_emissions_checkbox_toggled(toggled_on: bool) -> void:
|
||||
if toggled_on:
|
||||
keep_signal_emissions()
|
||||
else:
|
||||
dont_keep_signal_emissions()
|
||||
|
||||
func _on_logger_button_toggled(toggled_on: bool) -> void:
|
||||
logger.visible = toggled_on
|
||||
|
||||
func _on_options_index_pressed(option_index: int) -> void:
|
||||
if options_popup.is_item_checkable(option_index):
|
||||
settings[option_index] = not options_popup.is_item_checked(option_index) # Change state
|
||||
options_popup.set_item_checked(option_index, settings[option_index]) # Apply state
|
||||
|
||||
if option_index in [Options.HIDE_SIGNALS_WITHOUT_CONNECTIONS, Options.HIDE_BUILT_IN_SIGNALS]:
|
||||
refresh_button.pressed.emit()
|
||||
elif option_index == Options.SHOW_GRAPH_TOOLBAR:
|
||||
graph_edit.get_menu_hbox().visible = settings[option_index]
|
||||
elif option_index == Options.SHOW_GRAPH_MINIMAP:
|
||||
graph_edit.minimap_enabled = settings[option_index]
|
||||
else:
|
||||
_open_project_settings()
|
||||
|
||||
func _on_connection_opacity_slider_value_changed(value: float) -> void:
|
||||
connection_opacity = value
|
||||
if graph_edit.get_child_count() <= 1: return
|
||||
var target_node: GraphNode = graph_edit.get_child(1)
|
||||
for slot_index in target_node.get_child_count():
|
||||
target_node.set_slot_color_right(slot_index, Color(target_node.get_slot_color_right(slot_index), connection_opacity))
|
||||
|
||||
#endregion
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dwepw5abso8f1
|
||||
|
|
@ -1,357 +0,0 @@
|
|||
[gd_scene load_steps=21 format=3 uid="uid://f4ie0ytcicf0"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwepw5abso8f1" path="res://addons/signal_lens/editor/signal_lens_editor_panel.gd" id="1_abwge"]
|
||||
[ext_resource type="PackedScene" uid="uid://bps1tpcpa1fj2" path="res://addons/signal_lens/editor/signal_lens_logger.tscn" id="3_v6bl3"]
|
||||
|
||||
[sub_resource type="Image" id="Image_fhx01"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 69, 224, 224, 224, 222, 224, 224, 224, 221, 224, 224, 224, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 68, 224, 224, 224, 220, 224, 224, 224, 220, 227, 227, 227, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 69, 224, 224, 224, 222, 224, 224, 224, 221, 224, 224, 224, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 68, 224, 224, 224, 220, 224, 224, 224, 220, 224, 224, 224, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 69, 224, 224, 224, 222, 224, 224, 224, 220, 224, 224, 224, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 68, 224, 224, 224, 220, 224, 224, 224, 220, 224, 224, 224, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_v6bl3"]
|
||||
image = SubResource("Image_fhx01")
|
||||
|
||||
[sub_resource type="Image" id="Image_qib1m"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_kqale"]
|
||||
image = SubResource("Image_qib1m")
|
||||
|
||||
[sub_resource type="Image" id="Image_4h13t"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 3, 224, 224, 224, 105, 224, 224, 224, 192, 224, 224, 224, 244, 224, 224, 224, 238, 224, 224, 224, 197, 224, 224, 224, 105, 255, 255, 255, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 232, 232, 23, 224, 224, 224, 207, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 198, 226, 226, 226, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 6, 224, 224, 224, 205, 224, 224, 224, 255, 224, 224, 224, 218, 224, 224, 224, 83, 237, 237, 237, 14, 237, 237, 237, 14, 224, 224, 224, 82, 224, 224, 224, 220, 224, 224, 224, 255, 224, 224, 224, 197, 255, 255, 255, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 102, 224, 224, 224, 255, 224, 224, 224, 218, 227, 227, 227, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 221, 224, 224, 224, 255, 224, 224, 224, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 198, 224, 224, 224, 255, 224, 224, 224, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 86, 224, 224, 224, 255, 224, 224, 224, 194, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 1, 255, 255, 255, 4, 224, 224, 224, 238, 224, 224, 224, 255, 227, 227, 227, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 19, 224, 224, 224, 255, 224, 224, 224, 233, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 160, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 20, 224, 224, 224, 255, 224, 224, 224, 237, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 10, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 230, 230, 230, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 90, 224, 224, 224, 255, 224, 224, 224, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 42, 224, 224, 224, 245, 224, 224, 224, 245, 224, 224, 224, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 232, 232, 22, 224, 224, 224, 224, 224, 224, 224, 255, 224, 224, 224, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 96, 226, 226, 226, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 20, 224, 224, 224, 88, 224, 224, 224, 221, 224, 224, 224, 255, 224, 224, 224, 199, 255, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 200, 227, 227, 227, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 236, 224, 224, 224, 195, 224, 224, 224, 96, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_vbdfx"]
|
||||
image = SubResource("Image_4h13t")
|
||||
|
||||
[sub_resource type="Image" id="Image_5voln"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 184, 224, 224, 224, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 75, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 227, 224, 224, 224, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 243, 224, 224, 224, 217, 224, 224, 224, 191, 224, 224, 224, 166, 224, 224, 224, 140, 224, 224, 224, 114, 224, 224, 224, 89, 227, 227, 227, 63, 229, 229, 229, 38, 234, 234, 234, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_4kas2"]
|
||||
image = SubResource("Image_5voln")
|
||||
|
||||
[sub_resource type="Image" id="Image_dyx7v"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 127, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 85, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 234, 231, 231, 231, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 192, 224, 224, 224, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 64, 227, 227, 227, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_c4iiw"]
|
||||
image = SubResource("Image_dyx7v")
|
||||
|
||||
[sub_resource type="Image" id="Image_5afs0"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 75, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 227, 224, 224, 224, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 75, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 227, 224, 224, 224, 73, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 226, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 96, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 245, 224, 224, 224, 42, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 43, 224, 224, 224, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 213, 230, 230, 230, 10, 230, 230, 230, 10, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 159, 224, 224, 224, 160, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 227, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 226, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 73, 224, 224, 224, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 226, 227, 227, 227, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_j6ipi"]
|
||||
image = SubResource("Image_5afs0")
|
||||
|
||||
[sub_resource type="Image" id="Image_jffwt"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 163, 224, 224, 224, 255, 224, 224, 224, 218, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 8, 224, 224, 224, 220, 224, 224, 224, 255, 224, 224, 224, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 228, 28, 224, 224, 224, 235, 224, 224, 224, 255, 224, 224, 224, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 143, 224, 224, 224, 255, 224, 224, 224, 233, 227, 227, 227, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 226, 226, 69, 224, 224, 224, 253, 224, 224, 224, 255, 224, 224, 224, 105, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 110, 224, 224, 224, 255, 224, 224, 224, 252, 224, 224, 224, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 119, 224, 224, 224, 255, 224, 224, 224, 250, 224, 224, 224, 49, 226, 226, 226, 52, 224, 224, 224, 251, 224, 224, 224, 255, 224, 224, 224, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 169, 224, 224, 224, 255, 224, 224, 224, 207, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 170, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 122, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 227, 227, 71, 224, 224, 224, 253, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 252, 224, 224, 224, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 29, 224, 224, 224, 236, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 234, 227, 227, 227, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 164, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 181, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_tvsga"]
|
||||
image = SubResource("Image_jffwt")
|
||||
|
||||
[sub_resource type="Image" id="Image_wqlh8"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 2, 224, 224, 224, 96, 224, 224, 224, 188, 224, 224, 224, 233, 224, 224, 224, 233, 224, 224, 224, 188, 224, 224, 224, 97, 255, 255, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 40, 224, 224, 224, 211, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 213, 224, 224, 224, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 228, 37, 224, 224, 224, 230, 224, 224, 224, 255, 224, 224, 224, 218, 224, 224, 224, 82, 224, 224, 224, 16, 224, 224, 224, 16, 224, 224, 224, 83, 224, 224, 224, 219, 224, 224, 224, 255, 224, 224, 224, 231, 229, 229, 229, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 4, 224, 224, 224, 219, 224, 224, 224, 255, 224, 224, 224, 218, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 17, 224, 224, 224, 219, 224, 224, 224, 255, 224, 224, 224, 221, 255, 255, 255, 4, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 97, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 82, 0, 0, 0, 0, 226, 226, 226, 69, 224, 224, 224, 222, 224, 224, 224, 221, 224, 224, 224, 68, 0, 0, 0, 0, 224, 224, 224, 85, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 94, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 217, 224, 224, 224, 255, 224, 224, 224, 255, 236, 236, 236, 13, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 219, 0, 0, 0, 0, 227, 227, 227, 18, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 212, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 214, 224, 224, 224, 255, 224, 224, 224, 255, 237, 237, 237, 14, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 217, 0, 0, 0, 0, 230, 230, 230, 20, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 97, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 82, 0, 0, 0, 0, 224, 224, 224, 68, 224, 224, 224, 220, 224, 224, 224, 220, 224, 224, 224, 65, 0, 0, 0, 0, 224, 224, 224, 88, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 93, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 5, 224, 224, 224, 223, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 19, 224, 224, 224, 223, 224, 224, 224, 255, 224, 224, 224, 221, 255, 255, 255, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 42, 224, 224, 224, 234, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 84, 224, 224, 224, 17, 227, 227, 227, 18, 226, 226, 226, 87, 224, 224, 224, 223, 224, 224, 224, 255, 224, 224, 224, 233, 224, 224, 224, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 227, 227, 45, 224, 224, 224, 217, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 217, 226, 226, 226, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 3, 224, 224, 224, 99, 224, 224, 224, 189, 224, 224, 224, 233, 224, 224, 224, 233, 224, 224, 224, 189, 224, 224, 224, 98, 255, 255, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_vayht"]
|
||||
image = SubResource("Image_wqlh8")
|
||||
|
||||
[sub_resource type="Image" id="Image_ioqw6"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 7, 224, 224, 224, 138, 224, 224, 224, 231, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 176, 0, 0, 0, 0, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 138, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 172, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 231, 224, 224, 224, 255, 224, 224, 224, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 192, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 193, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 128, 0, 0, 0, 0, 224, 224, 224, 129, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 129, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 128, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 1, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 194, 224, 224, 224, 193, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 129, 224, 224, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 232, 224, 224, 224, 255, 224, 224, 224, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 76, 224, 224, 224, 255, 224, 224, 224, 230, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 137, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 132, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 6, 224, 224, 224, 135, 224, 224, 224, 230, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 230, 224, 224, 224, 132, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_0xhoi"]
|
||||
image = SubResource("Image_ioqw6")
|
||||
|
||||
[node name="Signal Lens" type="Control" node_paths=PackedStringArray("graph_edit", "logger_button", "node_path_line_edit", "refresh_button", "options_button", "clear_button", "inactive_text", "warning_text", "pin_checkbox", "keep_emissions_checkbox", "emission_speed_slider", "emission_speed_icon", "connection_opacity_icon", "logger")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource("1_abwge")
|
||||
graph_edit = NodePath("EditorPanel/GraphEdit")
|
||||
logger_button = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/LoggerButton")
|
||||
node_path_line_edit = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/LineEdit")
|
||||
refresh_button = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/RefreshButton")
|
||||
options_button = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/OptionsButton")
|
||||
clear_button = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/ClearButton")
|
||||
inactive_text = NodePath("EditorPanel/InactiveTextContainer/InactiveText")
|
||||
warning_text = NodePath("EditorPanel/WarningTextContainer/WarningText")
|
||||
pin_checkbox = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/PinCheckbox")
|
||||
keep_emissions_checkbox = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/KeepEmissionsCheckbox")
|
||||
emission_speed_slider = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/EmissionSpeedContainer/EmissionSpeedSlider")
|
||||
emission_speed_icon = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/EmissionSpeedContainer/EmissionSpeedIcon")
|
||||
connection_opacity_icon = NodePath("EditorPanel/MainButtonsContainer/HBoxContainer2/ConnectionOpacityContainer/ConnectionOpacityIcon")
|
||||
logger = NodePath("EditorPanel/Logger")
|
||||
|
||||
[node name="EditorPanel" type="PanelContainer" parent="."]
|
||||
self_modulate = Color(1, 1, 1, 0)
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="GraphEdit" type="GraphEdit" parent="EditorPanel"]
|
||||
layout_mode = 2
|
||||
grid_pattern = 1
|
||||
connection_lines_thickness = 3.0
|
||||
zoom = 0.8
|
||||
minimap_enabled = false
|
||||
minimap_size = Vector2(120, 80)
|
||||
show_menu = false
|
||||
show_zoom_label = true
|
||||
show_grid_buttons = false
|
||||
show_minimap_button = false
|
||||
|
||||
[node name="MainButtonsContainer" type="MarginContainer" parent="EditorPanel"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 10
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="EditorPanel/MainButtonsContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
mouse_filter = 2
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="OptionsButton" type="MenuButton" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
custom_minimum_size = Vector2(0, 28)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Options Button
|
||||
See and change options."
|
||||
icon = SubResource("ImageTexture_v6bl3")
|
||||
icon_alignment = 1
|
||||
item_count = 5
|
||||
popup/item_0/text = "Hide signals without connections"
|
||||
popup/item_0/checkable = 1
|
||||
popup/item_0/checked = true
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = "Hide built-in signals"
|
||||
popup/item_1/checkable = 1
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = "Show graph toolbar"
|
||||
popup/item_2/checkable = 1
|
||||
popup/item_2/id = 2
|
||||
popup/item_3/text = "Show graph minimap"
|
||||
popup/item_3/checkable = 1
|
||||
popup/item_3/id = 3
|
||||
popup/item_4/text = "More options..."
|
||||
popup/item_4/id = 4
|
||||
|
||||
[node name="LoggerButton" type="Button" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Log Button
|
||||
Open Signal Log."
|
||||
toggle_mode = true
|
||||
icon = SubResource("ImageTexture_kqale")
|
||||
|
||||
[node name="RefreshButton" type="Button" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Refresh Button
|
||||
Redraw the graph."
|
||||
disabled = true
|
||||
icon = SubResource("ImageTexture_vbdfx")
|
||||
|
||||
[node name="ClearButton" type="Button" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Clear Button
|
||||
Clear the graph."
|
||||
disabled = true
|
||||
icon = SubResource("ImageTexture_4kas2")
|
||||
|
||||
[node name="PinCheckbox" type="CheckButton" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Pin This Node
|
||||
If toggled on, ignores any new selections made in the remote scene."
|
||||
disabled = true
|
||||
icon = SubResource("ImageTexture_c4iiw")
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 0
|
||||
theme_override_font_sizes/font_size = 14
|
||||
placeholder_text = "/root"
|
||||
editable = false
|
||||
select_all_on_focus = true
|
||||
|
||||
[node name="KeepEmissionsCheckbox" type="CheckButton" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Keep emissions
|
||||
If toggled on, keeps any received signal emissions drawn in the graph.
|
||||
When toggled off, drawn signal emissions will fade out."
|
||||
icon = SubResource("ImageTexture_j6ipi")
|
||||
|
||||
[node name="EmissionSpeedContainer" type="HBoxContainer" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Emission Duration
|
||||
Controls the speed of the fade out of signal emissions.
|
||||
Left means means quick, right means slow."
|
||||
theme_override_constants/separation = 4
|
||||
|
||||
[node name="EmissionSpeedIcon" type="Button" parent="EditorPanel/MainButtonsContainer/HBoxContainer2/EmissionSpeedContainer"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
icon = SubResource("ImageTexture_tvsga")
|
||||
flat = true
|
||||
|
||||
[node name="EmissionSpeedSlider" type="HSlider" parent="EditorPanel/MainButtonsContainer/HBoxContainer2/EmissionSpeedContainer"]
|
||||
custom_minimum_size = Vector2(40, 0)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
min_value = 0.3
|
||||
max_value = 6.0
|
||||
step = 0.1
|
||||
value = 1.0
|
||||
|
||||
[node name="ConnectionOpacityContainer" type="HBoxContainer" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Connection Opacity
|
||||
Controls how transparent the connections betweent the nodes are.
|
||||
Left means more transparent, right means more opaque."
|
||||
theme_override_constants/separation = 4
|
||||
|
||||
[node name="ConnectionOpacityIcon" type="Button" parent="EditorPanel/MainButtonsContainer/HBoxContainer2/ConnectionOpacityContainer"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
icon = SubResource("ImageTexture_vayht")
|
||||
flat = true
|
||||
|
||||
[node name="ConnectionOpacitySlider" type="HSlider" parent="EditorPanel/MainButtonsContainer/HBoxContainer2/ConnectionOpacityContainer"]
|
||||
custom_minimum_size = Vector2(40, 0)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
min_value = 0.1
|
||||
max_value = 1.0
|
||||
step = 0.01
|
||||
value = 0.3
|
||||
|
||||
[node name="RepoButton" type="Button" parent="EditorPanel/MainButtonsContainer/HBoxContainer2"]
|
||||
modulate = Color(1, 0.372549, 0.372549, 1)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
tooltip_text = "Signal Lens on Github
|
||||
Access the plugin's repository on Github to report issues, suggest features and contribute to the project."
|
||||
icon = SubResource("ImageTexture_0xhoi")
|
||||
flat = true
|
||||
|
||||
[node name="Logger" parent="EditorPanel" instance=ExtResource("3_v6bl3")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_top = 55
|
||||
theme_override_constants/margin_bottom = 55
|
||||
|
||||
[node name="InactiveTextContainer" type="PanelContainer" parent="EditorPanel"]
|
||||
custom_minimum_size = Vector2(300, 50)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="InactiveText" type="Label" parent="EditorPanel/InactiveTextContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "Play project to start debugging"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="WarningTextContainer" type="PanelContainer" parent="EditorPanel"]
|
||||
custom_minimum_size = Vector2(300, 50)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="WarningText" type="Label" parent="EditorPanel/WarningTextContainer"]
|
||||
visible = false
|
||||
modulate = Color(0.996567, 0.82419, 0.525376, 1)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="EditorPanel"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 8
|
||||
|
||||
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
||||
[connection signal="node_deselected" from="EditorPanel/GraphEdit" to="." method="_on_graph_edit_node_deselected"]
|
||||
[connection signal="node_selected" from="EditorPanel/GraphEdit" to="." method="_on_graph_edit_node_selected"]
|
||||
[connection signal="toggled" from="EditorPanel/MainButtonsContainer/HBoxContainer2/LoggerButton" to="." method="_on_logger_button_toggled"]
|
||||
[connection signal="pressed" from="EditorPanel/MainButtonsContainer/HBoxContainer2/RefreshButton" to="." method="_on_refresh_button_pressed"]
|
||||
[connection signal="pressed" from="EditorPanel/MainButtonsContainer/HBoxContainer2/ClearButton" to="." method="_on_clear_button_pressed"]
|
||||
[connection signal="toggled" from="EditorPanel/MainButtonsContainer/HBoxContainer2/PinCheckbox" to="." method="_on_pin_checkbox_toggled"]
|
||||
[connection signal="toggled" from="EditorPanel/MainButtonsContainer/HBoxContainer2/KeepEmissionsCheckbox" to="." method="_on_keep_emissions_checkbox_toggled"]
|
||||
[connection signal="value_changed" from="EditorPanel/MainButtonsContainer/HBoxContainer2/EmissionSpeedContainer/EmissionSpeedSlider" to="." method="_on_emission_speed_slider_value_changed"]
|
||||
[connection signal="value_changed" from="EditorPanel/MainButtonsContainer/HBoxContainer2/ConnectionOpacityContainer/ConnectionOpacitySlider" to="." method="_on_connection_opacity_slider_value_changed"]
|
||||
[connection signal="pressed" from="EditorPanel/MainButtonsContainer/HBoxContainer2/RepoButton" to="." method="_on_repo_button_pressed"]
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
## Base class for all graph nodes instantiated
|
||||
## in the debugger panel
|
||||
class_name SignalLensGraphNode
|
||||
extends GraphNode
|
||||
|
||||
# TODO: This node should absorb a lot of the implemenation contained in signal_lens_editor
|
||||
# Things like instantiating the buttons, and setting up the node
|
||||
# This would be a next step to make the code in signal_lens_editor.gd
|
||||
# much more readable and easily testable
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dibsrsyq5uw81
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://cicwkklbx7x1m"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dibsrsyq5uw81" path="res://addons/signal_lens/editor/signal_lens_graph_node.gd" id="1_p48ar"]
|
||||
|
||||
[node name="SignalLensGraphNode" type="GraphNode"]
|
||||
offset_left = 358.0
|
||||
offset_top = 170.5
|
||||
offset_right = 383.0
|
||||
offset_bottom = 232.5
|
||||
mouse_filter = 1
|
||||
position_offset = Vector2(358, 170.5)
|
||||
script = ExtResource("1_p48ar")
|
||||
|
|
@ -1,222 +0,0 @@
|
|||
[gd_scene load_steps=13 format=3 uid="uid://bps1tpcpa1fj2"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dpn0ev0370mga" path="res://addons/signal_lens/editor/logger/logger.gd" id="1_16bi3"]
|
||||
|
||||
[sub_resource type="StyleBoxLine" id="StyleBoxLine_16bi3"]
|
||||
content_margin_left = 2.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 0.0
|
||||
content_margin_bottom = 4.0
|
||||
color = Color(0.499956, 0.499956, 0.499956, 0.479)
|
||||
thickness = 2
|
||||
vertical = true
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_v6bl3"]
|
||||
bg_color = Color(0.0605303, 0.0605303, 0.0605303, 0.878431)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
|
||||
corner_radius_top_left = 10
|
||||
corner_radius_top_right = 10
|
||||
corner_radius_bottom_right = 10
|
||||
corner_radius_bottom_left = 10
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_v6bl3"]
|
||||
font_size = 12
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_16bi3"]
|
||||
content_margin_left = 0.0
|
||||
content_margin_top = 0.0
|
||||
content_margin_right = 0.0
|
||||
content_margin_bottom = 0.0
|
||||
bg_color = Color(0.262933, 0.262932, 0.262932, 0.6)
|
||||
corner_radius_top_left = 30
|
||||
corner_radius_top_right = 30
|
||||
corner_radius_bottom_right = 30
|
||||
corner_radius_bottom_left = 30
|
||||
corner_detail = 5
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_tqw23"]
|
||||
font_size = 8
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_16bi3"]
|
||||
font_size = 10
|
||||
|
||||
[sub_resource type="Image" id="Image_16bi3"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 181, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 181, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 181, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_tqw23"]
|
||||
image = SubResource("Image_16bi3")
|
||||
|
||||
[sub_resource type="Image" id="Image_5voln"]
|
||||
data = {
|
||||
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 184, 224, 224, 224, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 75, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 227, 224, 224, 224, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 228, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 243, 224, 224, 224, 217, 224, 224, 224, 191, 224, 224, 224, 166, 224, 224, 224, 140, 224, 224, 224, 114, 224, 224, 224, 89, 227, 227, 227, 63, 229, 229, 229, 38, 234, 234, 234, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id="ImageTexture_4kas2"]
|
||||
image = SubResource("Image_5voln")
|
||||
|
||||
[sub_resource type="StyleBoxLine" id="StyleBoxLine_v6bl3"]
|
||||
color = Color(0.244776, 0.244776, 0.244776, 1)
|
||||
|
||||
[node name="Logger" type="MarginContainer" node_paths=PackedStringArray("log_container", "copy_button", "clear_button", "v_split_container", "h_split_container", "log_scroll", "counter_label")]
|
||||
custom_minimum_size = Vector2(400, 0)
|
||||
anchors_preset = 9
|
||||
anchor_bottom = 1.0
|
||||
offset_right = 277.0
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 0
|
||||
mouse_filter = 2
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 30
|
||||
theme_override_constants/margin_bottom = 30
|
||||
script = ExtResource("1_16bi3")
|
||||
log_container = NodePath("VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/ScrollContainer/LogContainer")
|
||||
copy_button = NodePath("VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CopyButton")
|
||||
clear_button = NodePath("VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ClearButton")
|
||||
v_split_container = NodePath("VSplitContainer")
|
||||
h_split_container = NodePath("VSplitContainer/HSplitContainer")
|
||||
log_scroll = NodePath("VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/ScrollContainer")
|
||||
counter_label = NodePath("VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CounterLabel")
|
||||
|
||||
[node name="Control" type="Control" parent="."]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="VSeparator" type="VSeparator" parent="Control"]
|
||||
layout_mode = 0
|
||||
offset_left = 50.0
|
||||
offset_top = -16.0
|
||||
offset_right = 54.0
|
||||
offset_bottom = 4.0
|
||||
mouse_filter = 2
|
||||
theme_override_styles/separator = SubResource("StyleBoxLine_16bi3")
|
||||
|
||||
[node name="VSplitContainer" type="VSplitContainer" parent="."]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
drag_area_margin_end = 130
|
||||
|
||||
[node name="HSplitContainer" type="HSplitContainer" parent="VSplitContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
mouse_filter = 2
|
||||
split_offset = -130
|
||||
|
||||
[node name="Panel" type="MarginContainer" parent="VSplitContainer/HSplitContainer"]
|
||||
custom_minimum_size = Vector2(260, 80)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="VSplitContainer/HSplitContainer/Panel"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_v6bl3")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 10
|
||||
theme_override_constants/margin_right = 10
|
||||
theme_override_constants/margin_bottom = 10
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TitleLabel" type="Label" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
text = "Signal Log"
|
||||
label_settings = SubResource("LabelSettings_v6bl3")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(10, 9)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 4
|
||||
tooltip_text = "A log will be recorded based on every signal emitted by the currently selected node in the Scene Tree.
|
||||
|
||||
The log consists of:
|
||||
- Datetime: Human-friendly date and time at the time of emission, e.g. 2025-07-08T10:27:33
|
||||
- Timestamp: Amount of milliseconds passed since the project started running, e.g. 00:00:05:646
|
||||
- Process: Current _process frame at the time of emission, e.g. 255 (look for _get_process_frame() in the godot documentation for more info)
|
||||
- Physics: Current _physics_process frame at the time of emission, e.g. 567 (look for _get_physics_frame() in the godot documentation for more info)
|
||||
- Node Name: The node that is emitting the signal.
|
||||
- Signal Name: The signal being emitted."
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_16bi3")
|
||||
|
||||
[node name="Button" type="Label" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/PanelContainer"]
|
||||
layout_mode = 2
|
||||
text = "?"
|
||||
label_settings = SubResource("LabelSettings_tqw23")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="CounterLabel" type="Label" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
modulate = Color(0.501407, 0.501406, 0.501406, 1)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
label_settings = SubResource("LabelSettings_16bi3")
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="CopyButton" type="Button" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
tooltip_text = "Copy All
|
||||
Copies all the logs to the clipboard."
|
||||
icon = SubResource("ImageTexture_tqw23")
|
||||
flat = true
|
||||
|
||||
[node name="ClearButton" type="Button" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
tooltip_text = "Clear
|
||||
Clears all the logs."
|
||||
icon = SubResource("ImageTexture_4kas2")
|
||||
flat = true
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/separator = SubResource("StyleBoxLine_v6bl3")
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="LogContainer" type="VBoxContainer" parent="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/separation = 13
|
||||
|
||||
[node name="Control" type="Control" parent="VSplitContainer/HSplitContainer"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Control" type="Control" parent="VSplitContainer"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[connection signal="dragged" from="VSplitContainer/HSplitContainer" to="." method="_on_h_split_container_dragged"]
|
||||
[connection signal="pressed" from="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CopyButton" to="." method="_on_copy_button_pressed"]
|
||||
[connection signal="pressed" from="VSplitContainer/HSplitContainer/Panel/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ClearButton" to="." method="_on_clear_button_pressed"]
|
||||
|
Before Width: | Height: | Size: 31 KiB |
|
|
@ -1,35 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://brdnqivcfnsun"
|
||||
path.bptc="res://.godot/imported/icon_logo.png-5b28148684ce391f1d573fc1b0f67ff7.bptc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/signal_lens/icons/icon_logo.png"
|
||||
dest_files=["res://.godot/imported/icon_logo.png-5b28148684ce391f1d573fc1b0f67ff7.bptc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=true
|
||||
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=1
|
||||
|
Before Width: | Height: | Size: 10 KiB |
|
|
@ -1,35 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dgayeoxpknqkv"
|
||||
path.bptc="res://.godot/imported/icon_monogram.png-7d0e77813dbd8089a5f529fe0e619493.bptc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/signal_lens/icons/icon_monogram.png"
|
||||
dest_files=["res://.godot/imported/icon_monogram.png-7d0e77813dbd8089a5f529fe0e619493.bptc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=true
|
||||
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=1
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
## Initializes a hidden inspector plugin that
|
||||
## enables the automatic grabbing of node paths when selecting them
|
||||
## in the remote scene
|
||||
class_name SignalLensRemoteNodeInspector
|
||||
extends EditorInspectorPlugin
|
||||
|
||||
## Emitted on user selection of node in remote scene
|
||||
signal node_selected(node_path: NodePath)
|
||||
|
||||
func _can_handle(object: Object) -> bool:
|
||||
# If the requested node is a section in the project settings, it will skip receiving its
|
||||
# signals. This line use node type inspection, the "SectionedInspectorFilter" type is a
|
||||
# built-in type in the editor for the project settings. (See #21)
|
||||
if object.get_property_list()[0]["name"] == "SectionedInspectorFilter": return false
|
||||
|
||||
return object.get('Node/path') != null
|
||||
|
||||
|
||||
func _parse_begin(object: Object) -> void:
|
||||
node_selected.emit(object.get('Node/path'))
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dpjyrlyj58ma2
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
[plugin]
|
||||
|
||||
name="Signal Lens"
|
||||
description="Signal Lens is a visual debugger for signal connections.
|
||||
Given any node in a project, it will render a graph with all the connections to that node's signals while the project is playing in the editor.
|
||||
It doesn't matter if that node is an autoload, or if the signal's are built-in, or custom made - Signal Lens will draw it all when given the node's global path in the remote."
|
||||
author="Yann Lemos"
|
||||
version="1.4.0"
|
||||
script="plugin.gd"
|
||||
|
|
@ -1,121 +0,0 @@
|
|||
## Initializes Signal Lens plugin and its internal components
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
## Preloaded reference to the editor panel that will be added to
|
||||
## Godot's debugger bottom panel
|
||||
const SIGNAL_LENS_EDITOR_PANEL = preload("res://addons/signal_lens/editor/signal_lens_editor_panel.tscn")
|
||||
|
||||
## Name of autoload node/class that will be instantiated in the remote scene
|
||||
## so we can retrieve/send data to it
|
||||
const AUTOLOAD_NAME = "SignalLens"
|
||||
|
||||
## Debugger object that listens to Godot's callbacks
|
||||
var debugger: SignalLensDebugger = null
|
||||
|
||||
## Inspector plugin that allows selecting remote scene nodes
|
||||
var remote_node_inspector: SignalLensRemoteNodeInspector = null
|
||||
|
||||
## Editor panel that draws data received from remote scene
|
||||
var editor_panel: SignalLensEditorPanel = null
|
||||
|
||||
|
||||
## Setups the plugin and connects internal components
|
||||
## Called on enter editor scene tree
|
||||
func initialize():
|
||||
# Create debugger and inspector objects
|
||||
debugger = SignalLensDebugger.new()
|
||||
remote_node_inspector = SignalLensRemoteNodeInspector.new()
|
||||
|
||||
# Register plugins in the engine
|
||||
add_inspector_plugin(remote_node_inspector)
|
||||
add_debugger_plugin(debugger)
|
||||
|
||||
# Add plugin project settings
|
||||
setup_project_settings()
|
||||
|
||||
# Connect node selection in scene tree to backend request for
|
||||
# that node's signal data
|
||||
remote_node_inspector.node_selected.connect(debugger.request_node_data_from_remote)
|
||||
|
||||
# Create editor panel and add it to the debugger
|
||||
editor_panel = SIGNAL_LENS_EDITOR_PANEL.instantiate()
|
||||
debugger.setup_editor_panel(editor_panel)
|
||||
|
||||
# Connect data received from debugger to editor panel so data can be
|
||||
# rendered in graph form
|
||||
debugger.received_node_data_from_remote.connect(editor_panel.draw_node_data)
|
||||
|
||||
# Connect signal emissions from targeted node to editor panel
|
||||
# so they can be rendered in the graph
|
||||
debugger.received_signal_emission_from_remote.connect(editor_panel.draw_signal_emission)
|
||||
|
||||
# Connect refresh request to debugger so we can retrieve data from
|
||||
# currently selected node on demand
|
||||
editor_panel.node_data_requested.connect(debugger.request_node_data_from_remote)
|
||||
|
||||
# Connect start and stop debugging signals for editor panel setup/cleanup
|
||||
debugger.started.connect(editor_panel.start_session)
|
||||
debugger.stopped.connect(editor_panel.stop_session)
|
||||
|
||||
# Connect node selection to editor panel so line edit can reflect currently
|
||||
# selected node's path
|
||||
remote_node_inspector.node_selected.connect(editor_panel.assign_node_path)
|
||||
|
||||
|
||||
## Creates and sets default values for Project Settings related to the plugin
|
||||
func setup_project_settings():
|
||||
# Resize on open
|
||||
var setting_resize_panel_on_open = "addons/Signal Lens/resize_panel_on_open"
|
||||
if not ProjectSettings.has_setting(setting_resize_panel_on_open):
|
||||
ProjectSettings.set_setting(setting_resize_panel_on_open, true)
|
||||
ProjectSettings.add_property_info({
|
||||
"name": setting_resize_panel_on_open,
|
||||
"type": TYPE_BOOL,
|
||||
"hint": TYPE_BOOL,
|
||||
"hint_string": TYPE_BOOL
|
||||
})
|
||||
ProjectSettings.set_initial_value(setting_resize_panel_on_open, true)
|
||||
ProjectSettings.set_as_basic(setting_resize_panel_on_open, true)
|
||||
|
||||
# Resize on open
|
||||
var setting_height_to_resize_to = "addons/Signal Lens/height_to_resize_to"
|
||||
if not ProjectSettings.has_setting(setting_height_to_resize_to):
|
||||
ProjectSettings.set_setting(setting_height_to_resize_to, 500)
|
||||
ProjectSettings.add_property_info({
|
||||
"name": setting_height_to_resize_to,
|
||||
"type": TYPE_FLOAT,
|
||||
"hint": PROPERTY_HINT_RANGE,
|
||||
"hint_string": "200, 900"
|
||||
})
|
||||
ProjectSettings.set_initial_value(setting_height_to_resize_to, 500)
|
||||
ProjectSettings.set_as_basic(setting_height_to_resize_to, true)
|
||||
|
||||
|
||||
## Removes plugin from editor and cleans references
|
||||
func cleanup():
|
||||
# De-register plugins from engine
|
||||
remove_debugger_plugin(debugger)
|
||||
remove_inspector_plugin(remote_node_inspector)
|
||||
|
||||
# Remove references to initialized components
|
||||
remote_node_inspector = null
|
||||
debugger = null
|
||||
editor_panel = null
|
||||
|
||||
|
||||
#region Engine Callbacks
|
||||
|
||||
func _enter_tree() -> void:
|
||||
initialize()
|
||||
|
||||
func _exit_tree() -> void:
|
||||
cleanup()
|
||||
|
||||
func _enable_plugin():
|
||||
add_autoload_singleton(AUTOLOAD_NAME, "res://addons/signal_lens/autoload/signal_lens_autoload.gd")
|
||||
|
||||
func _disable_plugin():
|
||||
remove_autoload_singleton(AUTOLOAD_NAME)
|
||||
|
||||
#endregion
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://cuq28xy5jnlow
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
extends Control
|
||||
|
||||
signal counter_updated(new_value: int)
|
||||
|
||||
@onready var counter_value_label: Label = $VBoxContainer/Counter/CounterValueLabel
|
||||
|
||||
var _counter: int = 0
|
||||
|
||||
func _ready() -> void:
|
||||
counter_updated.connect(func(value): print("Signal fired from anonymous lambda! Value is " + str(value)))
|
||||
|
||||
func _on_counter_updated(new_value: int) -> void:
|
||||
counter_value_label.text = str(new_value)
|
||||
|
||||
func _on_add_button_pressed() -> void:
|
||||
_counter += 1
|
||||
counter_updated.emit(_counter)
|
||||
|
||||
func _on_counter_value_label_focus_entered() -> void:
|
||||
print("Player checking out counter value")
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dqa2qee7m1lb0
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://ds8cfe4b5j2x6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dqa2qee7m1lb0" path="res://addons/signal_lens/test_scene/signal_lens_test_scene.gd" id="1_3ongb"]
|
||||
|
||||
[node name="SignalLensTestScene" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_3ongb")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -62.0
|
||||
offset_top = -29.0
|
||||
offset_right = 62.0
|
||||
offset_bottom = 29.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="AddButton" type="Button" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Add to counter"
|
||||
|
||||
[node name="Counter" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/Counter"]
|
||||
layout_mode = 2
|
||||
text = "Total times clicked: "
|
||||
|
||||
[node name="CounterValueLabel" type="Label" parent="VBoxContainer/Counter"]
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
|
||||
[connection signal="counter_updated" from="." to="." method="_on_counter_updated"]
|
||||
[connection signal="pressed" from="VBoxContainer/AddButton" to="." method="_on_add_button_pressed"]
|
||||
[connection signal="focus_entered" from="VBoxContainer/Counter/CounterValueLabel" to="." method="_on_counter_value_label_focus_entered"]
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://dknt1oiyei5e5"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dg6f6na1nn2c6" path="res://enemies/enemy.gd" id="1_l7e03"]
|
||||
[ext_resource type="Texture2D" uid="uid://db2efj41fwjee" path="res://Assets/Characters/72 Character Free/Char 1/Character 1.png" id="2_cmo2f"]
|
||||
[ext_resource type="Texture2D" uid="uid://d2thnsqp6lb4r" path="res://Assets/Characters/chibi1.png" id="2_cmo2f"]
|
||||
[ext_resource type="PackedScene" uid="uid://daiqb0q373002" path="res://UI/health_bar_3d.tscn" id="3_cmo2f"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_7frlh"]
|
||||
|
|
@ -18,15 +18,13 @@ script = ExtResource("1_l7e03")
|
|||
speed = 1
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyA"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0491967, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.289246, 0)
|
||||
shape = SubResource("SphereShape3D_7frlh")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="EnemyA"]
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, -0.0436401, 0)
|
||||
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, -0.0436401, 0)
|
||||
billboard = 2
|
||||
texture = ExtResource("2_cmo2f")
|
||||
hframes = 12
|
||||
vframes = 22
|
||||
|
||||
[node name="HealthBar3D" parent="EnemyA" instance=ExtResource("3_cmo2f")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0)
|
||||
|
|
|
|||
11
game_menu.gd
|
|
@ -1,11 +0,0 @@
|
|||
extends Control
|
||||
|
||||
var selected_tower
|
||||
|
||||
func _ready() -> void:
|
||||
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
|
||||
|
||||
|
||||
func _on_EventBus_tower_selected(tower : PackedScene, tower_button : TowerButton):
|
||||
selected_tower = tower
|
||||
selected_tower_button = tower_button
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://jg5ny0u7buos
|
||||
362
game_menu.tscn
|
|
@ -1,362 +0,0 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://djyye2otjju2d"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://bbp4qcbwkeg7x" path="res://default_theme.tres" id="1_xxfb2"]
|
||||
[ext_resource type="PackedScene" uid="uid://bqpeu50pgsdfk" path="res://UI/tower_button.tscn" id="2_qus6b"]
|
||||
[ext_resource type="Script" uid="uid://jg5ny0u7buos" path="res://game_menu.gd" id="2_wr0q8"]
|
||||
[ext_resource type="Texture2D" uid="uid://uptdcefxlv4c" path="res://Assets/Icones/ppdf_bio_image_placeholder_2.png" id="3_wr0q8"]
|
||||
[ext_resource type="Script" uid="uid://tn3qdhcyaxsg" path="res://UI/upgrade_button.gd" id="4_3rcmp"]
|
||||
[ext_resource type="Texture2D" uid="uid://dksohsrys0yy7" path="res://Assets/Icones/baby-face.svg" id="5_pbvm6"]
|
||||
|
||||
[node name="GameMenu" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("1_xxfb2")
|
||||
script = ExtResource("2_wr0q8")
|
||||
|
||||
[node name="Background" type="Panel" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="MenuHeader" type="HBoxContainer" parent="."]
|
||||
layout_mode = 1
|
||||
offset_left = 304.0
|
||||
offset_right = 1918.0
|
||||
offset_bottom = 82.0
|
||||
alignment = 1
|
||||
|
||||
[node name="ButtonSettings" type="Button" parent="MenuHeader"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Settings"
|
||||
|
||||
[node name="ButtonPause" type="Button" parent="MenuHeader"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Pause"
|
||||
|
||||
[node name="ButtonContinue" type="Button" parent="MenuHeader"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Continue"
|
||||
|
||||
[node name="ButtonQuit" type="Button" parent="MenuHeader"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Quit"
|
||||
|
||||
[node name="ButtonMoney" type="Button" parent="MenuHeader"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Money"
|
||||
|
||||
[node name="Towers" type="VBoxContainer" parent="."]
|
||||
layout_mode = 1
|
||||
offset_right = 300.0
|
||||
offset_bottom = 722.0
|
||||
|
||||
[node name="ButtonCube" type="Button" parent="Towers"]
|
||||
layout_mode = 2
|
||||
text = "Cube"
|
||||
|
||||
[node name="TowerButtonPierre" parent="Towers" instance=ExtResource("2_qus6b")]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TowerButtonAline" parent="Towers" instance=ExtResource("2_qus6b")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TowerButtonMaxence" parent="Towers" instance=ExtResource("2_qus6b")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TowerButtonAlex" parent="Towers" instance=ExtResource("2_qus6b")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TowerButtonGeraldine" parent="Towers" instance=ExtResource("2_qus6b")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="CharacterSheet" type="Control" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="TowerStats" type="Panel" parent="CharacterSheet"]
|
||||
custom_minimum_size = Vector2(800, 512)
|
||||
layout_mode = 0
|
||||
offset_left = 313.0
|
||||
offset_top = 86.0
|
||||
offset_right = 1113.0
|
||||
offset_bottom = 598.0
|
||||
|
||||
[node name="MarginContainer2" type="MarginContainer" parent="CharacterSheet/TowerStats"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 20
|
||||
theme_override_constants/margin_top = 20
|
||||
theme_override_constants/margin_right = 20
|
||||
theme_override_constants/margin_bottom = 20
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="CharacterSheet/TowerStats/MarginContainer2"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="LabelCharacterSheet" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Fiche Perso :
|
||||
FRIANDISE"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="StatDamage" type="HBoxContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="NameStat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatDamage"]
|
||||
layout_mode = 2
|
||||
text = "Damage :"
|
||||
|
||||
[node name="Stat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatDamage"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="StatCooldown" type="HBoxContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="NameStat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatCooldown"]
|
||||
layout_mode = 2
|
||||
text = "Cooldown :"
|
||||
|
||||
[node name="Stat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatCooldown"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="StatMaxEnergy" type="HBoxContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="NameStat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatMaxEnergy"]
|
||||
layout_mode = 2
|
||||
text = "Max Energy :"
|
||||
|
||||
[node name="Stat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatMaxEnergy"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="StatRegen" type="HBoxContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="NameStat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatRegen"]
|
||||
layout_mode = 2
|
||||
text = "Energy Regen :"
|
||||
|
||||
[node name="Stat" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/VBoxContainer/StatRegen"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "0"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(20, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Bio" type="VBoxContainer" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="BioImage" type="TextureRect" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/Bio"]
|
||||
custom_minimum_size = Vector2(300, 300)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_wr0q8")
|
||||
expand_mode = 1
|
||||
|
||||
[node name="Label" type="Label" parent="CharacterSheet/TowerStats/MarginContainer2/HBoxContainer/Bio"]
|
||||
custom_minimum_size = Vector2(300, 0)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_font_sizes/font_size = 30
|
||||
text = "Aime se promener dans l'herbe et manger des framboises. Sa petite bouille la rend trop mignonne."
|
||||
horizontal_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="TowerUpgrades" type="Panel" parent="CharacterSheet"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -786.0
|
||||
offset_top = -990.0
|
||||
offset_right = -19.0
|
||||
offset_bottom = -28.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
|
||||
[node name="MarginContainer2" type="MarginContainer" parent="CharacterSheet/TowerUpgrades"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 20
|
||||
theme_override_constants/margin_top = 20
|
||||
theme_override_constants/margin_right = 20
|
||||
theme_override_constants/margin_bottom = 20
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CharacterSheet/TowerUpgrades/MarginContainer2"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="Title" type="Label" parent="CharacterSheet/TowerUpgrades/MarginContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Boutique"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerUpgrades/MarginContainer2/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="UpgradeButton" type="Button" parent="CharacterSheet/TowerUpgrades/MarginContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Upgrade 1"
|
||||
script = ExtResource("4_3rcmp")
|
||||
metadata/_custom_type_script = "uid://tn3qdhcyaxsg"
|
||||
|
||||
[node name="UpgradeButton2" type="Button" parent="CharacterSheet/TowerUpgrades/MarginContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Upgrade 2"
|
||||
script = ExtResource("4_3rcmp")
|
||||
metadata/_custom_type_script = "uid://tn3qdhcyaxsg"
|
||||
|
||||
[node name="UpgradeButton3" type="Button" parent="CharacterSheet/TowerUpgrades/MarginContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Upgrade 3"
|
||||
script = ExtResource("4_3rcmp")
|
||||
metadata/_custom_type_script = "uid://tn3qdhcyaxsg"
|
||||
|
||||
[node name="UpgradeButton4" type="Button" parent="CharacterSheet/TowerUpgrades/MarginContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Upgrade 4"
|
||||
script = ExtResource("4_3rcmp")
|
||||
metadata/_custom_type_script = "uid://tn3qdhcyaxsg"
|
||||
|
||||
[node name="UpgradeButton5" type="Button" parent="CharacterSheet/TowerUpgrades/MarginContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Upgrade 5"
|
||||
script = ExtResource("4_3rcmp")
|
||||
metadata/_custom_type_script = "uid://tn3qdhcyaxsg"
|
||||
|
||||
[node name="TowerSkills" type="Panel" parent="CharacterSheet"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -646.0
|
||||
offset_top = -471.0
|
||||
offset_right = 153.0
|
||||
offset_bottom = -28.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerSkills"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 20
|
||||
theme_override_constants/margin_top = 20
|
||||
theme_override_constants/margin_right = 20
|
||||
theme_override_constants/margin_bottom = 20
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CharacterSheet/TowerSkills/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Title" type="Label" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Capacités"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="SkillUI" type="HBoxContainer" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Icone" type="TextureRect" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI"]
|
||||
custom_minimum_size = Vector2(64, 64)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("5_pbvm6")
|
||||
expand_mode = 1
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI"]
|
||||
custom_minimum_size = Vector2(20, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI"]
|
||||
layout_mode = 2
|
||||
text = "Bonjour"
|
||||
|
||||
[node name="SkillUI2" type="HBoxContainer" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Icone" type="TextureRect" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI2"]
|
||||
custom_minimum_size = Vector2(64, 64)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("5_pbvm6")
|
||||
expand_mode = 1
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI2"]
|
||||
custom_minimum_size = Vector2(20, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI2"]
|
||||
layout_mode = 2
|
||||
text = "Compliments"
|
||||
|
||||
[node name="SkillUI3" type="HBoxContainer" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Icone" type="TextureRect" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI3"]
|
||||
custom_minimum_size = Vector2(64, 64)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("5_pbvm6")
|
||||
expand_mode = 1
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI3"]
|
||||
custom_minimum_size = Vector2(20, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="CharacterSheet/TowerSkills/MarginContainer/VBoxContainer/SkillUI3"]
|
||||
layout_mode = 2
|
||||
text = "Cinéphile"
|
||||
|
|
@ -20,17 +20,12 @@ config/icon="res://icon.svg"
|
|||
GameManager="*res://Globals/GameManager.gd"
|
||||
EventBus="*res://Globals/EventBus.gd"
|
||||
Transition="*res://Globals/transition.tscn"
|
||||
SignalLens="*res://addons/signal_lens/autoload/signal_lens_autoload.gd"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=1920
|
||||
window/size/viewport_height=1080
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PackedStringArray("res://addons/signal_lens/plugin.cfg")
|
||||
|
||||
[file_customization]
|
||||
|
||||
folder_colors={
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ func spawn_manager() -> void:
|
|||
|
||||
if enemies_to_spawn > 0:
|
||||
spawn()
|
||||
print(GameManager.enemies_alive)
|
||||
if GameManager.enemies_alive > 0:
|
||||
wave_on_going = true
|
||||
else:
|
||||
|
|
|
|||