commit 7cff988739649270516033da8d9879b9d4301f19 Author: Zacharie Guet Date: Tue Sep 1 22:41:37 2026 +0200 Premier commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae83367 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Godot 4+ specific ignores +.godot/ +/android/ + +# Godot-specific ignores +.import/ +export.cfg +export_credentials.cfg + +# Imported translations (automatically generated from CSV files) +*.translation + +# Mono-specific ignores +.mono/ +data_*/ +mono_crash.*.json + +.vscode + +.export/ diff --git a/common/assets/alien_2d_anim/alien_running.tres b/common/assets/alien_2d_anim/alien_running.tres new file mode 100644 index 0000000..9efed1c --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running.tres @@ -0,0 +1,41 @@ +[gd_resource type="AnimatedTexture" format=3 uid="uid://dqasylgir7ka2"] + +[ext_resource type="Texture2D" uid="uid://248ks3fx7lm3" path="res://common/assets/alien_2d_anim/alien_running0001.png" id="1_qwfpk"] +[ext_resource type="Texture2D" uid="uid://cmp2y3c446xoj" path="res://common/assets/alien_2d_anim/alien_running0002.png" id="2_q53jl"] +[ext_resource type="Texture2D" uid="uid://cqfucfwsif5q7" path="res://common/assets/alien_2d_anim/alien_running0011.png" id="3_hehve"] +[ext_resource type="Texture2D" uid="uid://bvvuc0cnn6tvl" path="res://common/assets/alien_2d_anim/alien_running0012.png" id="4_te5nh"] +[ext_resource type="Texture2D" uid="uid://dfmihbrigftd2" path="res://common/assets/alien_2d_anim/alien_running0003.png" id="5_lqyd0"] +[ext_resource type="Texture2D" uid="uid://ds47iqvnbvhnv" path="res://common/assets/alien_2d_anim/alien_running0004.png" id="6_0ekdo"] +[ext_resource type="Texture2D" uid="uid://bvgjs386j1tvo" path="res://common/assets/alien_2d_anim/alien_running0005.png" id="7_7rvmj"] +[ext_resource type="Texture2D" uid="uid://d2u7fa7wqvqw8" path="res://common/assets/alien_2d_anim/alien_running0006.png" id="8_jbker"] +[ext_resource type="Texture2D" uid="uid://bmmspo52gh7jf" path="res://common/assets/alien_2d_anim/alien_running0007.png" id="9_2mnul"] +[ext_resource type="Texture2D" uid="uid://cdjotqiqyc33m" path="res://common/assets/alien_2d_anim/alien_running0008.png" id="10_5yosl"] +[ext_resource type="Texture2D" uid="uid://cwmx4vskppoub" path="res://common/assets/alien_2d_anim/alien_running0009.png" id="11_8yks0"] +[ext_resource type="Texture2D" uid="uid://db67eb3grgik8" path="res://common/assets/alien_2d_anim/alien_running0010.png" id="12_phvay"] + +[resource] +frames = 12 +speed_scale = 30.0 +frame_0/texture = ExtResource("1_qwfpk") +frame_1/texture = ExtResource("2_q53jl") +frame_1/duration = 1.0 +frame_2/texture = ExtResource("5_lqyd0") +frame_2/duration = 1.0 +frame_3/texture = ExtResource("6_0ekdo") +frame_3/duration = 1.0 +frame_4/texture = ExtResource("7_7rvmj") +frame_4/duration = 1.0 +frame_5/texture = ExtResource("8_jbker") +frame_5/duration = 1.0 +frame_6/texture = ExtResource("9_2mnul") +frame_6/duration = 1.0 +frame_7/texture = ExtResource("10_5yosl") +frame_7/duration = 1.0 +frame_8/texture = ExtResource("11_8yks0") +frame_8/duration = 1.0 +frame_9/texture = ExtResource("12_phvay") +frame_9/duration = 1.0 +frame_10/texture = ExtResource("3_hehve") +frame_10/duration = 1.0 +frame_11/texture = ExtResource("4_te5nh") +frame_11/duration = 1.0 diff --git a/common/assets/alien_2d_anim/alien_running0001.png b/common/assets/alien_2d_anim/alien_running0001.png new file mode 100644 index 0000000..62a4fee Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0001.png differ diff --git a/common/assets/alien_2d_anim/alien_running0001.png.import b/common/assets/alien_2d_anim/alien_running0001.png.import new file mode 100644 index 0000000..f171830 --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://248ks3fx7lm3" +path="res://.godot/imported/alien_running0001.png-42f344f725bc6add53eb238906bdc013.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0001.png" +dest_files=["res://.godot/imported/alien_running0001.png-42f344f725bc6add53eb238906bdc013.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0002.png b/common/assets/alien_2d_anim/alien_running0002.png new file mode 100644 index 0000000..f1c13af Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0002.png differ diff --git a/common/assets/alien_2d_anim/alien_running0002.png.import b/common/assets/alien_2d_anim/alien_running0002.png.import new file mode 100644 index 0000000..182dd94 --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0002.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmp2y3c446xoj" +path="res://.godot/imported/alien_running0002.png-7d3a056b15d287b1dacd919a6b87fe96.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0002.png" +dest_files=["res://.godot/imported/alien_running0002.png-7d3a056b15d287b1dacd919a6b87fe96.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0003.png b/common/assets/alien_2d_anim/alien_running0003.png new file mode 100644 index 0000000..627d763 Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0003.png differ diff --git a/common/assets/alien_2d_anim/alien_running0003.png.import b/common/assets/alien_2d_anim/alien_running0003.png.import new file mode 100644 index 0000000..9f2fd34 --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0003.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfmihbrigftd2" +path="res://.godot/imported/alien_running0003.png-c85a3640a9e96a2e00b10afcc3390df7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0003.png" +dest_files=["res://.godot/imported/alien_running0003.png-c85a3640a9e96a2e00b10afcc3390df7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0004.png b/common/assets/alien_2d_anim/alien_running0004.png new file mode 100644 index 0000000..e8fe85a Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0004.png differ diff --git a/common/assets/alien_2d_anim/alien_running0004.png.import b/common/assets/alien_2d_anim/alien_running0004.png.import new file mode 100644 index 0000000..f34d124 --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0004.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ds47iqvnbvhnv" +path="res://.godot/imported/alien_running0004.png-cb0333a3fba0c95e0c4e7e23e8ab166a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0004.png" +dest_files=["res://.godot/imported/alien_running0004.png-cb0333a3fba0c95e0c4e7e23e8ab166a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0005.png b/common/assets/alien_2d_anim/alien_running0005.png new file mode 100644 index 0000000..9917728 Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0005.png differ diff --git a/common/assets/alien_2d_anim/alien_running0005.png.import b/common/assets/alien_2d_anim/alien_running0005.png.import new file mode 100644 index 0000000..b3b978b --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0005.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvgjs386j1tvo" +path="res://.godot/imported/alien_running0005.png-636f4637d8526267963463e80556cb6e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0005.png" +dest_files=["res://.godot/imported/alien_running0005.png-636f4637d8526267963463e80556cb6e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0006.png b/common/assets/alien_2d_anim/alien_running0006.png new file mode 100644 index 0000000..6e2677e Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0006.png differ diff --git a/common/assets/alien_2d_anim/alien_running0006.png.import b/common/assets/alien_2d_anim/alien_running0006.png.import new file mode 100644 index 0000000..2e8287a --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0006.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2u7fa7wqvqw8" +path="res://.godot/imported/alien_running0006.png-4d7fb0820714fa7c4d3b86fc7669c6f8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0006.png" +dest_files=["res://.godot/imported/alien_running0006.png-4d7fb0820714fa7c4d3b86fc7669c6f8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0007.png b/common/assets/alien_2d_anim/alien_running0007.png new file mode 100644 index 0000000..393dc24 Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0007.png differ diff --git a/common/assets/alien_2d_anim/alien_running0007.png.import b/common/assets/alien_2d_anim/alien_running0007.png.import new file mode 100644 index 0000000..dab7095 --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0007.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmmspo52gh7jf" +path="res://.godot/imported/alien_running0007.png-c574b372219e5488a5c9f4260277d145.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0007.png" +dest_files=["res://.godot/imported/alien_running0007.png-c574b372219e5488a5c9f4260277d145.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0008.png b/common/assets/alien_2d_anim/alien_running0008.png new file mode 100644 index 0000000..37cdd59 Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0008.png differ diff --git a/common/assets/alien_2d_anim/alien_running0008.png.import b/common/assets/alien_2d_anim/alien_running0008.png.import new file mode 100644 index 0000000..9f811da --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0008.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdjotqiqyc33m" +path="res://.godot/imported/alien_running0008.png-d4edc9da9f0aa04bd6b14f12cc5569e6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0008.png" +dest_files=["res://.godot/imported/alien_running0008.png-d4edc9da9f0aa04bd6b14f12cc5569e6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0009.png b/common/assets/alien_2d_anim/alien_running0009.png new file mode 100644 index 0000000..28fae8e Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0009.png differ diff --git a/common/assets/alien_2d_anim/alien_running0009.png.import b/common/assets/alien_2d_anim/alien_running0009.png.import new file mode 100644 index 0000000..7c219e1 --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0009.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwmx4vskppoub" +path="res://.godot/imported/alien_running0009.png-873540969bc2269ebd94ab07d08b55ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0009.png" +dest_files=["res://.godot/imported/alien_running0009.png-873540969bc2269ebd94ab07d08b55ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0010.png b/common/assets/alien_2d_anim/alien_running0010.png new file mode 100644 index 0000000..cb9c82a Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0010.png differ diff --git a/common/assets/alien_2d_anim/alien_running0010.png.import b/common/assets/alien_2d_anim/alien_running0010.png.import new file mode 100644 index 0000000..eba03dc --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0010.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://db67eb3grgik8" +path="res://.godot/imported/alien_running0010.png-d807b6be13956efb9ff9dd3f5949e1ed.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0010.png" +dest_files=["res://.godot/imported/alien_running0010.png-d807b6be13956efb9ff9dd3f5949e1ed.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0011.png b/common/assets/alien_2d_anim/alien_running0011.png new file mode 100644 index 0000000..2d7c3a4 Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0011.png differ diff --git a/common/assets/alien_2d_anim/alien_running0011.png.import b/common/assets/alien_2d_anim/alien_running0011.png.import new file mode 100644 index 0000000..06f4eef --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0011.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqfucfwsif5q7" +path="res://.godot/imported/alien_running0011.png-354b6ed57970ffaa1d41a542c28aee17.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0011.png" +dest_files=["res://.godot/imported/alien_running0011.png-354b6ed57970ffaa1d41a542c28aee17.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/alien_2d_anim/alien_running0012.png b/common/assets/alien_2d_anim/alien_running0012.png new file mode 100644 index 0000000..288e7f5 Binary files /dev/null and b/common/assets/alien_2d_anim/alien_running0012.png differ diff --git a/common/assets/alien_2d_anim/alien_running0012.png.import b/common/assets/alien_2d_anim/alien_running0012.png.import new file mode 100644 index 0000000..552973d --- /dev/null +++ b/common/assets/alien_2d_anim/alien_running0012.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvvuc0cnn6tvl" +path="res://.godot/imported/alien_running0012.png-a234c22f318b2e09a2237cc7c59f24b6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/alien_2d_anim/alien_running0012.png" +dest_files=["res://.godot/imported/alien_running0012.png-a234c22f318b2e09a2237cc7c59f24b6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/assets/palette.png b/common/assets/palette.png new file mode 100644 index 0000000..89265d3 Binary files /dev/null and b/common/assets/palette.png differ diff --git a/common/assets/palette.png.import b/common/assets/palette.png.import new file mode 100644 index 0000000..14bf3b1 --- /dev/null +++ b/common/assets/palette.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdr6ynvpd1rx1" +path.s3tc="res://.godot/imported/palette.png-7e7ed16a17c6b935383aad2fc09bb560.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://common/assets/palette.png" +dest_files=["res://.godot/imported/palette.png-7e7ed16a17c6b935383aad2fc09bb560.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/common/assets/wheat_pattern.png b/common/assets/wheat_pattern.png new file mode 100644 index 0000000..28c0f05 Binary files /dev/null and b/common/assets/wheat_pattern.png differ diff --git a/common/assets/wheat_pattern.png.import b/common/assets/wheat_pattern.png.import new file mode 100644 index 0000000..120757c --- /dev/null +++ b/common/assets/wheat_pattern.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c46rt5tydx8ih" +path="res://.godot/imported/wheat_pattern.png-e6c543a447bed8409ac1e7848eb8b8a5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/assets/wheat_pattern.png" +dest_files=["res://.godot/imported/wheat_pattern.png-e6c543a447bed8409ac1e7848eb8b8a5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/common/fonts/BPdotsPlus.otf b/common/fonts/BPdotsPlus.otf new file mode 100644 index 0000000..f79336f Binary files /dev/null and b/common/fonts/BPdotsPlus.otf differ diff --git a/common/fonts/BPdotsPlus.otf.import b/common/fonts/BPdotsPlus.otf.import new file mode 100644 index 0000000..4d7e2cd --- /dev/null +++ b/common/fonts/BPdotsPlus.otf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://ddiuqfq41f18x" +path="res://.godot/imported/BPdotsPlus.otf-7830f8c00ee1e842bd23df9ee4b99d77.fontdata" + +[deps] + +source_file="res://common/fonts/BPdotsPlus.otf" +dest_files=["res://.godot/imported/BPdotsPlus.otf-7830f8c00ee1e842bd23df9ee4b99d77.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=3 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/common/fonts/BPdotsPlusBold.otf b/common/fonts/BPdotsPlusBold.otf new file mode 100644 index 0000000..aef3e32 Binary files /dev/null and b/common/fonts/BPdotsPlusBold.otf differ diff --git a/common/fonts/BPdotsPlusBold.otf.import b/common/fonts/BPdotsPlusBold.otf.import new file mode 100644 index 0000000..374da05 --- /dev/null +++ b/common/fonts/BPdotsPlusBold.otf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://iug4bpafhqp" +path="res://.godot/imported/BPdotsPlusBold.otf-a8a1bcf573cfa976574a1ea039956873.fontdata" + +[deps] + +source_file="res://common/fonts/BPdotsPlusBold.otf" +dest_files=["res://.godot/imported/BPdotsPlusBold.otf-a8a1bcf573cfa976574a1ea039956873.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=3 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/common/fonts/Squarrez.otf b/common/fonts/Squarrez.otf new file mode 100644 index 0000000..3112ade Binary files /dev/null and b/common/fonts/Squarrez.otf differ diff --git a/common/fonts/Squarrez.otf.import b/common/fonts/Squarrez.otf.import new file mode 100644 index 0000000..977717a --- /dev/null +++ b/common/fonts/Squarrez.otf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://b7ysukag1831b" +path="res://.godot/imported/Squarrez.otf-d1fa764de82361511159e4342aa41270.fontdata" + +[deps] + +source_file="res://common/fonts/Squarrez.otf" +dest_files=["res://.godot/imported/Squarrez.otf-d1fa764de82361511159e4342aa41270.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=3 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/common/materials/default3d.tres b/common/materials/default3d.tres new file mode 100644 index 0000000..58754a3 --- /dev/null +++ b/common/materials/default3d.tres @@ -0,0 +1,10 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://41afldgohk0o"] + +[ext_resource type="Texture2D" uid="uid://cdr6ynvpd1rx1" path="res://common/assets/palette.png" id="1_rf3u1"] + +[resource] +shading_mode = 2 +diffuse_mode = 3 +specular_mode = 1 +vertex_color_use_as_albedo = true +albedo_texture = ExtResource("1_rf3u1") diff --git a/common/theme/default.tres b/common/theme/default.tres new file mode 100644 index 0000000..b29bca0 --- /dev/null +++ b/common/theme/default.tres @@ -0,0 +1,67 @@ +[gd_resource type="Theme" format=3 uid="uid://pemhq200t8km"] + +[ext_resource type="FontFile" uid="uid://b7ysukag1831b" path="res://common/fonts/Squarrez.otf" id="1_t2mbe"] +[ext_resource type="FontFile" uid="uid://iug4bpafhqp" path="res://common/fonts/BPdotsPlusBold.otf" id="2_21a82"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pd64y"] +bg_color = Color(0.9882353, 0.9372549, 0.5529412, 1) +border_width_left = 15 +border_width_top = 15 +border_width_right = 15 +border_width_bottom = 15 +border_color = Color(0.9882353, 0.9372549, 0.5529412, 1) +corner_radius_top_left = 100 +corner_radius_top_right = 100 +corner_detail = 1 +expand_margin_left = 40.0 +expand_margin_right = 40.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t2mbe"] +bg_color = Color(0.8, 0.25882354, 0.36862746, 1) +border_width_left = 15 +border_width_top = 15 +border_width_right = 15 +border_width_bottom = 15 +border_color = Color(0.8, 0.25882354, 0.36862746, 1) +corner_radius_top_left = 100 +corner_radius_top_right = 100 +corner_detail = 1 +expand_margin_left = 40.0 +expand_margin_right = 40.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_21a82"] +bg_color = Color(0.22352941, 0.03529412, 0.2784314, 1) +border_width_left = 15 +border_width_top = 15 +border_width_right = 15 +border_width_bottom = 15 +border_color = Color(0.8, 0.25882354, 0.36862746, 1) +corner_radius_top_left = 100 +corner_radius_top_right = 100 +corner_detail = 1 +expand_margin_left = 40.0 +expand_margin_right = 40.0 + +[resource] +Button/colors/font_hover_color = Color(0.23529412, 0.07058824, 0.28235295, 1) +Button/font_sizes/font_size = 40 +Button/fonts/font = ExtResource("2_21a82") +Button/styles/hover = SubResource("StyleBoxFlat_pd64y") +Button/styles/normal = SubResource("StyleBoxFlat_t2mbe") +Button/styles/pressed = SubResource("StyleBoxFlat_21a82") +Label/colors/font_color = Color(0.8, 0.2627451, 0.36862746, 1) +Label/colors/font_outline_color = Color(0.9882353, 0.9372549, 0.5529412, 1) +Label/font_sizes/font_size = 30 +Label/fonts/font = ExtResource("1_t2mbe") +RichTextLabel/colors/selection_color = Color(0.99, 0.93918, 0.5544, 0.7882353) +RichTextLabel/font_sizes/bold_font_size = 40 +RichTextLabel/font_sizes/bold_italics_font_size = 40 +RichTextLabel/font_sizes/italics_font_size = 30 +RichTextLabel/font_sizes/mono_font_size = 30 +RichTextLabel/font_sizes/normal_font_size = 30 +RichTextLabel/fonts/bold_font = ExtResource("2_21a82") +RichTextLabel/fonts/bold_italics_font = ExtResource("2_21a82") +RichTextLabel/fonts/italics_font = ExtResource("2_21a82") +RichTextLabel/fonts/mono_font = ExtResource("2_21a82") +RichTextLabel/fonts/normal_font = ExtResource("2_21a82") +VBoxContainer/constants/separation = 15 diff --git a/entities/alien/alien.gd b/entities/alien/alien.gd new file mode 100644 index 0000000..cdf0c7f --- /dev/null +++ b/entities/alien/alien.gd @@ -0,0 +1,142 @@ +extends Area3D +class_name Alien + +const DEATH_SCENE : PackedScene = preload("res://entities/alien/alien_death_effect/alien_death_effect.tscn") as PackedScene +const DEATH_SCENE_TIME : float = 10. + +const COLLISION_HEIGHT = 5 +const COLLISION_RADIUS = 1.5 +const NEIGHBOR_DETECTION_MARGIN = 0.5 + +const ATTACK_DISTANCE = 6. + +const NEIGHBOR_ROTATION = 0.5 +const NEIGHBOR_BUMP_FORCE = 4. * AlienHordeManager.CALCULATE_SCATTER_FREQUENCY +const NEIGHBOR_BLOCKED_SPEED_FACTOR = 0.5 +const DIRECTION_DRIFT_RANGE = PI/8 +const DAMAGE_EFFECT_DURATION : float = 0.5 + +const DEFAULT_HP : float = 20. +const DEFAULT_DAMAGE_RATE : float = 1. + +signal died + +enum State {RUNNING, ATTACKING, DEAD} + +@export var size : float = 1.0 +@export var speed : float = 10. +@export var turn_speed : float = 20. + +@onready var damage_rate : float = size * DEFAULT_DAMAGE_RATE +@onready var hp : float = size * DEFAULT_HP +var state : State = State.RUNNING +var damage_effect_last : float = 0. + +var id : int = 0 +var target : Node3D + +@onready var collision_shape : CollisionShape3D = generate_collision_shape() + +func _ready(): + monitoring = false + +func generate_collision_shape() -> CollisionShape3D: + var new_collision_shape : CollisionShape3D= CollisionShape3D.new() + var cylinder_shape : CylinderShape3D = CylinderShape3D.new() + + cylinder_shape.height = COLLISION_HEIGHT + cylinder_shape.radius = COLLISION_RADIUS + + new_collision_shape.shape = cylinder_shape + + new_collision_shape.position = Vector3(0,COLLISION_HEIGHT/2.,0) + + add_child(new_collision_shape) + + return new_collision_shape + +func move( + delta: float, + calculate_direction: bool, + calculate_scatter : bool +): + var target_angle = rotation.y + var current_speed = speed + + if calculate_direction and target: + target_angle = calculate_target_angle() + + if calculate_scatter: + var collision_right = has_neighbor(1) + var collision_left = has_neighbor(-1) + + if collision_left and not collision_right: + target_angle += - NEIGHBOR_ROTATION + position += Vector3.RIGHT.rotated(Vector3.UP, rotation.y) * NEIGHBOR_BUMP_FORCE * delta + elif collision_right and not collision_left: + target_angle += NEIGHBOR_ROTATION + position += Vector3.LEFT.rotated(Vector3.UP, rotation.y) * NEIGHBOR_BUMP_FORCE * delta + elif collision_left and collision_right: + current_speed = speed * get_random().randf_range(0., NEIGHBOR_BLOCKED_SPEED_FACTOR) + + rotation.y = lerp_angle( + rotation.y, + target_angle, + min(1, delta*turn_speed) + ) + + position += Vector3.FORWARD.rotated(Vector3.UP, rotation.y) * current_speed * delta + +func calculate_target_angle() -> float: + + var target_angle : float = ( + Vector2(global_position.z,global_position.x) + - Vector2(target.global_position.z,target.global_position.x) + ).normalized().angle() + + # Random drift in direction + target_angle += get_random().randf_range(-DIRECTION_DRIFT_RANGE, DIRECTION_DRIFT_RANGE) + + return target_angle + + + +func has_neighbor(direction = 1) -> bool: + var space_state = get_world_3d().direct_space_state + + var query = PhysicsRayQueryParameters3D.create( + global_position, + global_position + Vector3( + direction * (COLLISION_RADIUS + NEIGHBOR_DETECTION_MARGIN), 0,0 + ).rotated(Vector3.UP, rotation.y) + ) + query.collide_with_areas = true + query.exclude.append(get_rid()) + + var result = space_state.intersect_ray(query) + + return result != {} + +func attack_target(delta : float): + if target and target.has_method("hit"): + target.hit(delta * damage_rate) + +func hit(damage = 1.): + hp = max(0, hp - damage) + damage_effect_last = DAMAGE_EFFECT_DURATION + if hp == 0: + die() + +func die(): + died.emit() + state = State.DEAD + collision_shape.disabled = true + add_child(DEATH_SCENE.instantiate()) + await get_tree().create_timer(DEATH_SCENE_TIME).timeout + queue_free() + +func get_random() -> RandomNumberGenerator: + var random : RandomNumberGenerator = RandomNumberGenerator.new() + random.seed = id + + return random \ No newline at end of file diff --git a/entities/alien/alien.gd.uid b/entities/alien/alien.gd.uid new file mode 100644 index 0000000..781502f --- /dev/null +++ b/entities/alien/alien.gd.uid @@ -0,0 +1 @@ +uid://bkfr1dvvrmota diff --git a/entities/alien/alien.tscn b/entities/alien/alien.tscn new file mode 100644 index 0000000..57d7586 --- /dev/null +++ b/entities/alien/alien.tscn @@ -0,0 +1,43 @@ +[gd_scene format=3 uid="uid://10ogf77klwu"] + +[ext_resource type="Script" uid="uid://bkfr1dvvrmota" path="res://entities/alien/alien.gd" id="1_qp64o"] +[ext_resource type="Texture2D" uid="uid://dvgqy34aw6xfc" path="res://entities/mecha/assets/textures/pointer.svg" id="3_ym0y8"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_g4v7s"] +height = 4.0 +radius = 1.5 + +[node name="Alien" type="Area3D" unique_id=537229132] +monitoring = false +monitorable = false +script = ExtResource("1_qp64o") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=209124875] +unique_name_in_owner = true +shape = SubResource("CylinderShape3D_g4v7s") + +[node name="ColliderRayCast3D" type="RayCast3D" parent="." unique_id=303441313] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 2, -0.1) +target_position = Vector3(0, -2, 0) + +[node name="NeighborRRayCast3D" type="RayCast3D" parent="." unique_id=91948683] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.1, 2, 0.5) +target_position = Vector3(2, 0, 0) +collide_with_areas = true +collide_with_bodies = false + +[node name="NeighborLRayCast3D" type="RayCast3D" parent="." unique_id=580620392] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.1, 2, 0.5) +target_position = Vector3(-2, 0, 0) +collide_with_areas = true +collide_with_bodies = false + +[node name="Indicator" type="Sprite3D" parent="." unique_id=1377230752] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.514289, 0) +visible = false +billboard = 1 +texture = ExtResource("3_ym0y8") diff --git a/entities/alien/alien_death_effect/alien_death_effect.gd b/entities/alien/alien_death_effect/alien_death_effect.gd new file mode 100644 index 0000000..7243be7 --- /dev/null +++ b/entities/alien/alien_death_effect/alien_death_effect.gd @@ -0,0 +1,5 @@ +extends Node3D + +func _ready(): + %ExplosionGPUParticles3D.emitting = true + %CorpseGPUParticles3D.emitting = true diff --git a/entities/alien/alien_death_effect/alien_death_effect.gd.uid b/entities/alien/alien_death_effect/alien_death_effect.gd.uid new file mode 100644 index 0000000..4c97c67 --- /dev/null +++ b/entities/alien/alien_death_effect/alien_death_effect.gd.uid @@ -0,0 +1 @@ +uid://lhn14psdj7hr diff --git a/entities/alien/alien_death_effect/alien_death_effect.tscn b/entities/alien/alien_death_effect/alien_death_effect.tscn new file mode 100644 index 0000000..3b190c3 --- /dev/null +++ b/entities/alien/alien_death_effect/alien_death_effect.tscn @@ -0,0 +1,121 @@ +[gd_scene format=3 uid="uid://mi0hwb80ud8h"] + +[ext_resource type="Script" uid="uid://lhn14psdj7hr" path="res://entities/alien/alien_death_effect/alien_death_effect.gd" id="1_vt2i7"] +[ext_resource type="ArrayMesh" uid="uid://667gyf6p35nw" path="res://entities/alien/assets/3d/alien_part.tres" id="2_on0xa"] + +[sub_resource type="Gradient" id="Gradient_t4u1q"] +offsets = PackedFloat32Array(0, 0.8219697, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_p1u0y"] +gradient = SubResource("Gradient_t4u1q") + +[sub_resource type="Curve" id="Curve_p83er"] +_data = [Vector2(0, 0), 0.0, 2.7057414, 0, 0, Vector2(0.8, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="CurveTexture" id="CurveTexture_3gngh"] +curve = SubResource("Curve_p83er") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_g4v7s"] +lifetime_randomness = 0.5 +angle_min = 1.0728835e-05 +angle_max = 1.0728835e-05 +direction = Vector3(0, 1, 0) +spread = 114.231 +initial_velocity_min = 2.0 +initial_velocity_max = 3.0 +radial_velocity_min = -2.2351742e-05 +radial_velocity_max = 0.39997762 +gravity = Vector3(0, 0, 0) +use_scale_3d = true +scale_3d_min = Vector3(1, 1, 1) +scale_3d_max = Vector3(1, 1, 1) +scale_min = 0.5 +scale_max = 0.5 +scale_curve = SubResource("CurveTexture_3gngh") +color_ramp = SubResource("GradientTexture1D_p1u0y") +hue_variation_min = -2.2351742e-08 +hue_variation_max = 0.09999997 + +[sub_resource type="Gradient" id="Gradient_d6cdn"] +interpolation_mode = 1 +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_fcnqv"] +gradient = SubResource("Gradient_d6cdn") +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_57qmd"] +transparency = 1 +shading_mode = 0 +vertex_color_use_as_albedo = true +albedo_color = Color(0.73333335, 0.6156863, 0.69803923, 1) +albedo_texture = SubResource("GradientTexture2D_fcnqv") +billboard_mode = 1 +billboard_keep_scale = true + +[sub_resource type="QuadMesh" id="QuadMesh_yf5fn"] +material = SubResource("StandardMaterial3D_57qmd") + +[sub_resource type="Curve" id="Curve_kxalf"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.8793103, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="CurveTexture" id="CurveTexture_fcnqv"] +curve = SubResource("Curve_kxalf") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_emcji"] +lifetime_randomness = 0.5 +angle_min = 1.0728835e-05 +angle_max = 1.0728835e-05 +use_rotation_3d = true +rotation_3d_min = Vector3(0, 0, 0) +rotation_3d_max = Vector3(360, 360, 360) +inherit_velocity_ratio = 1.0 +direction = Vector3(0, 1, 0) +spread = 33.462 +initial_velocity_min = 4.0 +initial_velocity_max = 6.0 +radial_velocity_min = -2.2351742e-05 +radial_velocity_max = 0.39997762 +gravity = Vector3(0, -9.1, 0) +scale_min = 0.59999996 +scale_curve = SubResource("CurveTexture_fcnqv") +collision_mode = 1 +collision_friction = 1.0 +collision_bounce = 0.5 + +[node name="AlienDeathEffect" type="Node3D" unique_id=1248383251] +script = ExtResource("1_vt2i7") + +[node name="ExplosionGPUParticles3D" type="GPUParticles3D" parent="." unique_id=416874722] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2686481, -0.70010376) +emitting = false +amount = 20 +one_shot = true +speed_scale = 3.0 +explosiveness = 1.0 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_g4v7s") +draw_pass_1 = SubResource("QuadMesh_yf5fn") + +[node name="CorpseGPUParticles3D" type="GPUParticles3D" parent="." unique_id=810474087] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2686481, -0.70010376) +emitting = false +amount = 5 +lifetime = 10.0 +one_shot = true +speed_scale = 2.0 +explosiveness = 1.0 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_emcji") +draw_pass_1 = ExtResource("2_on0xa") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="." unique_id=813937432] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) +size = Vector3(12, 2, 12) diff --git a/entities/alien/alien_horde_manager/alien_horde_manager.gd b/entities/alien/alien_horde_manager/alien_horde_manager.gd new file mode 100644 index 0000000..7c1776b --- /dev/null +++ b/entities/alien/alien_horde_manager/alien_horde_manager.gd @@ -0,0 +1,143 @@ +extends Node +class_name AlienHordeManager + +const CALCULATE_TARGET_FREQUENCY = 10 +const CALCULATE_DIRECTION_FREQUENCY = 10 +const CALCULATE_SCATTER_FREQUENCY = 5 +const CALCULATE_STATE_FREQUENCY = 5 +const ATTACK_DISTANCE = 10. +const MECHA_ATTACK_DISTANCE = 5. +const MAX_ALIEN_MECHA_AGGRO_DISTANCE = 100 +const ALIEN_RANDOM_SCALE = 0.3 +const MASTODONT_CHANCE = 0.01 +const MASTODONT_SCALE_FACTOR = 4. + +@export var hex_map : HexMap +@export var mecha : Mecha + +@onready var multimeshes : Array[MultiMeshInstance3D] = [ + %RunningAlienMultiMesh, + %AttackingAlienMultiMesh +] +@onready var targets : Array = hex_map.get_all_tiles_with_id("House") + +var current_frame : int = 0 + +var alien_id_acc : int = 0 + +var aliens : Array[Alien] = [] + +func _physics_process(delta): + current_frame += 1 + + for t in targets: + if t is HouseHexTile: + if t.destroyed: + targets.erase(t) + + # if current_frame % CALCULATE_CLUSTERS_FREQUENCY == 0: + # calculate_clusters() + + calculate_target() + calculate_state() + update_horde(delta) + spawn_models(delta) + +func spawn_alien(position : Vector3, rotation: float) -> Alien: + var alien : Alien = Alien.new() + alien.id = alien_id_acc + alien.position = position + alien.rotation.y = rotation + var is_mastodont = randf() < MASTODONT_CHANCE + alien.size = randf_range(1. - ALIEN_RANDOM_SCALE, 1. + ALIEN_RANDOM_SCALE) * (MASTODONT_SCALE_FACTOR if is_mastodont else 1.) + alien.scale = Vector3.ONE * alien.size + + add_child(alien) + + aliens.append(alien) + + alien.died.connect( + func(): + aliens.erase(alien) + ) + + + alien_id_acc += 1 + + return alien + +func calculate_target(): + for alien in aliens: + if (current_frame + alien.id)%CALCULATE_TARGET_FREQUENCY and alien.state != Alien.State.DEAD : + if ( + len(targets) == 0 + or mecha.position.distance_to(alien.position) < alien.get_random().randf_range(0., MAX_ALIEN_MECHA_AGGRO_DISTANCE) + ): + alien.target = mecha + else : + var old_target = alien.target + alien.target = targets[alien.get_random().randi() % len(targets)] + if old_target != alien.target: + alien.state = Alien.State.RUNNING + + +func calculate_state(): + for alien in aliens: + if (current_frame + alien.id)%CALCULATE_STATE_FREQUENCY and alien.state != Alien.State.DEAD and alien.target: + var target_attack_distance = MECHA_ATTACK_DISTANCE if alien.target is Mecha else ATTACK_DISTANCE + alien.state = ( + Alien.State.RUNNING if alien.target.position.distance_to(alien.position) > target_attack_distance + else Alien.State.ATTACKING + ) + +func update_horde(delta): + for alien in aliens: + match alien.state: + Alien.State.RUNNING: + alien.move( + delta, + (current_frame + alien.id)%CALCULATE_DIRECTION_FREQUENCY, + (current_frame + alien.id)%CALCULATE_SCATTER_FREQUENCY + ) + Alien.State.ATTACKING: + alien.attack_target(delta) + +func alien_to_multimesh_id(alien : Alien) -> int: + match alien.state: + Alien.State.RUNNING: + return 0 + Alien.State.ATTACKING: + return 1 + _: return -1 + +func spawn_models(delta): + + for m_id in range(len(multimeshes)): + var multimesh = multimeshes[m_id].multimesh + + multimesh.instance_count = len(aliens) + + for i in range(len(aliens)): + var alien = aliens[i] + var is_current = m_id == alien_to_multimesh_id(alien) + + multimesh.set_instance_transform( + i, + alien.transform.scaled(Vector3.ONE if is_current else Vector3.ZERO) + ) + + if alien.damage_effect_last > 0: + alien.damage_effect_last -= delta + + multimesh.set_instance_custom_data( + i, + Color( + alien.id, + alien.damage_effect_last > 0, + alien.size, + 0 + )) + multimesh.set_instance_color(i ,Color(alien.get_random().randi()%255,alien.get_random().randi()%255,alien.get_random().randi()%255)) + +func is_alien_alive(alien): + return alien and alien is Alien and alien.hp > 0 diff --git a/entities/alien/alien_horde_manager/alien_horde_manager.gd.uid b/entities/alien/alien_horde_manager/alien_horde_manager.gd.uid new file mode 100644 index 0000000..1e42110 --- /dev/null +++ b/entities/alien/alien_horde_manager/alien_horde_manager.gd.uid @@ -0,0 +1 @@ +uid://bsiixctjr7ml4 diff --git a/entities/alien/alien_horde_manager/alien_horde_manager.tscn b/entities/alien/alien_horde_manager/alien_horde_manager.tscn new file mode 100644 index 0000000..2c426a4 --- /dev/null +++ b/entities/alien/alien_horde_manager/alien_horde_manager.tscn @@ -0,0 +1,28 @@ +[gd_scene format=3 uid="uid://brr2idsr7qmpf"] + +[ext_resource type="ArrayMesh" uid="uid://cgv8clg8y80on" path="res://entities/alien/assets/vat/running_alien_vat/alien_mesh.tres" id="1_0bggl"] +[ext_resource type="Script" uid="uid://bsiixctjr7ml4" path="res://entities/alien/alien_horde_manager/alien_horde_manager.gd" id="1_hjbcl"] +[ext_resource type="ArrayMesh" uid="uid://chhggu10sxmuc" path="res://entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres" id="2_hjbcl"] + +[sub_resource type="MultiMesh" id="MultiMesh_33mok"] +transform_format = 1 +use_colors = true +use_custom_data = true +mesh = ExtResource("2_hjbcl") + +[sub_resource type="MultiMesh" id="MultiMesh_tj3hn"] +transform_format = 1 +use_colors = true +use_custom_data = true +mesh = ExtResource("1_0bggl") + +[node name="AlienHordeManager" type="Node" unique_id=1604717993] +script = ExtResource("1_hjbcl") + +[node name="AttackingAlienMultiMesh" type="MultiMeshInstance3D" parent="." unique_id=1055420147] +unique_name_in_owner = true +multimesh = SubResource("MultiMesh_33mok") + +[node name="RunningAlienMultiMesh" type="MultiMeshInstance3D" parent="." unique_id=245629817] +unique_name_in_owner = true +multimesh = SubResource("MultiMesh_tj3hn") diff --git a/entities/alien/assets/3d/alien.blend b/entities/alien/assets/3d/alien.blend new file mode 100644 index 0000000..fdd4366 Binary files /dev/null and b/entities/alien/assets/3d/alien.blend differ diff --git a/entities/alien/assets/3d/alien.blend.import b/entities/alien/assets/3d/alien.blend.import new file mode 100644 index 0000000..56dafd4 --- /dev/null +++ b/entities/alien/assets/3d/alien.blend.import @@ -0,0 +1,2129 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dhupvstgj8rmn" +path="res://.godot/imported/alien.blend-a004036ea175ea547d488522cb0ff62b.scn" + +[deps] + +source_file="res://entities/alien/assets/3d/alien.blend" +dest_files=["res://.godot/imported/alien.blend-a004036ea175ea547d488522cb0ff62b.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"animations": { +"Run": { +"save_to_file/enabled": false, +"save_to_file/fallback_path": "", +"save_to_file/keep_custom_tracks": "", +"save_to_file/path": "", +"settings/loop_mode": 1, +"slice_1/end_frame": 0, +"slice_1/loop_mode": 0, +"slice_1/name": "", +"slice_1/save_to_file/enabled": false, +"slice_1/save_to_file/fallback_path": "", +"slice_1/save_to_file/keep_custom_tracks": false, +"slice_1/save_to_file/path": "", +"slice_1/start_frame": 0, +"slice_10/end_frame": 0, +"slice_10/loop_mode": 0, +"slice_10/name": "", +"slice_10/save_to_file/enabled": false, +"slice_10/save_to_file/fallback_path": "", +"slice_10/save_to_file/keep_custom_tracks": false, +"slice_10/save_to_file/path": "", +"slice_10/start_frame": 0, +"slice_100/end_frame": 0, +"slice_100/loop_mode": 0, +"slice_100/name": "", +"slice_100/save_to_file/enabled": false, +"slice_100/save_to_file/fallback_path": "", +"slice_100/save_to_file/keep_custom_tracks": false, +"slice_100/save_to_file/path": "", +"slice_100/start_frame": 0, +"slice_101/end_frame": 0, +"slice_101/loop_mode": 0, +"slice_101/name": "", +"slice_101/save_to_file/enabled": false, +"slice_101/save_to_file/fallback_path": "", +"slice_101/save_to_file/keep_custom_tracks": false, +"slice_101/save_to_file/path": "", +"slice_101/start_frame": 0, +"slice_102/end_frame": 0, +"slice_102/loop_mode": 0, +"slice_102/name": "", +"slice_102/save_to_file/enabled": false, +"slice_102/save_to_file/fallback_path": "", +"slice_102/save_to_file/keep_custom_tracks": false, +"slice_102/save_to_file/path": "", +"slice_102/start_frame": 0, +"slice_103/end_frame": 0, +"slice_103/loop_mode": 0, +"slice_103/name": "", +"slice_103/save_to_file/enabled": false, +"slice_103/save_to_file/fallback_path": "", +"slice_103/save_to_file/keep_custom_tracks": false, +"slice_103/save_to_file/path": "", +"slice_103/start_frame": 0, +"slice_104/end_frame": 0, +"slice_104/loop_mode": 0, +"slice_104/name": "", +"slice_104/save_to_file/enabled": false, +"slice_104/save_to_file/fallback_path": "", +"slice_104/save_to_file/keep_custom_tracks": false, +"slice_104/save_to_file/path": "", +"slice_104/start_frame": 0, +"slice_105/end_frame": 0, +"slice_105/loop_mode": 0, +"slice_105/name": "", +"slice_105/save_to_file/enabled": false, +"slice_105/save_to_file/fallback_path": "", +"slice_105/save_to_file/keep_custom_tracks": false, +"slice_105/save_to_file/path": "", +"slice_105/start_frame": 0, +"slice_106/end_frame": 0, +"slice_106/loop_mode": 0, +"slice_106/name": "", +"slice_106/save_to_file/enabled": false, +"slice_106/save_to_file/fallback_path": "", +"slice_106/save_to_file/keep_custom_tracks": false, +"slice_106/save_to_file/path": "", +"slice_106/start_frame": 0, +"slice_107/end_frame": 0, +"slice_107/loop_mode": 0, +"slice_107/name": "", +"slice_107/save_to_file/enabled": false, +"slice_107/save_to_file/fallback_path": "", +"slice_107/save_to_file/keep_custom_tracks": false, +"slice_107/save_to_file/path": "", +"slice_107/start_frame": 0, +"slice_108/end_frame": 0, +"slice_108/loop_mode": 0, +"slice_108/name": "", +"slice_108/save_to_file/enabled": false, +"slice_108/save_to_file/fallback_path": "", +"slice_108/save_to_file/keep_custom_tracks": false, +"slice_108/save_to_file/path": "", +"slice_108/start_frame": 0, +"slice_109/end_frame": 0, +"slice_109/loop_mode": 0, +"slice_109/name": "", +"slice_109/save_to_file/enabled": false, +"slice_109/save_to_file/fallback_path": "", +"slice_109/save_to_file/keep_custom_tracks": false, +"slice_109/save_to_file/path": "", +"slice_109/start_frame": 0, +"slice_11/end_frame": 0, +"slice_11/loop_mode": 0, +"slice_11/name": "", +"slice_11/save_to_file/enabled": false, +"slice_11/save_to_file/fallback_path": "", +"slice_11/save_to_file/keep_custom_tracks": false, +"slice_11/save_to_file/path": "", +"slice_11/start_frame": 0, +"slice_110/end_frame": 0, +"slice_110/loop_mode": 0, +"slice_110/name": "", +"slice_110/save_to_file/enabled": false, +"slice_110/save_to_file/fallback_path": "", +"slice_110/save_to_file/keep_custom_tracks": false, +"slice_110/save_to_file/path": "", +"slice_110/start_frame": 0, +"slice_111/end_frame": 0, +"slice_111/loop_mode": 0, +"slice_111/name": "", +"slice_111/save_to_file/enabled": false, +"slice_111/save_to_file/fallback_path": "", +"slice_111/save_to_file/keep_custom_tracks": false, +"slice_111/save_to_file/path": "", +"slice_111/start_frame": 0, +"slice_112/end_frame": 0, +"slice_112/loop_mode": 0, +"slice_112/name": "", +"slice_112/save_to_file/enabled": false, +"slice_112/save_to_file/fallback_path": "", +"slice_112/save_to_file/keep_custom_tracks": false, +"slice_112/save_to_file/path": "", +"slice_112/start_frame": 0, +"slice_113/end_frame": 0, +"slice_113/loop_mode": 0, +"slice_113/name": "", +"slice_113/save_to_file/enabled": false, +"slice_113/save_to_file/fallback_path": "", +"slice_113/save_to_file/keep_custom_tracks": false, +"slice_113/save_to_file/path": "", +"slice_113/start_frame": 0, +"slice_114/end_frame": 0, +"slice_114/loop_mode": 0, +"slice_114/name": "", +"slice_114/save_to_file/enabled": false, +"slice_114/save_to_file/fallback_path": "", +"slice_114/save_to_file/keep_custom_tracks": false, +"slice_114/save_to_file/path": "", +"slice_114/start_frame": 0, +"slice_115/end_frame": 0, +"slice_115/loop_mode": 0, +"slice_115/name": "", +"slice_115/save_to_file/enabled": false, +"slice_115/save_to_file/fallback_path": "", +"slice_115/save_to_file/keep_custom_tracks": false, +"slice_115/save_to_file/path": "", +"slice_115/start_frame": 0, +"slice_116/end_frame": 0, +"slice_116/loop_mode": 0, +"slice_116/name": "", +"slice_116/save_to_file/enabled": false, +"slice_116/save_to_file/fallback_path": "", +"slice_116/save_to_file/keep_custom_tracks": false, +"slice_116/save_to_file/path": "", +"slice_116/start_frame": 0, +"slice_117/end_frame": 0, +"slice_117/loop_mode": 0, +"slice_117/name": "", +"slice_117/save_to_file/enabled": false, +"slice_117/save_to_file/fallback_path": "", +"slice_117/save_to_file/keep_custom_tracks": false, +"slice_117/save_to_file/path": "", +"slice_117/start_frame": 0, +"slice_118/end_frame": 0, +"slice_118/loop_mode": 0, +"slice_118/name": "", +"slice_118/save_to_file/enabled": false, +"slice_118/save_to_file/fallback_path": "", +"slice_118/save_to_file/keep_custom_tracks": false, +"slice_118/save_to_file/path": "", +"slice_118/start_frame": 0, +"slice_119/end_frame": 0, +"slice_119/loop_mode": 0, +"slice_119/name": "", +"slice_119/save_to_file/enabled": false, +"slice_119/save_to_file/fallback_path": "", +"slice_119/save_to_file/keep_custom_tracks": false, +"slice_119/save_to_file/path": "", +"slice_119/start_frame": 0, +"slice_12/end_frame": 0, +"slice_12/loop_mode": 0, +"slice_12/name": "", +"slice_12/save_to_file/enabled": false, +"slice_12/save_to_file/fallback_path": "", +"slice_12/save_to_file/keep_custom_tracks": false, +"slice_12/save_to_file/path": "", +"slice_12/start_frame": 0, +"slice_120/end_frame": 0, +"slice_120/loop_mode": 0, +"slice_120/name": "", +"slice_120/save_to_file/enabled": false, +"slice_120/save_to_file/fallback_path": "", +"slice_120/save_to_file/keep_custom_tracks": false, +"slice_120/save_to_file/path": "", +"slice_120/start_frame": 0, +"slice_121/end_frame": 0, +"slice_121/loop_mode": 0, +"slice_121/name": "", +"slice_121/save_to_file/enabled": false, +"slice_121/save_to_file/fallback_path": "", +"slice_121/save_to_file/keep_custom_tracks": false, +"slice_121/save_to_file/path": "", +"slice_121/start_frame": 0, +"slice_122/end_frame": 0, +"slice_122/loop_mode": 0, +"slice_122/name": "", +"slice_122/save_to_file/enabled": false, +"slice_122/save_to_file/fallback_path": "", +"slice_122/save_to_file/keep_custom_tracks": false, +"slice_122/save_to_file/path": "", +"slice_122/start_frame": 0, +"slice_123/end_frame": 0, +"slice_123/loop_mode": 0, +"slice_123/name": "", +"slice_123/save_to_file/enabled": false, +"slice_123/save_to_file/fallback_path": "", +"slice_123/save_to_file/keep_custom_tracks": false, +"slice_123/save_to_file/path": "", +"slice_123/start_frame": 0, +"slice_124/end_frame": 0, +"slice_124/loop_mode": 0, +"slice_124/name": "", +"slice_124/save_to_file/enabled": false, +"slice_124/save_to_file/fallback_path": "", +"slice_124/save_to_file/keep_custom_tracks": false, +"slice_124/save_to_file/path": "", +"slice_124/start_frame": 0, +"slice_125/end_frame": 0, +"slice_125/loop_mode": 0, +"slice_125/name": "", +"slice_125/save_to_file/enabled": false, +"slice_125/save_to_file/fallback_path": "", +"slice_125/save_to_file/keep_custom_tracks": false, +"slice_125/save_to_file/path": "", +"slice_125/start_frame": 0, +"slice_126/end_frame": 0, +"slice_126/loop_mode": 0, +"slice_126/name": "", +"slice_126/save_to_file/enabled": false, +"slice_126/save_to_file/fallback_path": "", +"slice_126/save_to_file/keep_custom_tracks": false, +"slice_126/save_to_file/path": "", +"slice_126/start_frame": 0, +"slice_127/end_frame": 0, +"slice_127/loop_mode": 0, +"slice_127/name": "", +"slice_127/save_to_file/enabled": false, +"slice_127/save_to_file/fallback_path": "", +"slice_127/save_to_file/keep_custom_tracks": false, +"slice_127/save_to_file/path": "", +"slice_127/start_frame": 0, +"slice_128/end_frame": 0, +"slice_128/loop_mode": 0, +"slice_128/name": "", +"slice_128/save_to_file/enabled": false, +"slice_128/save_to_file/fallback_path": "", +"slice_128/save_to_file/keep_custom_tracks": false, +"slice_128/save_to_file/path": "", +"slice_128/start_frame": 0, +"slice_129/end_frame": 0, +"slice_129/loop_mode": 0, +"slice_129/name": "", +"slice_129/save_to_file/enabled": false, +"slice_129/save_to_file/fallback_path": "", +"slice_129/save_to_file/keep_custom_tracks": false, +"slice_129/save_to_file/path": "", +"slice_129/start_frame": 0, +"slice_13/end_frame": 0, +"slice_13/loop_mode": 0, +"slice_13/name": "", +"slice_13/save_to_file/enabled": false, +"slice_13/save_to_file/fallback_path": "", +"slice_13/save_to_file/keep_custom_tracks": false, +"slice_13/save_to_file/path": "", +"slice_13/start_frame": 0, +"slice_130/end_frame": 0, +"slice_130/loop_mode": 0, +"slice_130/name": "", +"slice_130/save_to_file/enabled": false, +"slice_130/save_to_file/fallback_path": "", +"slice_130/save_to_file/keep_custom_tracks": false, +"slice_130/save_to_file/path": "", +"slice_130/start_frame": 0, +"slice_131/end_frame": 0, +"slice_131/loop_mode": 0, +"slice_131/name": "", +"slice_131/save_to_file/enabled": false, +"slice_131/save_to_file/fallback_path": "", +"slice_131/save_to_file/keep_custom_tracks": false, +"slice_131/save_to_file/path": "", +"slice_131/start_frame": 0, +"slice_132/end_frame": 0, +"slice_132/loop_mode": 0, +"slice_132/name": "", +"slice_132/save_to_file/enabled": false, +"slice_132/save_to_file/fallback_path": "", +"slice_132/save_to_file/keep_custom_tracks": false, +"slice_132/save_to_file/path": "", +"slice_132/start_frame": 0, +"slice_133/end_frame": 0, +"slice_133/loop_mode": 0, +"slice_133/name": "", +"slice_133/save_to_file/enabled": false, +"slice_133/save_to_file/fallback_path": "", +"slice_133/save_to_file/keep_custom_tracks": false, +"slice_133/save_to_file/path": "", +"slice_133/start_frame": 0, +"slice_134/end_frame": 0, +"slice_134/loop_mode": 0, +"slice_134/name": "", +"slice_134/save_to_file/enabled": false, +"slice_134/save_to_file/fallback_path": "", +"slice_134/save_to_file/keep_custom_tracks": false, +"slice_134/save_to_file/path": "", +"slice_134/start_frame": 0, +"slice_135/end_frame": 0, +"slice_135/loop_mode": 0, +"slice_135/name": "", +"slice_135/save_to_file/enabled": false, +"slice_135/save_to_file/fallback_path": "", +"slice_135/save_to_file/keep_custom_tracks": false, +"slice_135/save_to_file/path": "", +"slice_135/start_frame": 0, +"slice_136/end_frame": 0, +"slice_136/loop_mode": 0, +"slice_136/name": "", +"slice_136/save_to_file/enabled": false, +"slice_136/save_to_file/fallback_path": "", +"slice_136/save_to_file/keep_custom_tracks": false, +"slice_136/save_to_file/path": "", +"slice_136/start_frame": 0, +"slice_137/end_frame": 0, +"slice_137/loop_mode": 0, +"slice_137/name": "", +"slice_137/save_to_file/enabled": false, +"slice_137/save_to_file/fallback_path": "", +"slice_137/save_to_file/keep_custom_tracks": false, +"slice_137/save_to_file/path": "", +"slice_137/start_frame": 0, +"slice_138/end_frame": 0, +"slice_138/loop_mode": 0, +"slice_138/name": "", +"slice_138/save_to_file/enabled": false, +"slice_138/save_to_file/fallback_path": "", +"slice_138/save_to_file/keep_custom_tracks": false, +"slice_138/save_to_file/path": "", +"slice_138/start_frame": 0, +"slice_139/end_frame": 0, +"slice_139/loop_mode": 0, +"slice_139/name": "", +"slice_139/save_to_file/enabled": false, +"slice_139/save_to_file/fallback_path": "", +"slice_139/save_to_file/keep_custom_tracks": false, +"slice_139/save_to_file/path": "", +"slice_139/start_frame": 0, +"slice_14/end_frame": 0, +"slice_14/loop_mode": 0, +"slice_14/name": "", +"slice_14/save_to_file/enabled": false, +"slice_14/save_to_file/fallback_path": "", +"slice_14/save_to_file/keep_custom_tracks": false, +"slice_14/save_to_file/path": "", +"slice_14/start_frame": 0, +"slice_140/end_frame": 0, +"slice_140/loop_mode": 0, +"slice_140/name": "", +"slice_140/save_to_file/enabled": false, +"slice_140/save_to_file/fallback_path": "", +"slice_140/save_to_file/keep_custom_tracks": false, +"slice_140/save_to_file/path": "", +"slice_140/start_frame": 0, +"slice_141/end_frame": 0, +"slice_141/loop_mode": 0, +"slice_141/name": "", +"slice_141/save_to_file/enabled": false, +"slice_141/save_to_file/fallback_path": "", +"slice_141/save_to_file/keep_custom_tracks": false, +"slice_141/save_to_file/path": "", +"slice_141/start_frame": 0, +"slice_142/end_frame": 0, +"slice_142/loop_mode": 0, +"slice_142/name": "", +"slice_142/save_to_file/enabled": false, +"slice_142/save_to_file/fallback_path": "", +"slice_142/save_to_file/keep_custom_tracks": false, +"slice_142/save_to_file/path": "", +"slice_142/start_frame": 0, +"slice_143/end_frame": 0, +"slice_143/loop_mode": 0, +"slice_143/name": "", +"slice_143/save_to_file/enabled": false, +"slice_143/save_to_file/fallback_path": "", +"slice_143/save_to_file/keep_custom_tracks": false, +"slice_143/save_to_file/path": "", +"slice_143/start_frame": 0, +"slice_144/end_frame": 0, +"slice_144/loop_mode": 0, +"slice_144/name": "", +"slice_144/save_to_file/enabled": false, +"slice_144/save_to_file/fallback_path": "", +"slice_144/save_to_file/keep_custom_tracks": false, +"slice_144/save_to_file/path": "", +"slice_144/start_frame": 0, +"slice_145/end_frame": 0, +"slice_145/loop_mode": 0, +"slice_145/name": "", +"slice_145/save_to_file/enabled": false, +"slice_145/save_to_file/fallback_path": "", +"slice_145/save_to_file/keep_custom_tracks": false, +"slice_145/save_to_file/path": "", +"slice_145/start_frame": 0, +"slice_146/end_frame": 0, +"slice_146/loop_mode": 0, +"slice_146/name": "", +"slice_146/save_to_file/enabled": false, +"slice_146/save_to_file/fallback_path": "", +"slice_146/save_to_file/keep_custom_tracks": false, +"slice_146/save_to_file/path": "", +"slice_146/start_frame": 0, +"slice_147/end_frame": 0, +"slice_147/loop_mode": 0, +"slice_147/name": "", +"slice_147/save_to_file/enabled": false, +"slice_147/save_to_file/fallback_path": "", +"slice_147/save_to_file/keep_custom_tracks": false, +"slice_147/save_to_file/path": "", +"slice_147/start_frame": 0, +"slice_148/end_frame": 0, +"slice_148/loop_mode": 0, +"slice_148/name": "", +"slice_148/save_to_file/enabled": false, +"slice_148/save_to_file/fallback_path": "", +"slice_148/save_to_file/keep_custom_tracks": false, +"slice_148/save_to_file/path": "", +"slice_148/start_frame": 0, +"slice_149/end_frame": 0, +"slice_149/loop_mode": 0, +"slice_149/name": "", +"slice_149/save_to_file/enabled": false, +"slice_149/save_to_file/fallback_path": "", +"slice_149/save_to_file/keep_custom_tracks": false, +"slice_149/save_to_file/path": "", +"slice_149/start_frame": 0, +"slice_15/end_frame": 0, +"slice_15/loop_mode": 0, +"slice_15/name": "", +"slice_15/save_to_file/enabled": false, +"slice_15/save_to_file/fallback_path": "", +"slice_15/save_to_file/keep_custom_tracks": false, +"slice_15/save_to_file/path": "", +"slice_15/start_frame": 0, +"slice_150/end_frame": 0, +"slice_150/loop_mode": 0, +"slice_150/name": "", +"slice_150/save_to_file/enabled": false, +"slice_150/save_to_file/fallback_path": "", +"slice_150/save_to_file/keep_custom_tracks": false, +"slice_150/save_to_file/path": "", +"slice_150/start_frame": 0, +"slice_151/end_frame": 0, +"slice_151/loop_mode": 0, +"slice_151/name": "", +"slice_151/save_to_file/enabled": false, +"slice_151/save_to_file/fallback_path": "", +"slice_151/save_to_file/keep_custom_tracks": false, +"slice_151/save_to_file/path": "", +"slice_151/start_frame": 0, +"slice_152/end_frame": 0, +"slice_152/loop_mode": 0, +"slice_152/name": "", +"slice_152/save_to_file/enabled": false, +"slice_152/save_to_file/fallback_path": "", +"slice_152/save_to_file/keep_custom_tracks": false, +"slice_152/save_to_file/path": "", +"slice_152/start_frame": 0, +"slice_153/end_frame": 0, +"slice_153/loop_mode": 0, +"slice_153/name": "", +"slice_153/save_to_file/enabled": false, +"slice_153/save_to_file/fallback_path": "", +"slice_153/save_to_file/keep_custom_tracks": false, +"slice_153/save_to_file/path": "", +"slice_153/start_frame": 0, +"slice_154/end_frame": 0, +"slice_154/loop_mode": 0, +"slice_154/name": "", +"slice_154/save_to_file/enabled": false, +"slice_154/save_to_file/fallback_path": "", +"slice_154/save_to_file/keep_custom_tracks": false, +"slice_154/save_to_file/path": "", +"slice_154/start_frame": 0, +"slice_155/end_frame": 0, +"slice_155/loop_mode": 0, +"slice_155/name": "", +"slice_155/save_to_file/enabled": false, +"slice_155/save_to_file/fallback_path": "", +"slice_155/save_to_file/keep_custom_tracks": false, +"slice_155/save_to_file/path": "", +"slice_155/start_frame": 0, +"slice_156/end_frame": 0, +"slice_156/loop_mode": 0, +"slice_156/name": "", +"slice_156/save_to_file/enabled": false, +"slice_156/save_to_file/fallback_path": "", +"slice_156/save_to_file/keep_custom_tracks": false, +"slice_156/save_to_file/path": "", +"slice_156/start_frame": 0, +"slice_157/end_frame": 0, +"slice_157/loop_mode": 0, +"slice_157/name": "", +"slice_157/save_to_file/enabled": false, +"slice_157/save_to_file/fallback_path": "", +"slice_157/save_to_file/keep_custom_tracks": false, +"slice_157/save_to_file/path": "", +"slice_157/start_frame": 0, +"slice_158/end_frame": 0, +"slice_158/loop_mode": 0, +"slice_158/name": "", +"slice_158/save_to_file/enabled": false, +"slice_158/save_to_file/fallback_path": "", +"slice_158/save_to_file/keep_custom_tracks": false, +"slice_158/save_to_file/path": "", +"slice_158/start_frame": 0, +"slice_159/end_frame": 0, +"slice_159/loop_mode": 0, +"slice_159/name": "", +"slice_159/save_to_file/enabled": false, +"slice_159/save_to_file/fallback_path": "", +"slice_159/save_to_file/keep_custom_tracks": false, +"slice_159/save_to_file/path": "", +"slice_159/start_frame": 0, +"slice_16/end_frame": 0, +"slice_16/loop_mode": 0, +"slice_16/name": "", +"slice_16/save_to_file/enabled": false, +"slice_16/save_to_file/fallback_path": "", +"slice_16/save_to_file/keep_custom_tracks": false, +"slice_16/save_to_file/path": "", +"slice_16/start_frame": 0, +"slice_160/end_frame": 0, +"slice_160/loop_mode": 0, +"slice_160/name": "", +"slice_160/save_to_file/enabled": false, +"slice_160/save_to_file/fallback_path": "", +"slice_160/save_to_file/keep_custom_tracks": false, +"slice_160/save_to_file/path": "", +"slice_160/start_frame": 0, +"slice_161/end_frame": 0, +"slice_161/loop_mode": 0, +"slice_161/name": "", +"slice_161/save_to_file/enabled": false, +"slice_161/save_to_file/fallback_path": "", +"slice_161/save_to_file/keep_custom_tracks": false, +"slice_161/save_to_file/path": "", +"slice_161/start_frame": 0, +"slice_162/end_frame": 0, +"slice_162/loop_mode": 0, +"slice_162/name": "", +"slice_162/save_to_file/enabled": false, +"slice_162/save_to_file/fallback_path": "", +"slice_162/save_to_file/keep_custom_tracks": false, +"slice_162/save_to_file/path": "", +"slice_162/start_frame": 0, +"slice_163/end_frame": 0, +"slice_163/loop_mode": 0, +"slice_163/name": "", +"slice_163/save_to_file/enabled": false, +"slice_163/save_to_file/fallback_path": "", +"slice_163/save_to_file/keep_custom_tracks": false, +"slice_163/save_to_file/path": "", +"slice_163/start_frame": 0, +"slice_164/end_frame": 0, +"slice_164/loop_mode": 0, +"slice_164/name": "", +"slice_164/save_to_file/enabled": false, +"slice_164/save_to_file/fallback_path": "", +"slice_164/save_to_file/keep_custom_tracks": false, +"slice_164/save_to_file/path": "", +"slice_164/start_frame": 0, +"slice_165/end_frame": 0, +"slice_165/loop_mode": 0, +"slice_165/name": "", +"slice_165/save_to_file/enabled": false, +"slice_165/save_to_file/fallback_path": "", +"slice_165/save_to_file/keep_custom_tracks": false, +"slice_165/save_to_file/path": "", +"slice_165/start_frame": 0, +"slice_166/end_frame": 0, +"slice_166/loop_mode": 0, +"slice_166/name": "", +"slice_166/save_to_file/enabled": false, +"slice_166/save_to_file/fallback_path": "", +"slice_166/save_to_file/keep_custom_tracks": false, +"slice_166/save_to_file/path": "", +"slice_166/start_frame": 0, +"slice_167/end_frame": 0, +"slice_167/loop_mode": 0, +"slice_167/name": "", +"slice_167/save_to_file/enabled": false, +"slice_167/save_to_file/fallback_path": "", +"slice_167/save_to_file/keep_custom_tracks": false, +"slice_167/save_to_file/path": "", +"slice_167/start_frame": 0, +"slice_168/end_frame": 0, +"slice_168/loop_mode": 0, +"slice_168/name": "", +"slice_168/save_to_file/enabled": false, +"slice_168/save_to_file/fallback_path": "", +"slice_168/save_to_file/keep_custom_tracks": false, +"slice_168/save_to_file/path": "", +"slice_168/start_frame": 0, +"slice_169/end_frame": 0, +"slice_169/loop_mode": 0, +"slice_169/name": "", +"slice_169/save_to_file/enabled": false, +"slice_169/save_to_file/fallback_path": "", +"slice_169/save_to_file/keep_custom_tracks": false, +"slice_169/save_to_file/path": "", +"slice_169/start_frame": 0, +"slice_17/end_frame": 0, +"slice_17/loop_mode": 0, +"slice_17/name": "", +"slice_17/save_to_file/enabled": false, +"slice_17/save_to_file/fallback_path": "", +"slice_17/save_to_file/keep_custom_tracks": false, +"slice_17/save_to_file/path": "", +"slice_17/start_frame": 0, +"slice_170/end_frame": 0, +"slice_170/loop_mode": 0, +"slice_170/name": "", +"slice_170/save_to_file/enabled": false, +"slice_170/save_to_file/fallback_path": "", +"slice_170/save_to_file/keep_custom_tracks": false, +"slice_170/save_to_file/path": "", +"slice_170/start_frame": 0, +"slice_171/end_frame": 0, +"slice_171/loop_mode": 0, +"slice_171/name": "", +"slice_171/save_to_file/enabled": false, +"slice_171/save_to_file/fallback_path": "", +"slice_171/save_to_file/keep_custom_tracks": false, +"slice_171/save_to_file/path": "", +"slice_171/start_frame": 0, +"slice_172/end_frame": 0, +"slice_172/loop_mode": 0, +"slice_172/name": "", +"slice_172/save_to_file/enabled": false, +"slice_172/save_to_file/fallback_path": "", +"slice_172/save_to_file/keep_custom_tracks": false, +"slice_172/save_to_file/path": "", +"slice_172/start_frame": 0, +"slice_173/end_frame": 0, +"slice_173/loop_mode": 0, +"slice_173/name": "", +"slice_173/save_to_file/enabled": false, +"slice_173/save_to_file/fallback_path": "", +"slice_173/save_to_file/keep_custom_tracks": false, +"slice_173/save_to_file/path": "", +"slice_173/start_frame": 0, +"slice_174/end_frame": 0, +"slice_174/loop_mode": 0, +"slice_174/name": "", +"slice_174/save_to_file/enabled": false, +"slice_174/save_to_file/fallback_path": "", +"slice_174/save_to_file/keep_custom_tracks": false, +"slice_174/save_to_file/path": "", +"slice_174/start_frame": 0, +"slice_175/end_frame": 0, +"slice_175/loop_mode": 0, +"slice_175/name": "", +"slice_175/save_to_file/enabled": false, +"slice_175/save_to_file/fallback_path": "", +"slice_175/save_to_file/keep_custom_tracks": false, +"slice_175/save_to_file/path": "", +"slice_175/start_frame": 0, +"slice_176/end_frame": 0, +"slice_176/loop_mode": 0, +"slice_176/name": "", +"slice_176/save_to_file/enabled": false, +"slice_176/save_to_file/fallback_path": "", +"slice_176/save_to_file/keep_custom_tracks": false, +"slice_176/save_to_file/path": "", +"slice_176/start_frame": 0, +"slice_177/end_frame": 0, +"slice_177/loop_mode": 0, +"slice_177/name": "", +"slice_177/save_to_file/enabled": false, +"slice_177/save_to_file/fallback_path": "", +"slice_177/save_to_file/keep_custom_tracks": false, +"slice_177/save_to_file/path": "", +"slice_177/start_frame": 0, +"slice_178/end_frame": 0, +"slice_178/loop_mode": 0, +"slice_178/name": "", +"slice_178/save_to_file/enabled": false, +"slice_178/save_to_file/fallback_path": "", +"slice_178/save_to_file/keep_custom_tracks": false, +"slice_178/save_to_file/path": "", +"slice_178/start_frame": 0, +"slice_179/end_frame": 0, +"slice_179/loop_mode": 0, +"slice_179/name": "", +"slice_179/save_to_file/enabled": false, +"slice_179/save_to_file/fallback_path": "", +"slice_179/save_to_file/keep_custom_tracks": false, +"slice_179/save_to_file/path": "", +"slice_179/start_frame": 0, +"slice_18/end_frame": 0, +"slice_18/loop_mode": 0, +"slice_18/name": "", +"slice_18/save_to_file/enabled": false, +"slice_18/save_to_file/fallback_path": "", +"slice_18/save_to_file/keep_custom_tracks": false, +"slice_18/save_to_file/path": "", +"slice_18/start_frame": 0, +"slice_180/end_frame": 0, +"slice_180/loop_mode": 0, +"slice_180/name": "", +"slice_180/save_to_file/enabled": false, +"slice_180/save_to_file/fallback_path": "", +"slice_180/save_to_file/keep_custom_tracks": false, +"slice_180/save_to_file/path": "", +"slice_180/start_frame": 0, +"slice_181/end_frame": 0, +"slice_181/loop_mode": 0, +"slice_181/name": "", +"slice_181/save_to_file/enabled": false, +"slice_181/save_to_file/fallback_path": "", +"slice_181/save_to_file/keep_custom_tracks": false, +"slice_181/save_to_file/path": "", +"slice_181/start_frame": 0, +"slice_182/end_frame": 0, +"slice_182/loop_mode": 0, +"slice_182/name": "", +"slice_182/save_to_file/enabled": false, +"slice_182/save_to_file/fallback_path": "", +"slice_182/save_to_file/keep_custom_tracks": false, +"slice_182/save_to_file/path": "", +"slice_182/start_frame": 0, +"slice_183/end_frame": 0, +"slice_183/loop_mode": 0, +"slice_183/name": "", +"slice_183/save_to_file/enabled": false, +"slice_183/save_to_file/fallback_path": "", +"slice_183/save_to_file/keep_custom_tracks": false, +"slice_183/save_to_file/path": "", +"slice_183/start_frame": 0, +"slice_184/end_frame": 0, +"slice_184/loop_mode": 0, +"slice_184/name": "", +"slice_184/save_to_file/enabled": false, +"slice_184/save_to_file/fallback_path": "", +"slice_184/save_to_file/keep_custom_tracks": false, +"slice_184/save_to_file/path": "", +"slice_184/start_frame": 0, +"slice_185/end_frame": 0, +"slice_185/loop_mode": 0, +"slice_185/name": "", +"slice_185/save_to_file/enabled": false, +"slice_185/save_to_file/fallback_path": "", +"slice_185/save_to_file/keep_custom_tracks": false, +"slice_185/save_to_file/path": "", +"slice_185/start_frame": 0, +"slice_186/end_frame": 0, +"slice_186/loop_mode": 0, +"slice_186/name": "", +"slice_186/save_to_file/enabled": false, +"slice_186/save_to_file/fallback_path": "", +"slice_186/save_to_file/keep_custom_tracks": false, +"slice_186/save_to_file/path": "", +"slice_186/start_frame": 0, +"slice_187/end_frame": 0, +"slice_187/loop_mode": 0, +"slice_187/name": "", +"slice_187/save_to_file/enabled": false, +"slice_187/save_to_file/fallback_path": "", +"slice_187/save_to_file/keep_custom_tracks": false, +"slice_187/save_to_file/path": "", +"slice_187/start_frame": 0, +"slice_188/end_frame": 0, +"slice_188/loop_mode": 0, +"slice_188/name": "", +"slice_188/save_to_file/enabled": false, +"slice_188/save_to_file/fallback_path": "", +"slice_188/save_to_file/keep_custom_tracks": false, +"slice_188/save_to_file/path": "", +"slice_188/start_frame": 0, +"slice_189/end_frame": 0, +"slice_189/loop_mode": 0, +"slice_189/name": "", +"slice_189/save_to_file/enabled": false, +"slice_189/save_to_file/fallback_path": "", +"slice_189/save_to_file/keep_custom_tracks": false, +"slice_189/save_to_file/path": "", +"slice_189/start_frame": 0, +"slice_19/end_frame": 0, +"slice_19/loop_mode": 0, +"slice_19/name": "", +"slice_19/save_to_file/enabled": false, +"slice_19/save_to_file/fallback_path": "", +"slice_19/save_to_file/keep_custom_tracks": false, +"slice_19/save_to_file/path": "", +"slice_19/start_frame": 0, +"slice_190/end_frame": 0, +"slice_190/loop_mode": 0, +"slice_190/name": "", +"slice_190/save_to_file/enabled": false, +"slice_190/save_to_file/fallback_path": "", +"slice_190/save_to_file/keep_custom_tracks": false, +"slice_190/save_to_file/path": "", +"slice_190/start_frame": 0, +"slice_191/end_frame": 0, +"slice_191/loop_mode": 0, +"slice_191/name": "", +"slice_191/save_to_file/enabled": false, +"slice_191/save_to_file/fallback_path": "", +"slice_191/save_to_file/keep_custom_tracks": false, +"slice_191/save_to_file/path": "", +"slice_191/start_frame": 0, +"slice_192/end_frame": 0, +"slice_192/loop_mode": 0, +"slice_192/name": "", +"slice_192/save_to_file/enabled": false, +"slice_192/save_to_file/fallback_path": "", +"slice_192/save_to_file/keep_custom_tracks": false, +"slice_192/save_to_file/path": "", +"slice_192/start_frame": 0, +"slice_193/end_frame": 0, +"slice_193/loop_mode": 0, +"slice_193/name": "", +"slice_193/save_to_file/enabled": false, +"slice_193/save_to_file/fallback_path": "", +"slice_193/save_to_file/keep_custom_tracks": false, +"slice_193/save_to_file/path": "", +"slice_193/start_frame": 0, +"slice_194/end_frame": 0, +"slice_194/loop_mode": 0, +"slice_194/name": "", +"slice_194/save_to_file/enabled": false, +"slice_194/save_to_file/fallback_path": "", +"slice_194/save_to_file/keep_custom_tracks": false, +"slice_194/save_to_file/path": "", +"slice_194/start_frame": 0, +"slice_195/end_frame": 0, +"slice_195/loop_mode": 0, +"slice_195/name": "", +"slice_195/save_to_file/enabled": false, +"slice_195/save_to_file/fallback_path": "", +"slice_195/save_to_file/keep_custom_tracks": false, +"slice_195/save_to_file/path": "", +"slice_195/start_frame": 0, +"slice_196/end_frame": 0, +"slice_196/loop_mode": 0, +"slice_196/name": "", +"slice_196/save_to_file/enabled": false, +"slice_196/save_to_file/fallback_path": "", +"slice_196/save_to_file/keep_custom_tracks": false, +"slice_196/save_to_file/path": "", +"slice_196/start_frame": 0, +"slice_197/end_frame": 0, +"slice_197/loop_mode": 0, +"slice_197/name": "", +"slice_197/save_to_file/enabled": false, +"slice_197/save_to_file/fallback_path": "", +"slice_197/save_to_file/keep_custom_tracks": false, +"slice_197/save_to_file/path": "", +"slice_197/start_frame": 0, +"slice_198/end_frame": 0, +"slice_198/loop_mode": 0, +"slice_198/name": "", +"slice_198/save_to_file/enabled": false, +"slice_198/save_to_file/fallback_path": "", +"slice_198/save_to_file/keep_custom_tracks": false, +"slice_198/save_to_file/path": "", +"slice_198/start_frame": 0, +"slice_199/end_frame": 0, +"slice_199/loop_mode": 0, +"slice_199/name": "", +"slice_199/save_to_file/enabled": false, +"slice_199/save_to_file/fallback_path": "", +"slice_199/save_to_file/keep_custom_tracks": false, +"slice_199/save_to_file/path": "", +"slice_199/start_frame": 0, +"slice_2/end_frame": 0, +"slice_2/loop_mode": 0, +"slice_2/name": "", +"slice_2/save_to_file/enabled": false, +"slice_2/save_to_file/fallback_path": "", +"slice_2/save_to_file/keep_custom_tracks": false, +"slice_2/save_to_file/path": "", +"slice_2/start_frame": 0, +"slice_20/end_frame": 0, +"slice_20/loop_mode": 0, +"slice_20/name": "", +"slice_20/save_to_file/enabled": false, +"slice_20/save_to_file/fallback_path": "", +"slice_20/save_to_file/keep_custom_tracks": false, +"slice_20/save_to_file/path": "", +"slice_20/start_frame": 0, +"slice_200/end_frame": 0, +"slice_200/loop_mode": 0, +"slice_200/name": "", +"slice_200/save_to_file/enabled": false, +"slice_200/save_to_file/fallback_path": "", +"slice_200/save_to_file/keep_custom_tracks": false, +"slice_200/save_to_file/path": "", +"slice_200/start_frame": 0, +"slice_201/end_frame": 0, +"slice_201/loop_mode": 0, +"slice_201/name": "", +"slice_201/save_to_file/enabled": false, +"slice_201/save_to_file/fallback_path": "", +"slice_201/save_to_file/keep_custom_tracks": false, +"slice_201/save_to_file/path": "", +"slice_201/start_frame": 0, +"slice_202/end_frame": 0, +"slice_202/loop_mode": 0, +"slice_202/name": "", +"slice_202/save_to_file/enabled": false, +"slice_202/save_to_file/fallback_path": "", +"slice_202/save_to_file/keep_custom_tracks": false, +"slice_202/save_to_file/path": "", +"slice_202/start_frame": 0, +"slice_203/end_frame": 0, +"slice_203/loop_mode": 0, +"slice_203/name": "", +"slice_203/save_to_file/enabled": false, +"slice_203/save_to_file/fallback_path": "", +"slice_203/save_to_file/keep_custom_tracks": false, +"slice_203/save_to_file/path": "", +"slice_203/start_frame": 0, +"slice_204/end_frame": 0, +"slice_204/loop_mode": 0, +"slice_204/name": "", +"slice_204/save_to_file/enabled": false, +"slice_204/save_to_file/fallback_path": "", +"slice_204/save_to_file/keep_custom_tracks": false, +"slice_204/save_to_file/path": "", +"slice_204/start_frame": 0, +"slice_205/end_frame": 0, +"slice_205/loop_mode": 0, +"slice_205/name": "", +"slice_205/save_to_file/enabled": false, +"slice_205/save_to_file/fallback_path": "", +"slice_205/save_to_file/keep_custom_tracks": false, +"slice_205/save_to_file/path": "", +"slice_205/start_frame": 0, +"slice_206/end_frame": 0, +"slice_206/loop_mode": 0, +"slice_206/name": "", +"slice_206/save_to_file/enabled": false, +"slice_206/save_to_file/fallback_path": "", +"slice_206/save_to_file/keep_custom_tracks": false, +"slice_206/save_to_file/path": "", +"slice_206/start_frame": 0, +"slice_207/end_frame": 0, +"slice_207/loop_mode": 0, +"slice_207/name": "", +"slice_207/save_to_file/enabled": false, +"slice_207/save_to_file/fallback_path": "", +"slice_207/save_to_file/keep_custom_tracks": false, +"slice_207/save_to_file/path": "", +"slice_207/start_frame": 0, +"slice_208/end_frame": 0, +"slice_208/loop_mode": 0, +"slice_208/name": "", +"slice_208/save_to_file/enabled": false, +"slice_208/save_to_file/fallback_path": "", +"slice_208/save_to_file/keep_custom_tracks": false, +"slice_208/save_to_file/path": "", +"slice_208/start_frame": 0, +"slice_209/end_frame": 0, +"slice_209/loop_mode": 0, +"slice_209/name": "", +"slice_209/save_to_file/enabled": false, +"slice_209/save_to_file/fallback_path": "", +"slice_209/save_to_file/keep_custom_tracks": false, +"slice_209/save_to_file/path": "", +"slice_209/start_frame": 0, +"slice_21/end_frame": 0, +"slice_21/loop_mode": 0, +"slice_21/name": "", +"slice_21/save_to_file/enabled": false, +"slice_21/save_to_file/fallback_path": "", +"slice_21/save_to_file/keep_custom_tracks": false, +"slice_21/save_to_file/path": "", +"slice_21/start_frame": 0, +"slice_210/end_frame": 0, +"slice_210/loop_mode": 0, +"slice_210/name": "", +"slice_210/save_to_file/enabled": false, +"slice_210/save_to_file/fallback_path": "", +"slice_210/save_to_file/keep_custom_tracks": false, +"slice_210/save_to_file/path": "", +"slice_210/start_frame": 0, +"slice_211/end_frame": 0, +"slice_211/loop_mode": 0, +"slice_211/name": "", +"slice_211/save_to_file/enabled": false, +"slice_211/save_to_file/fallback_path": "", +"slice_211/save_to_file/keep_custom_tracks": false, +"slice_211/save_to_file/path": "", +"slice_211/start_frame": 0, +"slice_212/end_frame": 0, +"slice_212/loop_mode": 0, +"slice_212/name": "", +"slice_212/save_to_file/enabled": false, +"slice_212/save_to_file/fallback_path": "", +"slice_212/save_to_file/keep_custom_tracks": false, +"slice_212/save_to_file/path": "", +"slice_212/start_frame": 0, +"slice_213/end_frame": 0, +"slice_213/loop_mode": 0, +"slice_213/name": "", +"slice_213/save_to_file/enabled": false, +"slice_213/save_to_file/fallback_path": "", +"slice_213/save_to_file/keep_custom_tracks": false, +"slice_213/save_to_file/path": "", +"slice_213/start_frame": 0, +"slice_214/end_frame": 0, +"slice_214/loop_mode": 0, +"slice_214/name": "", +"slice_214/save_to_file/enabled": false, +"slice_214/save_to_file/fallback_path": "", +"slice_214/save_to_file/keep_custom_tracks": false, +"slice_214/save_to_file/path": "", +"slice_214/start_frame": 0, +"slice_215/end_frame": 0, +"slice_215/loop_mode": 0, +"slice_215/name": "", +"slice_215/save_to_file/enabled": false, +"slice_215/save_to_file/fallback_path": "", +"slice_215/save_to_file/keep_custom_tracks": false, +"slice_215/save_to_file/path": "", +"slice_215/start_frame": 0, +"slice_216/end_frame": 0, +"slice_216/loop_mode": 0, +"slice_216/name": "", +"slice_216/save_to_file/enabled": false, +"slice_216/save_to_file/fallback_path": "", +"slice_216/save_to_file/keep_custom_tracks": false, +"slice_216/save_to_file/path": "", +"slice_216/start_frame": 0, +"slice_217/end_frame": 0, +"slice_217/loop_mode": 0, +"slice_217/name": "", +"slice_217/save_to_file/enabled": false, +"slice_217/save_to_file/fallback_path": "", +"slice_217/save_to_file/keep_custom_tracks": false, +"slice_217/save_to_file/path": "", +"slice_217/start_frame": 0, +"slice_218/end_frame": 0, +"slice_218/loop_mode": 0, +"slice_218/name": "", +"slice_218/save_to_file/enabled": false, +"slice_218/save_to_file/fallback_path": "", +"slice_218/save_to_file/keep_custom_tracks": false, +"slice_218/save_to_file/path": "", +"slice_218/start_frame": 0, +"slice_219/end_frame": 0, +"slice_219/loop_mode": 0, +"slice_219/name": "", +"slice_219/save_to_file/enabled": false, +"slice_219/save_to_file/fallback_path": "", +"slice_219/save_to_file/keep_custom_tracks": false, +"slice_219/save_to_file/path": "", +"slice_219/start_frame": 0, +"slice_22/end_frame": 0, +"slice_22/loop_mode": 0, +"slice_22/name": "", +"slice_22/save_to_file/enabled": false, +"slice_22/save_to_file/fallback_path": "", +"slice_22/save_to_file/keep_custom_tracks": false, +"slice_22/save_to_file/path": "", +"slice_22/start_frame": 0, +"slice_220/end_frame": 0, +"slice_220/loop_mode": 0, +"slice_220/name": "", +"slice_220/save_to_file/enabled": false, +"slice_220/save_to_file/fallback_path": "", +"slice_220/save_to_file/keep_custom_tracks": false, +"slice_220/save_to_file/path": "", +"slice_220/start_frame": 0, +"slice_221/end_frame": 0, +"slice_221/loop_mode": 0, +"slice_221/name": "", +"slice_221/save_to_file/enabled": false, +"slice_221/save_to_file/fallback_path": "", +"slice_221/save_to_file/keep_custom_tracks": false, +"slice_221/save_to_file/path": "", +"slice_221/start_frame": 0, +"slice_222/end_frame": 0, +"slice_222/loop_mode": 0, +"slice_222/name": "", +"slice_222/save_to_file/enabled": false, +"slice_222/save_to_file/fallback_path": "", +"slice_222/save_to_file/keep_custom_tracks": false, +"slice_222/save_to_file/path": "", +"slice_222/start_frame": 0, +"slice_223/end_frame": 0, +"slice_223/loop_mode": 0, +"slice_223/name": "", +"slice_223/save_to_file/enabled": false, +"slice_223/save_to_file/fallback_path": "", +"slice_223/save_to_file/keep_custom_tracks": false, +"slice_223/save_to_file/path": "", +"slice_223/start_frame": 0, +"slice_224/end_frame": 0, +"slice_224/loop_mode": 0, +"slice_224/name": "", +"slice_224/save_to_file/enabled": false, +"slice_224/save_to_file/fallback_path": "", +"slice_224/save_to_file/keep_custom_tracks": false, +"slice_224/save_to_file/path": "", +"slice_224/start_frame": 0, +"slice_225/end_frame": 0, +"slice_225/loop_mode": 0, +"slice_225/name": "", +"slice_225/save_to_file/enabled": false, +"slice_225/save_to_file/fallback_path": "", +"slice_225/save_to_file/keep_custom_tracks": false, +"slice_225/save_to_file/path": "", +"slice_225/start_frame": 0, +"slice_226/end_frame": 0, +"slice_226/loop_mode": 0, +"slice_226/name": "", +"slice_226/save_to_file/enabled": false, +"slice_226/save_to_file/fallback_path": "", +"slice_226/save_to_file/keep_custom_tracks": false, +"slice_226/save_to_file/path": "", +"slice_226/start_frame": 0, +"slice_227/end_frame": 0, +"slice_227/loop_mode": 0, +"slice_227/name": "", +"slice_227/save_to_file/enabled": false, +"slice_227/save_to_file/fallback_path": "", +"slice_227/save_to_file/keep_custom_tracks": false, +"slice_227/save_to_file/path": "", +"slice_227/start_frame": 0, +"slice_228/end_frame": 0, +"slice_228/loop_mode": 0, +"slice_228/name": "", +"slice_228/save_to_file/enabled": false, +"slice_228/save_to_file/fallback_path": "", +"slice_228/save_to_file/keep_custom_tracks": false, +"slice_228/save_to_file/path": "", +"slice_228/start_frame": 0, +"slice_229/end_frame": 0, +"slice_229/loop_mode": 0, +"slice_229/name": "", +"slice_229/save_to_file/enabled": false, +"slice_229/save_to_file/fallback_path": "", +"slice_229/save_to_file/keep_custom_tracks": false, +"slice_229/save_to_file/path": "", +"slice_229/start_frame": 0, +"slice_23/end_frame": 0, +"slice_23/loop_mode": 0, +"slice_23/name": "", +"slice_23/save_to_file/enabled": false, +"slice_23/save_to_file/fallback_path": "", +"slice_23/save_to_file/keep_custom_tracks": false, +"slice_23/save_to_file/path": "", +"slice_23/start_frame": 0, +"slice_230/end_frame": 0, +"slice_230/loop_mode": 0, +"slice_230/name": "", +"slice_230/save_to_file/enabled": false, +"slice_230/save_to_file/fallback_path": "", +"slice_230/save_to_file/keep_custom_tracks": false, +"slice_230/save_to_file/path": "", +"slice_230/start_frame": 0, +"slice_231/end_frame": 0, +"slice_231/loop_mode": 0, +"slice_231/name": "", +"slice_231/save_to_file/enabled": false, +"slice_231/save_to_file/fallback_path": "", +"slice_231/save_to_file/keep_custom_tracks": false, +"slice_231/save_to_file/path": "", +"slice_231/start_frame": 0, +"slice_232/end_frame": 0, +"slice_232/loop_mode": 0, +"slice_232/name": "", +"slice_232/save_to_file/enabled": false, +"slice_232/save_to_file/fallback_path": "", +"slice_232/save_to_file/keep_custom_tracks": false, +"slice_232/save_to_file/path": "", +"slice_232/start_frame": 0, +"slice_233/end_frame": 0, +"slice_233/loop_mode": 0, +"slice_233/name": "", +"slice_233/save_to_file/enabled": false, +"slice_233/save_to_file/fallback_path": "", +"slice_233/save_to_file/keep_custom_tracks": false, +"slice_233/save_to_file/path": "", +"slice_233/start_frame": 0, +"slice_234/end_frame": 0, +"slice_234/loop_mode": 0, +"slice_234/name": "", +"slice_234/save_to_file/enabled": false, +"slice_234/save_to_file/fallback_path": "", +"slice_234/save_to_file/keep_custom_tracks": false, +"slice_234/save_to_file/path": "", +"slice_234/start_frame": 0, +"slice_235/end_frame": 0, +"slice_235/loop_mode": 0, +"slice_235/name": "", +"slice_235/save_to_file/enabled": false, +"slice_235/save_to_file/fallback_path": "", +"slice_235/save_to_file/keep_custom_tracks": false, +"slice_235/save_to_file/path": "", +"slice_235/start_frame": 0, +"slice_236/end_frame": 0, +"slice_236/loop_mode": 0, +"slice_236/name": "", +"slice_236/save_to_file/enabled": false, +"slice_236/save_to_file/fallback_path": "", +"slice_236/save_to_file/keep_custom_tracks": false, +"slice_236/save_to_file/path": "", +"slice_236/start_frame": 0, +"slice_237/end_frame": 0, +"slice_237/loop_mode": 0, +"slice_237/name": "", +"slice_237/save_to_file/enabled": false, +"slice_237/save_to_file/fallback_path": "", +"slice_237/save_to_file/keep_custom_tracks": false, +"slice_237/save_to_file/path": "", +"slice_237/start_frame": 0, +"slice_238/end_frame": 0, +"slice_238/loop_mode": 0, +"slice_238/name": "", +"slice_238/save_to_file/enabled": false, +"slice_238/save_to_file/fallback_path": "", +"slice_238/save_to_file/keep_custom_tracks": false, +"slice_238/save_to_file/path": "", +"slice_238/start_frame": 0, +"slice_239/end_frame": 0, +"slice_239/loop_mode": 0, +"slice_239/name": "", +"slice_239/save_to_file/enabled": false, +"slice_239/save_to_file/fallback_path": "", +"slice_239/save_to_file/keep_custom_tracks": false, +"slice_239/save_to_file/path": "", +"slice_239/start_frame": 0, +"slice_24/end_frame": 0, +"slice_24/loop_mode": 0, +"slice_24/name": "", +"slice_24/save_to_file/enabled": false, +"slice_24/save_to_file/fallback_path": "", +"slice_24/save_to_file/keep_custom_tracks": false, +"slice_24/save_to_file/path": "", +"slice_24/start_frame": 0, +"slice_240/end_frame": 0, +"slice_240/loop_mode": 0, +"slice_240/name": "", +"slice_240/save_to_file/enabled": false, +"slice_240/save_to_file/fallback_path": "", +"slice_240/save_to_file/keep_custom_tracks": false, +"slice_240/save_to_file/path": "", +"slice_240/start_frame": 0, +"slice_241/end_frame": 0, +"slice_241/loop_mode": 0, +"slice_241/name": "", +"slice_241/save_to_file/enabled": false, +"slice_241/save_to_file/fallback_path": "", +"slice_241/save_to_file/keep_custom_tracks": false, +"slice_241/save_to_file/path": "", +"slice_241/start_frame": 0, +"slice_242/end_frame": 0, +"slice_242/loop_mode": 0, +"slice_242/name": "", +"slice_242/save_to_file/enabled": false, +"slice_242/save_to_file/fallback_path": "", +"slice_242/save_to_file/keep_custom_tracks": false, +"slice_242/save_to_file/path": "", +"slice_242/start_frame": 0, +"slice_243/end_frame": 0, +"slice_243/loop_mode": 0, +"slice_243/name": "", +"slice_243/save_to_file/enabled": false, +"slice_243/save_to_file/fallback_path": "", +"slice_243/save_to_file/keep_custom_tracks": false, +"slice_243/save_to_file/path": "", +"slice_243/start_frame": 0, +"slice_244/end_frame": 0, +"slice_244/loop_mode": 0, +"slice_244/name": "", +"slice_244/save_to_file/enabled": false, +"slice_244/save_to_file/fallback_path": "", +"slice_244/save_to_file/keep_custom_tracks": false, +"slice_244/save_to_file/path": "", +"slice_244/start_frame": 0, +"slice_245/end_frame": 0, +"slice_245/loop_mode": 0, +"slice_245/name": "", +"slice_245/save_to_file/enabled": false, +"slice_245/save_to_file/fallback_path": "", +"slice_245/save_to_file/keep_custom_tracks": false, +"slice_245/save_to_file/path": "", +"slice_245/start_frame": 0, +"slice_246/end_frame": 0, +"slice_246/loop_mode": 0, +"slice_246/name": "", +"slice_246/save_to_file/enabled": false, +"slice_246/save_to_file/fallback_path": "", +"slice_246/save_to_file/keep_custom_tracks": false, +"slice_246/save_to_file/path": "", +"slice_246/start_frame": 0, +"slice_247/end_frame": 0, +"slice_247/loop_mode": 0, +"slice_247/name": "", +"slice_247/save_to_file/enabled": false, +"slice_247/save_to_file/fallback_path": "", +"slice_247/save_to_file/keep_custom_tracks": false, +"slice_247/save_to_file/path": "", +"slice_247/start_frame": 0, +"slice_248/end_frame": 0, +"slice_248/loop_mode": 0, +"slice_248/name": "", +"slice_248/save_to_file/enabled": false, +"slice_248/save_to_file/fallback_path": "", +"slice_248/save_to_file/keep_custom_tracks": false, +"slice_248/save_to_file/path": "", +"slice_248/start_frame": 0, +"slice_249/end_frame": 0, +"slice_249/loop_mode": 0, +"slice_249/name": "", +"slice_249/save_to_file/enabled": false, +"slice_249/save_to_file/fallback_path": "", +"slice_249/save_to_file/keep_custom_tracks": false, +"slice_249/save_to_file/path": "", +"slice_249/start_frame": 0, +"slice_25/end_frame": 0, +"slice_25/loop_mode": 0, +"slice_25/name": "", +"slice_25/save_to_file/enabled": false, +"slice_25/save_to_file/fallback_path": "", +"slice_25/save_to_file/keep_custom_tracks": false, +"slice_25/save_to_file/path": "", +"slice_25/start_frame": 0, +"slice_250/end_frame": 0, +"slice_250/loop_mode": 0, +"slice_250/name": "", +"slice_250/save_to_file/enabled": false, +"slice_250/save_to_file/fallback_path": "", +"slice_250/save_to_file/keep_custom_tracks": false, +"slice_250/save_to_file/path": "", +"slice_250/start_frame": 0, +"slice_251/end_frame": 0, +"slice_251/loop_mode": 0, +"slice_251/name": "", +"slice_251/save_to_file/enabled": false, +"slice_251/save_to_file/fallback_path": "", +"slice_251/save_to_file/keep_custom_tracks": false, +"slice_251/save_to_file/path": "", +"slice_251/start_frame": 0, +"slice_252/end_frame": 0, +"slice_252/loop_mode": 0, +"slice_252/name": "", +"slice_252/save_to_file/enabled": false, +"slice_252/save_to_file/fallback_path": "", +"slice_252/save_to_file/keep_custom_tracks": false, +"slice_252/save_to_file/path": "", +"slice_252/start_frame": 0, +"slice_253/end_frame": 0, +"slice_253/loop_mode": 0, +"slice_253/name": "", +"slice_253/save_to_file/enabled": false, +"slice_253/save_to_file/fallback_path": "", +"slice_253/save_to_file/keep_custom_tracks": false, +"slice_253/save_to_file/path": "", +"slice_253/start_frame": 0, +"slice_254/end_frame": 0, +"slice_254/loop_mode": 0, +"slice_254/name": "", +"slice_254/save_to_file/enabled": false, +"slice_254/save_to_file/fallback_path": "", +"slice_254/save_to_file/keep_custom_tracks": false, +"slice_254/save_to_file/path": "", +"slice_254/start_frame": 0, +"slice_255/end_frame": 0, +"slice_255/loop_mode": 0, +"slice_255/name": "", +"slice_255/save_to_file/enabled": false, +"slice_255/save_to_file/fallback_path": "", +"slice_255/save_to_file/keep_custom_tracks": false, +"slice_255/save_to_file/path": "", +"slice_255/start_frame": 0, +"slice_256/end_frame": 0, +"slice_256/loop_mode": 0, +"slice_256/name": "", +"slice_256/save_to_file/enabled": false, +"slice_256/save_to_file/fallback_path": "", +"slice_256/save_to_file/keep_custom_tracks": false, +"slice_256/save_to_file/path": "", +"slice_256/start_frame": 0, +"slice_26/end_frame": 0, +"slice_26/loop_mode": 0, +"slice_26/name": "", +"slice_26/save_to_file/enabled": false, +"slice_26/save_to_file/fallback_path": "", +"slice_26/save_to_file/keep_custom_tracks": false, +"slice_26/save_to_file/path": "", +"slice_26/start_frame": 0, +"slice_27/end_frame": 0, +"slice_27/loop_mode": 0, +"slice_27/name": "", +"slice_27/save_to_file/enabled": false, +"slice_27/save_to_file/fallback_path": "", +"slice_27/save_to_file/keep_custom_tracks": false, +"slice_27/save_to_file/path": "", +"slice_27/start_frame": 0, +"slice_28/end_frame": 0, +"slice_28/loop_mode": 0, +"slice_28/name": "", +"slice_28/save_to_file/enabled": false, +"slice_28/save_to_file/fallback_path": "", +"slice_28/save_to_file/keep_custom_tracks": false, +"slice_28/save_to_file/path": "", +"slice_28/start_frame": 0, +"slice_29/end_frame": 0, +"slice_29/loop_mode": 0, +"slice_29/name": "", +"slice_29/save_to_file/enabled": false, +"slice_29/save_to_file/fallback_path": "", +"slice_29/save_to_file/keep_custom_tracks": false, +"slice_29/save_to_file/path": "", +"slice_29/start_frame": 0, +"slice_3/end_frame": 0, +"slice_3/loop_mode": 0, +"slice_3/name": "", +"slice_3/save_to_file/enabled": false, +"slice_3/save_to_file/fallback_path": "", +"slice_3/save_to_file/keep_custom_tracks": false, +"slice_3/save_to_file/path": "", +"slice_3/start_frame": 0, +"slice_30/end_frame": 0, +"slice_30/loop_mode": 0, +"slice_30/name": "", +"slice_30/save_to_file/enabled": false, +"slice_30/save_to_file/fallback_path": "", +"slice_30/save_to_file/keep_custom_tracks": false, +"slice_30/save_to_file/path": "", +"slice_30/start_frame": 0, +"slice_31/end_frame": 0, +"slice_31/loop_mode": 0, +"slice_31/name": "", +"slice_31/save_to_file/enabled": false, +"slice_31/save_to_file/fallback_path": "", +"slice_31/save_to_file/keep_custom_tracks": false, +"slice_31/save_to_file/path": "", +"slice_31/start_frame": 0, +"slice_32/end_frame": 0, +"slice_32/loop_mode": 0, +"slice_32/name": "", +"slice_32/save_to_file/enabled": false, +"slice_32/save_to_file/fallback_path": "", +"slice_32/save_to_file/keep_custom_tracks": false, +"slice_32/save_to_file/path": "", +"slice_32/start_frame": 0, +"slice_33/end_frame": 0, +"slice_33/loop_mode": 0, +"slice_33/name": "", +"slice_33/save_to_file/enabled": false, +"slice_33/save_to_file/fallback_path": "", +"slice_33/save_to_file/keep_custom_tracks": false, +"slice_33/save_to_file/path": "", +"slice_33/start_frame": 0, +"slice_34/end_frame": 0, +"slice_34/loop_mode": 0, +"slice_34/name": "", +"slice_34/save_to_file/enabled": false, +"slice_34/save_to_file/fallback_path": "", +"slice_34/save_to_file/keep_custom_tracks": false, +"slice_34/save_to_file/path": "", +"slice_34/start_frame": 0, +"slice_35/end_frame": 0, +"slice_35/loop_mode": 0, +"slice_35/name": "", +"slice_35/save_to_file/enabled": false, +"slice_35/save_to_file/fallback_path": "", +"slice_35/save_to_file/keep_custom_tracks": false, +"slice_35/save_to_file/path": "", +"slice_35/start_frame": 0, +"slice_36/end_frame": 0, +"slice_36/loop_mode": 0, +"slice_36/name": "", +"slice_36/save_to_file/enabled": false, +"slice_36/save_to_file/fallback_path": "", +"slice_36/save_to_file/keep_custom_tracks": false, +"slice_36/save_to_file/path": "", +"slice_36/start_frame": 0, +"slice_37/end_frame": 0, +"slice_37/loop_mode": 0, +"slice_37/name": "", +"slice_37/save_to_file/enabled": false, +"slice_37/save_to_file/fallback_path": "", +"slice_37/save_to_file/keep_custom_tracks": false, +"slice_37/save_to_file/path": "", +"slice_37/start_frame": 0, +"slice_38/end_frame": 0, +"slice_38/loop_mode": 0, +"slice_38/name": "", +"slice_38/save_to_file/enabled": false, +"slice_38/save_to_file/fallback_path": "", +"slice_38/save_to_file/keep_custom_tracks": false, +"slice_38/save_to_file/path": "", +"slice_38/start_frame": 0, +"slice_39/end_frame": 0, +"slice_39/loop_mode": 0, +"slice_39/name": "", +"slice_39/save_to_file/enabled": false, +"slice_39/save_to_file/fallback_path": "", +"slice_39/save_to_file/keep_custom_tracks": false, +"slice_39/save_to_file/path": "", +"slice_39/start_frame": 0, +"slice_4/end_frame": 0, +"slice_4/loop_mode": 0, +"slice_4/name": "", +"slice_4/save_to_file/enabled": false, +"slice_4/save_to_file/fallback_path": "", +"slice_4/save_to_file/keep_custom_tracks": false, +"slice_4/save_to_file/path": "", +"slice_4/start_frame": 0, +"slice_40/end_frame": 0, +"slice_40/loop_mode": 0, +"slice_40/name": "", +"slice_40/save_to_file/enabled": false, +"slice_40/save_to_file/fallback_path": "", +"slice_40/save_to_file/keep_custom_tracks": false, +"slice_40/save_to_file/path": "", +"slice_40/start_frame": 0, +"slice_41/end_frame": 0, +"slice_41/loop_mode": 0, +"slice_41/name": "", +"slice_41/save_to_file/enabled": false, +"slice_41/save_to_file/fallback_path": "", +"slice_41/save_to_file/keep_custom_tracks": false, +"slice_41/save_to_file/path": "", +"slice_41/start_frame": 0, +"slice_42/end_frame": 0, +"slice_42/loop_mode": 0, +"slice_42/name": "", +"slice_42/save_to_file/enabled": false, +"slice_42/save_to_file/fallback_path": "", +"slice_42/save_to_file/keep_custom_tracks": false, +"slice_42/save_to_file/path": "", +"slice_42/start_frame": 0, +"slice_43/end_frame": 0, +"slice_43/loop_mode": 0, +"slice_43/name": "", +"slice_43/save_to_file/enabled": false, +"slice_43/save_to_file/fallback_path": "", +"slice_43/save_to_file/keep_custom_tracks": false, +"slice_43/save_to_file/path": "", +"slice_43/start_frame": 0, +"slice_44/end_frame": 0, +"slice_44/loop_mode": 0, +"slice_44/name": "", +"slice_44/save_to_file/enabled": false, +"slice_44/save_to_file/fallback_path": "", +"slice_44/save_to_file/keep_custom_tracks": false, +"slice_44/save_to_file/path": "", +"slice_44/start_frame": 0, +"slice_45/end_frame": 0, +"slice_45/loop_mode": 0, +"slice_45/name": "", +"slice_45/save_to_file/enabled": false, +"slice_45/save_to_file/fallback_path": "", +"slice_45/save_to_file/keep_custom_tracks": false, +"slice_45/save_to_file/path": "", +"slice_45/start_frame": 0, +"slice_46/end_frame": 0, +"slice_46/loop_mode": 0, +"slice_46/name": "", +"slice_46/save_to_file/enabled": false, +"slice_46/save_to_file/fallback_path": "", +"slice_46/save_to_file/keep_custom_tracks": false, +"slice_46/save_to_file/path": "", +"slice_46/start_frame": 0, +"slice_47/end_frame": 0, +"slice_47/loop_mode": 0, +"slice_47/name": "", +"slice_47/save_to_file/enabled": false, +"slice_47/save_to_file/fallback_path": "", +"slice_47/save_to_file/keep_custom_tracks": false, +"slice_47/save_to_file/path": "", +"slice_47/start_frame": 0, +"slice_48/end_frame": 0, +"slice_48/loop_mode": 0, +"slice_48/name": "", +"slice_48/save_to_file/enabled": false, +"slice_48/save_to_file/fallback_path": "", +"slice_48/save_to_file/keep_custom_tracks": false, +"slice_48/save_to_file/path": "", +"slice_48/start_frame": 0, +"slice_49/end_frame": 0, +"slice_49/loop_mode": 0, +"slice_49/name": "", +"slice_49/save_to_file/enabled": false, +"slice_49/save_to_file/fallback_path": "", +"slice_49/save_to_file/keep_custom_tracks": false, +"slice_49/save_to_file/path": "", +"slice_49/start_frame": 0, +"slice_5/end_frame": 0, +"slice_5/loop_mode": 0, +"slice_5/name": "", +"slice_5/save_to_file/enabled": false, +"slice_5/save_to_file/fallback_path": "", +"slice_5/save_to_file/keep_custom_tracks": false, +"slice_5/save_to_file/path": "", +"slice_5/start_frame": 0, +"slice_50/end_frame": 0, +"slice_50/loop_mode": 0, +"slice_50/name": "", +"slice_50/save_to_file/enabled": false, +"slice_50/save_to_file/fallback_path": "", +"slice_50/save_to_file/keep_custom_tracks": false, +"slice_50/save_to_file/path": "", +"slice_50/start_frame": 0, +"slice_51/end_frame": 0, +"slice_51/loop_mode": 0, +"slice_51/name": "", +"slice_51/save_to_file/enabled": false, +"slice_51/save_to_file/fallback_path": "", +"slice_51/save_to_file/keep_custom_tracks": false, +"slice_51/save_to_file/path": "", +"slice_51/start_frame": 0, +"slice_52/end_frame": 0, +"slice_52/loop_mode": 0, +"slice_52/name": "", +"slice_52/save_to_file/enabled": false, +"slice_52/save_to_file/fallback_path": "", +"slice_52/save_to_file/keep_custom_tracks": false, +"slice_52/save_to_file/path": "", +"slice_52/start_frame": 0, +"slice_53/end_frame": 0, +"slice_53/loop_mode": 0, +"slice_53/name": "", +"slice_53/save_to_file/enabled": false, +"slice_53/save_to_file/fallback_path": "", +"slice_53/save_to_file/keep_custom_tracks": false, +"slice_53/save_to_file/path": "", +"slice_53/start_frame": 0, +"slice_54/end_frame": 0, +"slice_54/loop_mode": 0, +"slice_54/name": "", +"slice_54/save_to_file/enabled": false, +"slice_54/save_to_file/fallback_path": "", +"slice_54/save_to_file/keep_custom_tracks": false, +"slice_54/save_to_file/path": "", +"slice_54/start_frame": 0, +"slice_55/end_frame": 0, +"slice_55/loop_mode": 0, +"slice_55/name": "", +"slice_55/save_to_file/enabled": false, +"slice_55/save_to_file/fallback_path": "", +"slice_55/save_to_file/keep_custom_tracks": false, +"slice_55/save_to_file/path": "", +"slice_55/start_frame": 0, +"slice_56/end_frame": 0, +"slice_56/loop_mode": 0, +"slice_56/name": "", +"slice_56/save_to_file/enabled": false, +"slice_56/save_to_file/fallback_path": "", +"slice_56/save_to_file/keep_custom_tracks": false, +"slice_56/save_to_file/path": "", +"slice_56/start_frame": 0, +"slice_57/end_frame": 0, +"slice_57/loop_mode": 0, +"slice_57/name": "", +"slice_57/save_to_file/enabled": false, +"slice_57/save_to_file/fallback_path": "", +"slice_57/save_to_file/keep_custom_tracks": false, +"slice_57/save_to_file/path": "", +"slice_57/start_frame": 0, +"slice_58/end_frame": 0, +"slice_58/loop_mode": 0, +"slice_58/name": "", +"slice_58/save_to_file/enabled": false, +"slice_58/save_to_file/fallback_path": "", +"slice_58/save_to_file/keep_custom_tracks": false, +"slice_58/save_to_file/path": "", +"slice_58/start_frame": 0, +"slice_59/end_frame": 0, +"slice_59/loop_mode": 0, +"slice_59/name": "", +"slice_59/save_to_file/enabled": false, +"slice_59/save_to_file/fallback_path": "", +"slice_59/save_to_file/keep_custom_tracks": false, +"slice_59/save_to_file/path": "", +"slice_59/start_frame": 0, +"slice_6/end_frame": 0, +"slice_6/loop_mode": 0, +"slice_6/name": "", +"slice_6/save_to_file/enabled": false, +"slice_6/save_to_file/fallback_path": "", +"slice_6/save_to_file/keep_custom_tracks": false, +"slice_6/save_to_file/path": "", +"slice_6/start_frame": 0, +"slice_60/end_frame": 0, +"slice_60/loop_mode": 0, +"slice_60/name": "", +"slice_60/save_to_file/enabled": false, +"slice_60/save_to_file/fallback_path": "", +"slice_60/save_to_file/keep_custom_tracks": false, +"slice_60/save_to_file/path": "", +"slice_60/start_frame": 0, +"slice_61/end_frame": 0, +"slice_61/loop_mode": 0, +"slice_61/name": "", +"slice_61/save_to_file/enabled": false, +"slice_61/save_to_file/fallback_path": "", +"slice_61/save_to_file/keep_custom_tracks": false, +"slice_61/save_to_file/path": "", +"slice_61/start_frame": 0, +"slice_62/end_frame": 0, +"slice_62/loop_mode": 0, +"slice_62/name": "", +"slice_62/save_to_file/enabled": false, +"slice_62/save_to_file/fallback_path": "", +"slice_62/save_to_file/keep_custom_tracks": false, +"slice_62/save_to_file/path": "", +"slice_62/start_frame": 0, +"slice_63/end_frame": 0, +"slice_63/loop_mode": 0, +"slice_63/name": "", +"slice_63/save_to_file/enabled": false, +"slice_63/save_to_file/fallback_path": "", +"slice_63/save_to_file/keep_custom_tracks": false, +"slice_63/save_to_file/path": "", +"slice_63/start_frame": 0, +"slice_64/end_frame": 0, +"slice_64/loop_mode": 0, +"slice_64/name": "", +"slice_64/save_to_file/enabled": false, +"slice_64/save_to_file/fallback_path": "", +"slice_64/save_to_file/keep_custom_tracks": false, +"slice_64/save_to_file/path": "", +"slice_64/start_frame": 0, +"slice_65/end_frame": 0, +"slice_65/loop_mode": 0, +"slice_65/name": "", +"slice_65/save_to_file/enabled": false, +"slice_65/save_to_file/fallback_path": "", +"slice_65/save_to_file/keep_custom_tracks": false, +"slice_65/save_to_file/path": "", +"slice_65/start_frame": 0, +"slice_66/end_frame": 0, +"slice_66/loop_mode": 0, +"slice_66/name": "", +"slice_66/save_to_file/enabled": false, +"slice_66/save_to_file/fallback_path": "", +"slice_66/save_to_file/keep_custom_tracks": false, +"slice_66/save_to_file/path": "", +"slice_66/start_frame": 0, +"slice_67/end_frame": 0, +"slice_67/loop_mode": 0, +"slice_67/name": "", +"slice_67/save_to_file/enabled": false, +"slice_67/save_to_file/fallback_path": "", +"slice_67/save_to_file/keep_custom_tracks": false, +"slice_67/save_to_file/path": "", +"slice_67/start_frame": 0, +"slice_68/end_frame": 0, +"slice_68/loop_mode": 0, +"slice_68/name": "", +"slice_68/save_to_file/enabled": false, +"slice_68/save_to_file/fallback_path": "", +"slice_68/save_to_file/keep_custom_tracks": false, +"slice_68/save_to_file/path": "", +"slice_68/start_frame": 0, +"slice_69/end_frame": 0, +"slice_69/loop_mode": 0, +"slice_69/name": "", +"slice_69/save_to_file/enabled": false, +"slice_69/save_to_file/fallback_path": "", +"slice_69/save_to_file/keep_custom_tracks": false, +"slice_69/save_to_file/path": "", +"slice_69/start_frame": 0, +"slice_7/end_frame": 0, +"slice_7/loop_mode": 0, +"slice_7/name": "", +"slice_7/save_to_file/enabled": false, +"slice_7/save_to_file/fallback_path": "", +"slice_7/save_to_file/keep_custom_tracks": false, +"slice_7/save_to_file/path": "", +"slice_7/start_frame": 0, +"slice_70/end_frame": 0, +"slice_70/loop_mode": 0, +"slice_70/name": "", +"slice_70/save_to_file/enabled": false, +"slice_70/save_to_file/fallback_path": "", +"slice_70/save_to_file/keep_custom_tracks": false, +"slice_70/save_to_file/path": "", +"slice_70/start_frame": 0, +"slice_71/end_frame": 0, +"slice_71/loop_mode": 0, +"slice_71/name": "", +"slice_71/save_to_file/enabled": false, +"slice_71/save_to_file/fallback_path": "", +"slice_71/save_to_file/keep_custom_tracks": false, +"slice_71/save_to_file/path": "", +"slice_71/start_frame": 0, +"slice_72/end_frame": 0, +"slice_72/loop_mode": 0, +"slice_72/name": "", +"slice_72/save_to_file/enabled": false, +"slice_72/save_to_file/fallback_path": "", +"slice_72/save_to_file/keep_custom_tracks": false, +"slice_72/save_to_file/path": "", +"slice_72/start_frame": 0, +"slice_73/end_frame": 0, +"slice_73/loop_mode": 0, +"slice_73/name": "", +"slice_73/save_to_file/enabled": false, +"slice_73/save_to_file/fallback_path": "", +"slice_73/save_to_file/keep_custom_tracks": false, +"slice_73/save_to_file/path": "", +"slice_73/start_frame": 0, +"slice_74/end_frame": 0, +"slice_74/loop_mode": 0, +"slice_74/name": "", +"slice_74/save_to_file/enabled": false, +"slice_74/save_to_file/fallback_path": "", +"slice_74/save_to_file/keep_custom_tracks": false, +"slice_74/save_to_file/path": "", +"slice_74/start_frame": 0, +"slice_75/end_frame": 0, +"slice_75/loop_mode": 0, +"slice_75/name": "", +"slice_75/save_to_file/enabled": false, +"slice_75/save_to_file/fallback_path": "", +"slice_75/save_to_file/keep_custom_tracks": false, +"slice_75/save_to_file/path": "", +"slice_75/start_frame": 0, +"slice_76/end_frame": 0, +"slice_76/loop_mode": 0, +"slice_76/name": "", +"slice_76/save_to_file/enabled": false, +"slice_76/save_to_file/fallback_path": "", +"slice_76/save_to_file/keep_custom_tracks": false, +"slice_76/save_to_file/path": "", +"slice_76/start_frame": 0, +"slice_77/end_frame": 0, +"slice_77/loop_mode": 0, +"slice_77/name": "", +"slice_77/save_to_file/enabled": false, +"slice_77/save_to_file/fallback_path": "", +"slice_77/save_to_file/keep_custom_tracks": false, +"slice_77/save_to_file/path": "", +"slice_77/start_frame": 0, +"slice_78/end_frame": 0, +"slice_78/loop_mode": 0, +"slice_78/name": "", +"slice_78/save_to_file/enabled": false, +"slice_78/save_to_file/fallback_path": "", +"slice_78/save_to_file/keep_custom_tracks": false, +"slice_78/save_to_file/path": "", +"slice_78/start_frame": 0, +"slice_79/end_frame": 0, +"slice_79/loop_mode": 0, +"slice_79/name": "", +"slice_79/save_to_file/enabled": false, +"slice_79/save_to_file/fallback_path": "", +"slice_79/save_to_file/keep_custom_tracks": false, +"slice_79/save_to_file/path": "", +"slice_79/start_frame": 0, +"slice_8/end_frame": 0, +"slice_8/loop_mode": 0, +"slice_8/name": "", +"slice_8/save_to_file/enabled": false, +"slice_8/save_to_file/fallback_path": "", +"slice_8/save_to_file/keep_custom_tracks": false, +"slice_8/save_to_file/path": "", +"slice_8/start_frame": 0, +"slice_80/end_frame": 0, +"slice_80/loop_mode": 0, +"slice_80/name": "", +"slice_80/save_to_file/enabled": false, +"slice_80/save_to_file/fallback_path": "", +"slice_80/save_to_file/keep_custom_tracks": false, +"slice_80/save_to_file/path": "", +"slice_80/start_frame": 0, +"slice_81/end_frame": 0, +"slice_81/loop_mode": 0, +"slice_81/name": "", +"slice_81/save_to_file/enabled": false, +"slice_81/save_to_file/fallback_path": "", +"slice_81/save_to_file/keep_custom_tracks": false, +"slice_81/save_to_file/path": "", +"slice_81/start_frame": 0, +"slice_82/end_frame": 0, +"slice_82/loop_mode": 0, +"slice_82/name": "", +"slice_82/save_to_file/enabled": false, +"slice_82/save_to_file/fallback_path": "", +"slice_82/save_to_file/keep_custom_tracks": false, +"slice_82/save_to_file/path": "", +"slice_82/start_frame": 0, +"slice_83/end_frame": 0, +"slice_83/loop_mode": 0, +"slice_83/name": "", +"slice_83/save_to_file/enabled": false, +"slice_83/save_to_file/fallback_path": "", +"slice_83/save_to_file/keep_custom_tracks": false, +"slice_83/save_to_file/path": "", +"slice_83/start_frame": 0, +"slice_84/end_frame": 0, +"slice_84/loop_mode": 0, +"slice_84/name": "", +"slice_84/save_to_file/enabled": false, +"slice_84/save_to_file/fallback_path": "", +"slice_84/save_to_file/keep_custom_tracks": false, +"slice_84/save_to_file/path": "", +"slice_84/start_frame": 0, +"slice_85/end_frame": 0, +"slice_85/loop_mode": 0, +"slice_85/name": "", +"slice_85/save_to_file/enabled": false, +"slice_85/save_to_file/fallback_path": "", +"slice_85/save_to_file/keep_custom_tracks": false, +"slice_85/save_to_file/path": "", +"slice_85/start_frame": 0, +"slice_86/end_frame": 0, +"slice_86/loop_mode": 0, +"slice_86/name": "", +"slice_86/save_to_file/enabled": false, +"slice_86/save_to_file/fallback_path": "", +"slice_86/save_to_file/keep_custom_tracks": false, +"slice_86/save_to_file/path": "", +"slice_86/start_frame": 0, +"slice_87/end_frame": 0, +"slice_87/loop_mode": 0, +"slice_87/name": "", +"slice_87/save_to_file/enabled": false, +"slice_87/save_to_file/fallback_path": "", +"slice_87/save_to_file/keep_custom_tracks": false, +"slice_87/save_to_file/path": "", +"slice_87/start_frame": 0, +"slice_88/end_frame": 0, +"slice_88/loop_mode": 0, +"slice_88/name": "", +"slice_88/save_to_file/enabled": false, +"slice_88/save_to_file/fallback_path": "", +"slice_88/save_to_file/keep_custom_tracks": false, +"slice_88/save_to_file/path": "", +"slice_88/start_frame": 0, +"slice_89/end_frame": 0, +"slice_89/loop_mode": 0, +"slice_89/name": "", +"slice_89/save_to_file/enabled": false, +"slice_89/save_to_file/fallback_path": "", +"slice_89/save_to_file/keep_custom_tracks": false, +"slice_89/save_to_file/path": "", +"slice_89/start_frame": 0, +"slice_9/end_frame": 0, +"slice_9/loop_mode": 0, +"slice_9/name": "", +"slice_9/save_to_file/enabled": false, +"slice_9/save_to_file/fallback_path": "", +"slice_9/save_to_file/keep_custom_tracks": false, +"slice_9/save_to_file/path": "", +"slice_9/start_frame": 0, +"slice_90/end_frame": 0, +"slice_90/loop_mode": 0, +"slice_90/name": "", +"slice_90/save_to_file/enabled": false, +"slice_90/save_to_file/fallback_path": "", +"slice_90/save_to_file/keep_custom_tracks": false, +"slice_90/save_to_file/path": "", +"slice_90/start_frame": 0, +"slice_91/end_frame": 0, +"slice_91/loop_mode": 0, +"slice_91/name": "", +"slice_91/save_to_file/enabled": false, +"slice_91/save_to_file/fallback_path": "", +"slice_91/save_to_file/keep_custom_tracks": false, +"slice_91/save_to_file/path": "", +"slice_91/start_frame": 0, +"slice_92/end_frame": 0, +"slice_92/loop_mode": 0, +"slice_92/name": "", +"slice_92/save_to_file/enabled": false, +"slice_92/save_to_file/fallback_path": "", +"slice_92/save_to_file/keep_custom_tracks": false, +"slice_92/save_to_file/path": "", +"slice_92/start_frame": 0, +"slice_93/end_frame": 0, +"slice_93/loop_mode": 0, +"slice_93/name": "", +"slice_93/save_to_file/enabled": false, +"slice_93/save_to_file/fallback_path": "", +"slice_93/save_to_file/keep_custom_tracks": false, +"slice_93/save_to_file/path": "", +"slice_93/start_frame": 0, +"slice_94/end_frame": 0, +"slice_94/loop_mode": 0, +"slice_94/name": "", +"slice_94/save_to_file/enabled": false, +"slice_94/save_to_file/fallback_path": "", +"slice_94/save_to_file/keep_custom_tracks": false, +"slice_94/save_to_file/path": "", +"slice_94/start_frame": 0, +"slice_95/end_frame": 0, +"slice_95/loop_mode": 0, +"slice_95/name": "", +"slice_95/save_to_file/enabled": false, +"slice_95/save_to_file/fallback_path": "", +"slice_95/save_to_file/keep_custom_tracks": false, +"slice_95/save_to_file/path": "", +"slice_95/start_frame": 0, +"slice_96/end_frame": 0, +"slice_96/loop_mode": 0, +"slice_96/name": "", +"slice_96/save_to_file/enabled": false, +"slice_96/save_to_file/fallback_path": "", +"slice_96/save_to_file/keep_custom_tracks": false, +"slice_96/save_to_file/path": "", +"slice_96/start_frame": 0, +"slice_97/end_frame": 0, +"slice_97/loop_mode": 0, +"slice_97/name": "", +"slice_97/save_to_file/enabled": false, +"slice_97/save_to_file/fallback_path": "", +"slice_97/save_to_file/keep_custom_tracks": false, +"slice_97/save_to_file/path": "", +"slice_97/start_frame": 0, +"slice_98/end_frame": 0, +"slice_98/loop_mode": 0, +"slice_98/name": "", +"slice_98/save_to_file/enabled": false, +"slice_98/save_to_file/fallback_path": "", +"slice_98/save_to_file/keep_custom_tracks": false, +"slice_98/save_to_file/path": "", +"slice_98/start_frame": 0, +"slice_99/end_frame": 0, +"slice_99/loop_mode": 0, +"slice_99/name": "", +"slice_99/save_to_file/enabled": false, +"slice_99/save_to_file/fallback_path": "", +"slice_99/save_to_file/keep_custom_tracks": false, +"slice_99/save_to_file/path": "", +"slice_99/start_frame": 0, +"slices/amount": 0 +} +}, +"materials": { +"Material": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/materials/default3d.tres", +"use_external/path": "uid://41afldgohk0o" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/entities/alien/assets/3d/alien.blend1 b/entities/alien/assets/3d/alien.blend1 new file mode 100644 index 0000000..7bdac7f Binary files /dev/null and b/entities/alien/assets/3d/alien.blend1 differ diff --git a/entities/alien/assets/3d/alien_part.blend b/entities/alien/assets/3d/alien_part.blend new file mode 100644 index 0000000..71d6f88 Binary files /dev/null and b/entities/alien/assets/3d/alien_part.blend differ diff --git a/entities/alien/assets/3d/alien_part.blend.import b/entities/alien/assets/3d/alien_part.blend.import new file mode 100644 index 0000000..181baeb --- /dev/null +++ b/entities/alien/assets/3d/alien_part.blend.import @@ -0,0 +1,75 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cyjynungpt2a6" +path="res://.godot/imported/alien_part.blend-3b5a9ff739e267fe3e3ee37a08e055a3.scn" + +[deps] + +source_file="res://entities/alien/assets/3d/alien_part.blend" +dest_files=["res://.godot/imported/alien_part.blend-3b5a9ff739e267fe3e3ee37a08e055a3.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"meshes": { +"alien_part_Plane_002": { +"generate/lightmap_uv": 0, +"generate/lods": 0, +"generate/shadow_meshes": 0, +"lods/normal_merge_angle": 20.0, +"save_to_file/enabled": true, +"save_to_file/fallback_path": "res://entities/alien/assets/3d/alien_part.tres", +"save_to_file/path": "uid://dbxb76bsurcoy" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/entities/alien/assets/3d/alien_part.blend1 b/entities/alien/assets/3d/alien_part.blend1 new file mode 100644 index 0000000..d952bc3 Binary files /dev/null and b/entities/alien/assets/3d/alien_part.blend1 differ diff --git a/entities/alien/assets/3d/alien_part.tres b/entities/alien/assets/3d/alien_part.tres new file mode 100644 index 0000000..43a05af --- /dev/null +++ b/entities/alien/assets/3d/alien_part.tres @@ -0,0 +1,37 @@ +[gd_resource type="ArrayMesh" format=4 uid="uid://667gyf6p35nw"] + +[ext_resource type="Material" uid="uid://41afldgohk0o" path="res://common/materials/default3d.tres" id="1_ndtte"] + +[sub_resource type="ArrayMesh" id="ArrayMesh_ndtte"] +_surfaces = [{ +"aabb": AABB(-0.875597, -0.4483304, -0.68256557, 1.751194, 1.2514424, 1.2417288), +"format": 34359742465, +"index_count": 102, +"index_data": PackedByteArray("CQABAAIAAwABAAkAAAADAAkAAAAEAAMACQAMAAAAAAAFAAQADAAFAAAACgAMAAkAAgAKAAkABQAMAA0ACgANAAwACgAOAA0ABQANAA4AAgAPAAoAEAAOAAoAEAAKAA8ABQAOABAAAgARAA8AEAAPABEABQAQABIAEAARABIAEQATABIAFAASABMAEQAUABMAFAAFABIAAgAGABEAEQAGABQABgACAAcACAAGAAcABgALABQACwAGAAgABQAUAAsACwAIAAQABQALAAQA"), +"lods": [0.7015672, PackedByteArray("CQABAAIAAwABAAkAAAADAAkAAAAEAAMAAgAKAAkACgAAAAkACgACAAYABgACAAcACgAFAAAACgAGAAUAAAAFAAQACAAGAAcABgALAAUACwAGAAgABQALAAQACwAIAAQA"), 1.0523508, PackedByteArray("AAABAAIAAwABAAAAAAAEAAMAAgAFAAAAAAAFAAQAAgAGAAUABQAGAAQABgACAAcABgAIAAQACAAGAAcA")], +"name": "Material", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 21, +"vertex_data": PackedByteArray("ISdgPwiTGr5SJQ8/2gkwu8CYTT/gi28+sCxlsxiS6j7A4Qc9WD6TuiCyRz5Agb0+eNEDMyj6Ir78ywo/8AUBM/xJ5b6uUCq/yAYav7B/QD78Mbg+vgkwO8CYTT/Yi28+fD2TOiCyRz5Agb0+xwYaP8B/QD4AMrg+SncBP4DqSTxQA5a+ICdgvwiTGr5SJQ8/tQk6P8iij7748Gs+tQk6P9TYvr4Au3C+dmqQPoiL5b5mRyq/YCOHsjjmwD44ErK+wPeaMfAN9b2evC6/S3cBv4DqSTxQA5a+dGqQvpCL5b52Ryq/tQk6v9jYvr4gu3C+tQk6v8iij7748Gs+") +}] +blend_shape_mode = 0 + +[resource] +resource_name = "alien_part_Plane_002" +_surfaces = [{ +"aabb": AABB(-0.875597, -0.4483304, -0.68256557, 1.751194, 1.2514424, 1.2417288), +"attribute_data": PackedByteArray("qFa/PjyPYT+oVr8+bMeHPqhWvz6Sn88+qFa/PsO5YD+oVr8+VoVhP6hWvz5MFyM/qFa/PmzHhz5C8Lg+VCp8P0LwuD6uI3w/QvC4PsEEUj9C8Lg+YD4SP0LwuD4MM1I/QvC4PsEEUj9C8Lg+YD4SP6hWvz5MFyM/qFa/PkWOIz+oVr8+PI9hP0LwuD4MM1I/QvC4PlQqfD+oVr8+RY4jP6hWvz4uv9E+qFa/PsuPYT+oVr8+y49hP6hWvz7gzmA/qFa/PhzSLD+oVr8+4M5gP6hWvz7Lj2E/qFa/PsuPYT8="), +"format": 34359742487, +"index_count": 102, +"index_data": PackedByteArray("DgABAAIABQACAAYAAgAPAA4AAgAFABMAAgAUAA8AAgATABQAEwAFABUABQAQABUAEwAVABYAAwAVABAAAwAQAAQAFQAXABYAEwAWABcAFQADABcAGAAUABMAGAATABcAGAAPABQAAwAYABcAGAAZAA8AAwAZABgADwAZABoAAwAaABkAAAADAAQADwAaABsAAwAbABoAGwADAAAADwAbAA4ADgAbAAAABwAJABEACQAKABEABwAIAAkAEgAMAAgAEgALAAwADAALAA0A"), +"lods": [0.7015672, PackedByteArray("DgABAAIAAgAPAA4ADwAAAA4ADwACAAUABQACAAYADwADAAAADwAFAAMAAAADAAQABQAQAAMAAwAQAAQABwAJABEACQAKABEABwAIAAkAEgAMAAgAEgALAAwADAALAA0A"), 1.0523508, PackedByteArray("AAABAAIAAgADAAAAAAADAAQAAwAFAAQAAgAFAAMABQACAAYABwAIAAkACQAKAAcACwAMAAgADAALAA0A")], +"material": ExtResource("1_ndtte"), +"name": "Material", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 28, +"vertex_data": PackedByteArray("ISdgPwiTGr5SJQ8/2gkwu8CYTT/gi28+sCxlsxiS6j7A4Qc98AUBM/xJ5b6uUCq/eNEDMyj6Ir78ywo/yAYav7B/QD78Mbg+vgkwO8CYTT/Yi28+ISdgPwiTGr5SJQ8/eNEDMyj6Ir78ywo/WD6TuiCyRz5Agb0+2gkwu8CYTT/gi28+yAYav7B/QD78Mbg+fD2TOiCyRz5Agb0+vgkwO8CYTT/Yi28+xwYaP8B/QD4AMrg+SncBP4DqSTxQA5a+ICdgvwiTGr5SJQ8/xwYaP8B/QD4AMrg+ICdgvwiTGr5SJQ8/S3cBv4DqSTxQA5a+YCOHsjjmwD44ErK+tQk6v8iij7748Gs+tQk6v9jYvr4gu3C+dGqQvpCL5b52Ryq/wPeaMfAN9b2evC6/dmqQPoiL5b5mRyq/tQk6P9TYvr4Au3C+tQk6P8iij7748Gs+gMYlbv///z8Gvsu9////P4G2//////+/YbYAAP///7//f0FY////PwJSkLb///8/+EHLvf///z+AxiVu////P/9/QVj///8/wIBjov///z8Gvsu9////PwJSkLb///8/Pn9jov///z/4Qcu9////P/ytkLb///8/hth3zP///79+OSVu////P/ytkLb///8/fjklbv///z94J3fM////v6i0//////+/SyvGTf///79lK7xC////v6AuBx3///+/MNv//////79e0Qcd////v5nUvEL///+/s9TGTf///78=") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_ndtte") diff --git a/entities/alien/assets/material/alien_attacking_vat.tres b/entities/alien/assets/material/alien_attacking_vat.tres new file mode 100644 index 0000000..25ffe82 --- /dev/null +++ b/entities/alien/assets/material/alien_attacking_vat.tres @@ -0,0 +1,29 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://b48t0vv053qrt"] + +[ext_resource type="Shader" uid="uid://gjx57s1ye44t" path="res://entities/alien/assets/shader/vat.gdshader" id="1_nk817"] +[ext_resource type="Texture2D" uid="uid://cmyt23s5n76ak" path="res://entities/alien/assets/textures/alien_base_color.png" id="2_a2hb3"] +[ext_resource type="Texture2D" uid="uid://4peb6wokfoyu" path="res://entities/alien/assets/textures/alien_normal.png" id="3_7iaoq"] +[ext_resource type="Texture2D" uid="uid://cbjj8cusm385o" path="res://entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr" id="4_nk817"] + +[resource] +render_priority = 0 +shader = ExtResource("1_nk817") +shader_parameter/vertex_animation_texture = ExtResource("4_nk817") +shader_parameter/min_bounds = Vector3(-0.2, -0.8, -0.4) +shader_parameter/max_bounds = Vector3(1, 2.2, 4.9) +shader_parameter/autoplay = true +shader_parameter/autoplay_speed = 30.0 +shader_parameter/frame = 12.0 +shader_parameter/use_uv_1 = false +shader_parameter/cull_mode = 0 +shader_parameter/albedo_map = ExtResource("2_a2hb3") +shader_parameter/albedo_tint = Color(1, 1, 1, 1) +shader_parameter/occlusion_channel = Color(1, 0, 0, 1) +shader_parameter/occlusion = 1.0 +shader_parameter/roughness_channel = Color(0, 1, 0, 1) +shader_parameter/roughness = 1.0 +shader_parameter/metallic_channel = Color(0, 0, 1, 1) +shader_parameter/metallic = 1.0 +shader_parameter/specular = 0.5 +shader_parameter/normal_map = ExtResource("3_7iaoq") +shader_parameter/normal_map_scale = 1.0 diff --git a/entities/alien/assets/material/alien_running_vat.tres b/entities/alien/assets/material/alien_running_vat.tres new file mode 100644 index 0000000..73b64e7 --- /dev/null +++ b/entities/alien/assets/material/alien_running_vat.tres @@ -0,0 +1,29 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://b7o0pgg1fweqq"] + +[ext_resource type="Shader" uid="uid://gjx57s1ye44t" path="res://entities/alien/assets/shader/vat.gdshader" id="1_ig0tm"] +[ext_resource type="Texture2D" uid="uid://cmyt23s5n76ak" path="res://entities/alien/assets/textures/alien_base_color.png" id="2_cxjnj"] +[ext_resource type="Texture2D" uid="uid://4peb6wokfoyu" path="res://entities/alien/assets/textures/alien_normal.png" id="3_1leus"] +[ext_resource type="Texture2D" uid="uid://cxy6bh1jymqsk" path="res://entities/alien/assets/vat/running_alien_vat/Alien_vat.exr" id="3_ig0tm"] + +[resource] +render_priority = 0 +shader = ExtResource("1_ig0tm") +shader_parameter/vertex_animation_texture = ExtResource("3_ig0tm") +shader_parameter/min_bounds = Vector3(-0.2, -2, -0.9) +shader_parameter/max_bounds = Vector3(0.1, 3.4, 1.1) +shader_parameter/autoplay = true +shader_parameter/autoplay_speed = 30.0 +shader_parameter/frame = 12.0 +shader_parameter/use_uv_1 = false +shader_parameter/cull_mode = 0 +shader_parameter/albedo_map = ExtResource("2_cxjnj") +shader_parameter/albedo_tint = Color(1, 1, 1, 1) +shader_parameter/occlusion_channel = Color(1, 0, 0, 1) +shader_parameter/occlusion = 1.0 +shader_parameter/roughness_channel = Color(0, 1, 0, 1) +shader_parameter/roughness = 1.0 +shader_parameter/metallic_channel = Color(0, 0, 1, 1) +shader_parameter/metallic = 1.0 +shader_parameter/specular = 0.5 +shader_parameter/normal_map = ExtResource("3_1leus") +shader_parameter/normal_map_scale = 1.0 diff --git a/entities/alien/assets/shader/vat.gdshader b/entities/alien/assets/shader/vat.gdshader new file mode 100644 index 0000000..bff23e4 --- /dev/null +++ b/entities/alien/assets/shader/vat.gdshader @@ -0,0 +1,169 @@ +// Shader stolen here : https://godotshaders.com/shader/vertex-animation-texture-uses-openvat-output/ +shader_type spatial; +render_mode cull_disabled; // Prevents GPU hardware culling so shader can handle it +/* +For use with models exported from Blender using the OpenVAT plugin. +Expects: +Vertex Normals - Packed (Math gets too complex to include a toggle. Making a separate shader recommended if normals are not needed.) +Use Single Row - On +Export Model - On +Model Format - glTF Binary. (Unsure why the otherse do not work) + +Ensure .exr file is set to Lossless compression and MipMaps - Off. +*/ + +// --- Uniforms --- +group_uniforms openVAT_inputs; +/** OpenVAT texture exported from Blender plugin. */ +uniform sampler2D vertex_animation_texture : repeat_disable; +/** Min values from the .json file included with OpenVAT exports. */ +uniform vec3 min_bounds; +/** Max values from the .json file included with OpenVAT exports. */ +uniform vec3 max_bounds; +/** Plays animation automatically. Turn off to control manually via keyframes. */ +uniform bool autoplay = true; +/** +Autoplay speed in frames per second. Defaults to 30. +[b]Blender default is 24. May require adjustment either in Blender or Here to match speed.[b] +*/ +uniform float autoplay_speed = 30.0; +/** Frame to display if animating manually. */ +uniform float frame = 1.0; + +/** Enable this if the asset does not have 2 UV sets. */ +uniform bool use_uv_1 = false; +/** Cull Mode, editable here for flexibility. +0: Backface Cull +1: Frontface Cull +2: Cull disabled (double sided rendering)*/ +uniform int cull_mode : hint_enum("Back:0", "Front:1", "Disabled:2") = 0; +group_uniforms; + +group_uniforms Albedo_map; +uniform sampler2D albedo_map : source_color, hint_default_white; +uniform vec4 albedo_tint : source_color = vec4(1.0); +group_uniforms; + +group_uniforms ORM_inputs; +/** +[b]ORM texture.[/b] Standardized detail maps for PBR materials. Ignore, remap, or remove as needed. +[b]O[/b]cclusion (Ambient) +[b]R[/b]oughness +[b]M[/b]etallic +*/ +uniform sampler2D orm_map : hint_default_white; +/** Select channel used by Occlusion map. R G [b]or[/b] B, combining will have strange results */ +uniform vec4 occlusion_channel : source_color = vec4(1.0, 0.0, 0.0, 1.0); +/** Strength of Occlusion*/ +uniform float occlusion : hint_range(0.0, 1.0) = 1.0; +/** Select channel used by Roughness map. R G [b]or[/b] B, combining will have strange results */ +uniform vec4 roughness_channel : source_color = vec4(0.0, 1.0, 0.0, 1.0); +/** Strength of Roughness*/ +uniform float roughness : hint_range(0.0, 1.0) = 1.0; +/** Select channel used by Metallic map. R G [b]or[/b] B, combining will have strange results */ +uniform vec4 metallic_channel : source_color = vec4(0.0, 0.0, 1.0, 1.0); +/** Strength of Metallic*/ +uniform float metallic : hint_range(0.0, 1.0) = 1.0; +/** Strength of Specular (No Map Included)*/ +uniform float specular : hint_range(0.0, 1.0) = 0.5; +group_uniforms; + +group_uniforms Normal_map; +uniform sampler2D normal_map : hint_roughness_normal; +uniform float normal_map_scale : hint_range(-10.0, 10.0) = 1.0; + +/** Passed data from INSTANCE_CUSTOM_VARIABLE : +x : Unique Id +y : Damage effect +z : Size +**/ + +varying flat float unique_id; +varying flat float damage_effect; +varying flat float size; + +float remapFloat(float value, float input_min, float input_max, float output_min, float output_max){ + // Code to replicate the remap feature from Visual Shader. + float _input_range = input_max - input_min; + float _output_range = output_max - output_min; + return output_min + _output_range * ((value - input_min) / _input_range); +} + +void vertex() { + unique_id = INSTANCE_CUSTOM.x; + damage_effect = INSTANCE_CUSTOM.y; + size = INSTANCE_CUSTOM.z; + + // Animation Timing + // ------ + // Divided by 2. since bottom half of texture is the normal data. + // Second argument (0) is MipMap level. These VATs use no mipmaps so always 0. + int total_frames = textureSize(vertex_animation_texture, 0).y / 2; + // Checks if Autoplaying is checked + float play_frame = autoplay ? (TIME * autoplay_speed / size) : frame; + + + // Loops the current frame counter so it stays between 0 and total_frames - 1 + float current_frame = mod(play_frame + unique_id, float(total_frames)); + + // Compute UV Coordinates + // ------ + // samples pixel from the center, not the edge. Avoid unwanted bleeding into normal data pixels at the end of the loop. + float center_pixel = current_frame - 0.5; + float vat_y = center_pixel / float(total_frames); + vat_y = clamp(vat_y * 0.5, 0.0, 0.5); + + vec2 vat_uv = vec2((use_uv_1 ? UV.x : UV2.x), vat_y); + + // Vertex Position Displacement + // ------ + vec4 vat_pos_raw = texture(vertex_animation_texture, vat_uv); + // Must go through some remapping to convert Blender to Godot coordinates + vec3 offset_values = vec3( + remapFloat(vat_pos_raw.r, 0.0, 1.0, min_bounds.x, max_bounds.x), + remapFloat(vat_pos_raw.b, 0.0, 1.0, min_bounds.z, max_bounds.z), + remapFloat(vat_pos_raw.g, 1.0, 0.0, min_bounds.y, max_bounds.y) + ); + VERTEX += offset_values; + + // Normals. 0.5 added to UV.y to shift it down by 1/2 the map - to the normals section. + vec4 vat_norm_raw = texture(vertex_animation_texture, vat_uv + vec2(0.0, 0.5)); + vec3 decoded_normals = vec3( + remapFloat(vat_norm_raw.r, 0.0, 1.0, -1.0, 1.0), + remapFloat(vat_norm_raw.b, 0.0, 1.0, -1.0, 1.0), + remapFloat(vat_norm_raw.g, 1.0, 0.0, -1.0, 1.0) + ); + NORMAL = normalize(decoded_normals); + + // Calculate Tangent and Binormal from computed Normal + TANGENT = normalize(vec3(abs(NORMAL.y) + abs(NORMAL.z), 0.0, -abs(NORMAL.x))); + BINORMAL = normalize(vec3(0.0, abs(NORMAL.x) + abs(NORMAL.z), -abs(NORMAL.y))); +} + +void fragment() { + // Cull Mode + if (cull_mode == 0 && !FRONT_FACING) { + discard; // Cull back faces + } + else if (cull_mode == 1 && FRONT_FACING) { + discard; // Cull front faces + } + + // Albedo + ALBEDO = texture(albedo_map, UV).rgb * albedo_tint.rgb; + + EMISSION = vec3(1.,1.,1.) * damage_effect; + + // ORM maps (Occlusion, Roughness, Metallic) Packing + vec4 orm_tex = texture(orm_map, UV); + AO = occlusion * dot(orm_tex.rgb, occlusion_channel.rgb); + ROUGHNESS = roughness * dot(orm_tex.rgb, roughness_channel.rgb); + METALLIC = metallic * dot(orm_tex.rgb, metallic_channel.rgb); + + // Specular + SPECULAR = specular; + + // Normal Map + NORMAL_MAP = texture(normal_map, UV).rgb; + NORMAL_MAP_DEPTH = normal_map_scale; +} \ No newline at end of file diff --git a/entities/alien/assets/shader/vat.gdshader.uid b/entities/alien/assets/shader/vat.gdshader.uid new file mode 100644 index 0000000..8f2e65c --- /dev/null +++ b/entities/alien/assets/shader/vat.gdshader.uid @@ -0,0 +1 @@ +uid://gjx57s1ye44t diff --git a/entities/alien/assets/textures/alien_base_color.png b/entities/alien/assets/textures/alien_base_color.png new file mode 100644 index 0000000..0ef53b6 Binary files /dev/null and b/entities/alien/assets/textures/alien_base_color.png differ diff --git a/entities/alien/assets/textures/alien_base_color.png.import b/entities/alien/assets/textures/alien_base_color.png.import new file mode 100644 index 0000000..8a0db93 --- /dev/null +++ b/entities/alien/assets/textures/alien_base_color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmyt23s5n76ak" +path.s3tc="res://.godot/imported/alien_base_color.png-86b98d00ab0dc2f32c9eec134715ed52.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://entities/alien/assets/textures/alien_base_color.png" +dest_files=["res://.godot/imported/alien_base_color.png-86b98d00ab0dc2f32c9eec134715ed52.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/entities/alien/assets/textures/alien_normal.png b/entities/alien/assets/textures/alien_normal.png new file mode 100644 index 0000000..42bd3e9 Binary files /dev/null and b/entities/alien/assets/textures/alien_normal.png differ diff --git a/entities/alien/assets/textures/alien_normal.png.import b/entities/alien/assets/textures/alien_normal.png.import new file mode 100644 index 0000000..bb7308d --- /dev/null +++ b/entities/alien/assets/textures/alien_normal.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4peb6wokfoyu" +path.s3tc="res://.godot/imported/alien_normal.png-1cf9a8467a6c91a4f9725d4eaacfcf3f.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://entities/alien/assets/textures/alien_normal.png" +dest_files=["res://.godot/imported/alien_normal.png-1cf9a8467a6c91a4f9725d4eaacfcf3f.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://entities/alien/assets/textures/alien_normal.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/entities/alien/assets/textures/stain.svg b/entities/alien/assets/textures/stain.svg new file mode 100644 index 0000000..ae710ec --- /dev/null +++ b/entities/alien/assets/textures/stain.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + diff --git a/entities/alien/assets/textures/stain.svg.import b/entities/alien/assets/textures/stain.svg.import new file mode 100644 index 0000000..8ed90ee --- /dev/null +++ b/entities/alien/assets/textures/stain.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ci1qyjgjvtpbj" +path.s3tc="res://.godot/imported/stain.svg-f2fdcdf42fafc92b5172e9a1b9c7292d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://entities/alien/assets/textures/stain.svg" +dest_files=["res://.godot/imported/stain.svg-f2fdcdf42fafc92b5172e9a1b9c7292d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/entities/alien/assets/vat/attacking_alien_vat/Alien-remap_info.json b/entities/alien/assets/vat/attacking_alien_vat/Alien-remap_info.json new file mode 100644 index 0000000..953bcf8 --- /dev/null +++ b/entities/alien/assets/vat/attacking_alien_vat/Alien-remap_info.json @@ -0,0 +1,16 @@ +{ + "os-remap": { + "Min": [ + -0.2, + -0.8, + -0.4 + ], + "Max": [ + 1.0, + 2.2, + 4.9 + ], + "Frames": 12 + }, + "animations": {} +} diff --git a/entities/alien/assets/vat/attacking_alien_vat/Alien.glb b/entities/alien/assets/vat/attacking_alien_vat/Alien.glb new file mode 100644 index 0000000..58c02e6 Binary files /dev/null and b/entities/alien/assets/vat/attacking_alien_vat/Alien.glb differ diff --git a/entities/alien/assets/vat/attacking_alien_vat/Alien.glb.import b/entities/alien/assets/vat/attacking_alien_vat/Alien.glb.import new file mode 100644 index 0000000..63d01c4 --- /dev/null +++ b/entities/alien/assets/vat/attacking_alien_vat/Alien.glb.import @@ -0,0 +1,63 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://blpvoauvdf700" +path="res://.godot/imported/Alien.glb-d7449a099f5202e69c28d18dd7bdda8c.scn" + +[deps] + +source_file="res://entities/alien/assets/vat/attacking_alien_vat/Alien.glb" +dest_files=["res://.godot/imported/Alien.glb-d7449a099f5202e69c28d18dd7bdda8c.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"@MATERIAL:0": { +"use_external/enabled": true, +"use_external/path": "uid://b48t0vv053qrt" +} +}, +"meshes": { +"Alien_Alien_mesh": { +"generate/lightmap_uv": 0, +"generate/lods": 0, +"generate/shadow_meshes": 0, +"lods/normal_merge_angle": 20.0, +"save_to_file/enabled": true, +"save_to_file/fallback_path": "res://entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres", +"save_to_file/path": "uid://dmkpueem7h3gg" +} +} +} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr b/entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr new file mode 100644 index 0000000..21a8014 Binary files /dev/null and b/entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr differ diff --git a/entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr.import b/entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr.import new file mode 100644 index 0000000..423a1b8 --- /dev/null +++ b/entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbjj8cusm385o" +path="res://.godot/imported/Alien_vat.exr-0e18ace1cc9af2d3f2eab97c0bf74649.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr" +dest_files=["res://.godot/imported/Alien_vat.exr-0e18ace1cc9af2d3f2eab97c0bf74649.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres b/entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres new file mode 100644 index 0000000..cc40abf --- /dev/null +++ b/entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres @@ -0,0 +1,35 @@ +[gd_resource type="ArrayMesh" format=4 uid="uid://chhggu10sxmuc"] + +[ext_resource type="Material" uid="uid://b48t0vv053qrt" path="res://entities/alien/assets/material/alien_attacking_vat.tres" id="1_py30f"] + +[sub_resource type="ArrayMesh" id="ArrayMesh_py30f"] +_surfaces = [{ +"aabb": AABB(-0.87564546, -0.052779794, -2.236081, 1.751194, 3.3099113, 4.496481), +"format": 34896613377, +"index_count": 2496, +"index_data": PackedByteArray("YgABAAIAAwABAGIAAAADAGIAAAAEAAMAYgBjAAAAAAAFAAQAYwAFAAAAZABjAGIAAgBkAGIABQBjAGUAZABlAGMAZABmAGUABQBlAGYAAgBnAGQAaABmAGQAaABkAGcABQBmAGgAAgBpAGcAaABnAGkABQBoAGoAaABpAGoAaQBrAGoAbABqAGsAaQBsAGsAbAAFAGoAAgBtAGkAaQBtAGwAbQACAAcACABtAAcAbQAGAGwABgBtAAgABQBsAAYABgAIAAQABQAGAAQAbgAKAAsADAAKAG4ACQAMAG4ACQANAAwAbgBvAAkACQAOAA0AbwAOAAkAcABvAG4ACwBwAG4ADgBvAHEAcABxAG8AcAByAHEADgBxAHIACwBzAHAAdAByAHAAdABwAHMADgByAHQACwB1AHMAdABzAHUADgB0AHYAdAB1AHYAdQB3AHYAeAB2AHcAdQB4AHcAeAAOAHYACwB5AHUAdQB5AHgAeQALABAAEQB5ABAAeQAPAHgADwB5ABEADgB4AA8ADwARAA0ADgAPAA0AegATABQAFQATAHoAEgAVAHoAEgAWABUAegB7ABIAEgAXABYAewAXABIAfAB7AHoAFAB8AHoAFwB7AH0AfAB9AHsAfAB+AH0AFwB9AH4AFAB/AHwAgAB+AHwAgAB8AH8AFwB+AIAAFACBAH8AgAB/AIEAFwCAAIIAgACBAIIAgQCDAIIAhACCAIMAgQCEAIMAhAAXAIIAFACFAIEAgQCFAIQAhQAUABkAGgCFABkAhQAYAIQAGACFABoAFwCEABgAGAAaABYAFwAYABYAhgAcAB0AHgAcAIYAGwAeAIYAGwAfAB4AhgCHABsAGwCIAB8AhwCIABsAiQCHAIYAHQCJAIYAiACHAIoAiQCKAIcAiQCLAIoAiACKAIsAHQCMAIkAjQCLAIkAjQCJAIwAiACLAI0AHQCOAIwAjQCMAI4AiACNACAAjQCOACAAjgCPACAAkAAgAI8AjgCQAI8AkACIACAAHQCRAI4AjgCRAJAAkQAdACIAIwCRACIAkQAhAJAAIQCRACMAiACQACEAIQAjAB8AiAAhAB8AkgCTAJQAlQCTAJIAlgCVAJIAlgCXAJUAkgCYAJYAlgCZAJcAmACZAJYAmgCYAJIAlACaAJIAmQCYAJsAmgCbAJgAmgCcAJsAmQCbAJwAlACdAJoAngCcAJoAngCaAJ0AmQCcAJ4AlACfAJ0AngCdAJ8AmQCeAKAAngCfAKAAnwChAKAAogCgAKEAnwCiAKEAogCZAKAAlACjAJ8AnwCjAKIAowCUAKQApQCjAKQAowCmAKIApgCjAKUAmQCiAKYApgClAJcAmQCmAJcApwCoAKkAqgCoAKcAqwCqAKcAqwCsAKoApwCtAKsAqwCuAKwArQCuAKsArwCtAKcAqQCvAKcArgCtALAArwCwAK0ArwCxALAArgCwALEAqQCyAK8AswCxAK8AswCvALIArgCxALMAqQC0ALIAswCyALQArgCzALUAswC0ALUAtAC2ALUAtwC1ALYAtAC3ALYAtwCuALUAqQC4ALQAtAC4ALcAuACpALkAugC4ALkAuAC7ALcAuwC4ALoArgC3ALsAuwC6AKwArgC7AKwAvAC9AL4AvwC9ALwAwAC/ALwAwADBAL8AvADCAMAAwADDAMEAwgDDAMAAxADCALwAvgDEALwAwwDCAMUAxADFAMIAxADGAMUAwwDFAMYAvgDHAMQAyADGAMQAyADEAMcAwwDGAMgAvgDJAMcAyADHAMkAwwDIAMoAyADJAMoAyQDLAMoAzADKAMsAyQDMAMsAzADDAMoAvgDNAMkAyQDNAMwAzQC+AM4AzwDNAM4AzQDQAMwA0ADNAM8AwwDMANAA0ADPAMEAwwDQAMEA0QDSANMA1ADSANEA1QDUANEA1QDWANQA0QDXANUA1QDYANYA1wDYANUA2QDXANEA0wDZANEA2ADXANoA2QDaANcA2QDbANoA2ADaANsA0wDcANkA3QDbANkA3QDZANwA2ADbAN0A0wDeANwA3QDcAN4A2ADdAN8A3QDeAN8A3gDgAN8A4QDfAOAA3gDhAOAA4QDYAN8A0wDiAN4A3gDiAOEA4gDTAOMA5ADiAOMA4gDlAOEA5QDiAOQA2ADhAOUA5QDkANYA2ADlANYA5gDnAOgA5wDpAOgA6QDmAOgA5gDqAOcA6wDnAOoA5gDrAOoA6wDsAOcA5wDsAO0A7gDrAOYA7wDnAO0A5wDvAOkA8ADtAOwA8ADvAO0A7ADrAPEA8ADsAPEA8gDxAOsA6wDuAPIA8gDzAPEA8ADxAPMA7gDzAPIA7wDwAPQA8wD0APAA6QDvAPUA7wD0APUA9gDpAPUA9gD1APQA9wDpAPYA9AD3APYA9wDmAOkA8wD4APQA9AD4APcA7gD4APMA5gD3APkA7gDmAPkA+QD3APgA+QD4AO4A+gD7APwA+wD9APwA/QD6APwA+gD+APsA/wD7AP4A+gD/AP4A/wAAAfsA+wAAAQEBAgH/APoAAwH7AAEB+wADAf0ABAEBAQABBAEDAQEBAAH/AAUBBAEAAQUBBgEFAf8A/wACAQYBBgEHAQUBBAEFAQcBAgEHAQYBAwEEAQgBBwEIAQQB/QADAQkBAwEIAQkBCgH9AAkBCgEJAQgBCwH9AAoBCAELAQoBCwH6AP0ABwEMAQgBCAEMAQsBAgEMAQcB+gALAQ0BAgH6AA0BDQELAQwBDQEMAQIBDgEPARABEAEPAREBDgESAQ8BEgERAQ8BEQETARABEQEUARMBEAETARUBFQEOARABDgEWARIBFwERARIBEQEXARQBFwESARYBFQEYAQ4BGQEWAQ4BGQEOARgBFwEWARkBFQEaARgBGQEYARoBFwEZARsBGQEaARsBHAEXARsBGgEcARsBFwEdARQBHQEXARwBHQEeARQBGgEfARwBHQEcAR8BGgEgAR8BIAEdAR8BFQEgARoBHQEgAR4BIAEVAR4BIQEiASMBIgEkASMBIgElASQBJgEjASQBJAElASYBJwEjASYBIwEnASEBKAEnASYBKAEmASUBJwEpASEBKgEnASgBKgEpAScBKQErASEBKgErASkBIQEsASIBIgEsASUBKwEsASEBKgEtASsBKAEuASoBLgEtASoBKAElAS8BKAEvAS4BMAEtAS4BKwEtATABMAEuAS8BKwEwATEBMQEsASsBMgElASwBMgEvASUBMwEyASwBLwEyATMBLwE0ATABMwEsATUBLAExATUBMAE2ATEBMAE0ATYBNQExATYBLwE3ATQBNAE3ATYBNgE3ATgBNQE2ATgBOQE3AS8BMwE5AS8BOgE4ATcBOAE6ATUBOQE6ATcBOgE7ATUBOgE5ATwBOgE8ATsBOQEzAT0BNQE9ATMBPAE5AT0BNQE7AT0BPQE7ATwBPgE/AUABPwFBAUABQQFCAUABPwFDAUEBQQFDAUQBQQFEAUIBPwFFAUMBRAFDAUYBRQFGAUMBRAFHAUIBRAFGAUcBSAFAAUIBQAFIAT4BQgFHAUkBSAFCAUkBSgFGAUUBRwFGAUsBSwFGAUoBSQFHAUwBRwFLAUwBTQFIAUkBTQFJAUwBTQE+AUgBTAFLAU4BTQFMAU4BSwFKAU8BTwFKAUUBTgFLAVABUAFNAU4BSwFPAVABUAE+AU0BTwFFAVEBTwFRAVABUAFRAT4BPwFRAUUBUQE/AT4BUgFTAVQBUgFUAVUBUwFSAVYBVgFSAVcBVQFXAVIBVgFXAVgBUwFWAVgBVwFVAVkBWQFYAVcBVAFaAVUBWgFUAVMBWQFVAVsBVQFaAVsBWQFcAVgBWgFTAV0BWgFdAVsBWAFeAVMBXAFeAVgBXgFdAVMBXAFZAV4BWwFdAV4BWwFeAVkBJAAlACYAJgAlACcAJAAmACcAJAAoACUAJwAlACkAKAApACUAKgAkACcAJwApACsAJwAsACoAJwArACwAKwAtACwALQAuACwAKwAuAC0ALAAuACoAKwAvAC4ALwAqAC4AKQAwACsAMQArADAAKwAxAC8AMgAwACkAKAAyACkAMQAwADMAMAAyADMAMgAxADMALwA0ACoANQAyACgAMQAyADYANgAyADUAMQA2ADcANwAvADEALwA3ADgALwA4ADQANwA2ADkANwA5ADoANwA6ADgANgA7ADkANgA1ADsAOgA5ADwAOAA6ADwAOQA7ADwAOwA1AD0AOwA9ADwAPgA8AD0APQA1AD4APgA4ADwAPgA1AD8AOAA+AD8AKAA/ADUAPwA0ADgAKABAAD8APwBAADQAJABAACgANABAAEEAQAAkAEIAQABCAEEAQgA0AEEAJAAqAEIANABCACoAXwFgAWEBYQFgAWIBYgFgAWMBYQFiAWQBYgFlAWQBYgFjAWUBYQFkAWYBZwFjAWABYAFfAWcBaAFfAWEBYQFmAWgBZQFpAWQBZgFkAWkBZQFjAWoBZQFqAWkBawFmAWkBYwFsAWoBZwFsAWMBagFtAWkBbQFrAWkBbgFmAWsBbgFoAWYBbQFuAWsBbgFvAWgBbQFvAW4BbwFfAWgBcAFnAV8BbwFwAV8BcAFsAWcBcQFvAW0BbwFxAXABcgFxAW0BcAFxAXIBagFyAW0BcAFyAWwBbAFyAWoBcwF0AXUBcwF2AXQBdQF3AXMBdwF4AXMBdgFzAXgBdwF5AXgBdQF5AXcBeAF6AXYBegF4AXkBdAF2AXsBewF1AXQBegF8AXYBdgF8AXsBegF5AX0BewF8AX4BewF+AXUBfAF6AX8BfQF/AXoBfAF/AX4BfQF5AX8BfwF1AX4BeQF1AX8BgAGBAYIBggGBAYMBggGDAYQBhQGDAYEBgwGFAYQBhgGFAYEBgQGAAYYBhwGFAYYBhwGEAYUBhgGAAYgBiQGHAYYBiQGGAYgBiAGAAYoBiQGIAYoBgAGCAYsBggGEAYsBigGAAYsBiQGKAYwBhwGJAY0BjQGJAYwBigGOAYwBjgGNAYwBhwGNAY8BhwGPAYQBjgGPAY0BkAGLAYQBkAGEAY8BkQGKAYsBigGRAY4BkgGLAZABjwGSAZABiwGTAZEBkgGTAYsBjgGRAZQBkwGUAZEBjwGOAZUBjgGUAZUBjwGVAZYBlQGUAZYBlAGXAZYBkwGXAZQBmAGPAZYBkgGPAZgBmQGWAZcBlwGTAZkBmAGWAZkBmQGTAZoBmQGbAZgBmQGaAZsBmAGcAZIBkwGSAZwBmwGcAZgBkwGcAZoBnAGbAZoBnQGeAZ8BnwGeAaABoAGeAaEBnwGgAaIBoAGjAaIBoAGhAaMBnwGiAaQBpQGhAZ4BngGdAaUBpgGdAZ8BnwGkAaYBowGnAaIBpAGiAacBowGhAagBowGoAacBqQGkAacBoQGqAagBpQGqAaEBqAGrAacBqwGpAacBrAGkAakBrAGmAaQBqwGsAakBrAGtAaYBqwGtAawBrQGdAaYBrgGlAZ0BrQGuAZ0BrgGqAaUBrwGtAasBrQGvAa4BsAGvAasBrgGvAbABqAGwAasBrgGwAaoBqgGwAagBsQGyAbMBsQG0AbIBswG1AbEBtQG2AbEBtAGxAbYBtQG3AbYBswG3AbUBtgG4AbQBuAG2AbcBsgG0AbkBuQGzAbIBuAG6AbQBtAG6AbkBuAG3AbsBuQG6AbwBuQG8AbMBugG4Ab0BuwG9AbgBugG9AbwBuwG3Ab0BvQGzAbwBtwGzAb0BQwBEAEUARABGAEUAQwBGAEQAQwBFAEcARgBIAEUARwBFAEgASQBGAEMARgBKAEgARgBJAEsARgBLAEoASgBLAEwATABLAE0ASgBMAE0ASwBJAE0ASgBNAE4ATgBNAEkASABKAE8AUABPAEoASgBOAFAAUQBIAE8ARwBIAFEAUABSAE8ATwBSAFEAUQBSAFAATgBJAFMAVABHAFEAUABVAFEAVQBUAFEAUABWAFUAVgBQAE4ATgBXAFYATgBTAFcAVgBYAFUAVgBZAFgAVgBXAFkAVQBYAFoAVQBaAFQAWQBbAFgAWABbAFoAVwBbAFkAWgBcAFQAWgBbAFwAXQBcAFsAXABdAFQAXQBbAFcAXQBeAFQAVwBeAF0ARwBUAF4AXgBXAFMARwBeAF8AXgBTAF8AQwBHAF8AUwBgAF8AXwBhAEMAXwBgAGEAYQBgAFMAQwBhAEkAUwBJAGEAvgG/AcABvwHBAcABwQHCAcABvwHDAcEBwQHDAcQBwQHEAcIBvwHFAcMBxAHDAcYBxQHGAcMBxAHHAcIBxAHGAccByAHAAcIBwAHIAb4BwgHHAckByAHCAckBygHGAcUBxwHGAcsBywHGAcoByQHHAcwBxwHLAcwBzQHIAckBzQHJAcwBzQG+AcgBzAHLAc4BzQHMAc4BywHKAc8BzwHKAcUBzgHLAdAB0AHNAc4BywHPAdAB0AG+Ac0BzwHFAdEBzwHRAdAB0AHRAb4BvwHRAcUB0QG/Ab4B0gHTAdQB0gHUAdUB0wHSAdYB1gHSAdcB1QHXAdIB1gHXAdgB0wHWAdgB1wHVAdkB2QHYAdcB1AHaAdUB2gHUAdMB2QHVAdsB1QHaAdsB2QHcAdgB2gHTAd0B2gHdAdsB2AHeAdMB3AHeAdgB3gHdAdMB3AHZAd4B2wHdAd4B2wHeAdkB"), +"lods": [2.6202638, PackedByteArray("AAABAAIAAwABAAAAAAAEAAMAAgAFAAAAAAAFAAQAAgAGAAUABQAGAAQABgACAAcABgAIAAQACAAGAAcACQAKAAsADAAKAAkACQANAAwACwAOAAkACQAOAA0ACwAPAA4ADgAPAA0ADwALABAADwARAA0AEQAPABAAEgATABQAFQATABIAEgAWABUAFAAXABIAEgAXABYAFAAYABcAFwAYABYAGAAUABkAGAAaABYAGgAYABkAGwAcAB0AHgAcABsAGwAfAB4AHQAgABsAGwAgAB8AHQAhACAAIAAhAB8AIQAdACIAIQAjAB8AIwAhACIAJAAlACYAJgAlACcAJAAmACcAJAAoACUAJwAlACkAKAApACUAKgAkACcAJwApACsAJwAsACoAJwArACwAKwAtACwALQAuACwAKwAuAC0ALAAuACoAKwAvAC4ALwAqAC4AKQAwACsAMQArADAAKwAxAC8AMgAwACkAKAAyACkAMQAwADMAMAAyADMAMgAxADMALwA0ACoANQAyACgAMQAyADYANgAyADUAMQA2ADcANwAvADEALwA3ADgALwA4ADQANwA2ADkANwA5ADoANwA6ADgANgA7ADkANgA1ADsAOgA5ADwAOAA6ADwAOQA7ADwAOwA1AD0AOwA9ADwAPgA8AD0APQA1AD4APgA4ADwAPgA1AD8AOAA+AD8AKAA/ADUAPwA0ADgAKABAAD8APwBAADQAJABAACgANABAAEEAQAAkAEIAQABCAEEAQgA0AEEAJAAqAEIANABCACoAQwBEAEUARABGAEUAQwBGAEQAQwBFAEcARgBIAEUARwBFAEgASQBGAEMARgBKAEgARgBJAEsARgBLAEoASgBLAEwATABLAE0ASgBMAE0ASwBJAE0ASgBNAE4ATgBNAEkASABKAE8AUABPAEoASgBOAFAAUQBIAE8ARwBIAFEAUABSAE8ATwBSAFEAUQBSAFAATgBJAFMAVABHAFEAUABVAFEAVQBUAFEAUABWAFUAVgBQAE4ATgBXAFYATgBTAFcAVgBYAFUAVgBZAFgAVgBXAFkAVQBYAFoAVQBaAFQAWQBbAFgAWABbAFoAVwBbAFkAWgBcAFQAWgBbAFwAXQBcAFsAXABdAFQAXQBbAFcAXQBeAFQAVwBeAF0ARwBUAF4AXgBXAFMARwBeAF8AXgBTAF8AQwBHAF8AUwBgAF8AXwBhAEMAXwBgAGEAYQBgAFMAQwBhAEkAUwBJAGEA"), 3.9303958, PackedByteArray("AAABAAIAAwABAAAAAAAEAAMAAgAFAAAAAAAFAAQAAgAGAAUABQAGAAQABgACAAcABgAIAAQACAAGAAcACQAKAAsADAAKAAkACQANAAwACwAOAAkACQAOAA0ACwAPAA4ADgAPAA0ADwALABAADwARAA0AEQAPABAA")], +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 479, +"vertex_data": PackedByteArray("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") +}] +blend_shape_mode = 0 + +[resource] +resource_name = "Alien_Alien_mesh" +_surfaces = [{ +"aabb": AABB(-0.87564546, -0.052779794, -2.236081, 1.751194, 3.3099113, 4.496481), +"attribute_data": PackedByteArray("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"), +"format": 34896613431, +"index_count": 2496, +"index_data": PackedByteArray("UAEBAAIAUAFRAQAAUgFRAVABAgBSAVABUgFTAVEBUgFUAVMBAgBVAVIBVgFUAVIBVgFSAVUBAwBUAVYBAwBWAVcBVgFVAVgBVgFYAVcBAgBYAVUBWAFZAVcBWAFaAVkBAgBbAVgBWAFbAVoBWwECAAUAWwEEAFoBBgAIAFwBCAAJAFwBBgAHAAgACgALAAwACwANAAwAXQELAAoACwBdAV4BCwBeAV8BCwBgAQ0AYAELAGEBYAFhAWIBDgAPABAADgBjAQ8ADwBjAREAZAETABQAZAFlARIAZgFlAWQBFABmAWQBZgFnAWUBZgFoAWcBFABpAWYBagFoAWYBagFmAWkBFQBoAWoBFQBqAWsBagFpAWwBagFsAWsBFABsAWkBbAFtAWsBbAFuAW0BFABvAWwBbAFvAW4BbwEUABcAbwEWAG4BGAAaAHABGgAbAHABGAAZABoAHAAdAB4AHQAfAB4AcQEdABwAHQBxAXIBHQByAXMBHQB0AR8AdAEdAHUBdAF1AXYBIAAhACIAIAB3ASEAIQB3ASMAeAElACYAeAF5ASQAegF5AXgBJgB6AXgBegF7AXkBegF8AXsBJgB9AXoBfgF8AXoBfgF6AX0BJwB8AX4BJwB+AX8BfgF9AYABfgGAAX8BJgCAAX0BgAGBAX8BgAGCAYEBJgCDAYABgAGDAYIBgwEmACkAgwEoAIIBKgAsAIQBLAAtAIQBKgArACwALgAvADAALwAxADAAhQEvAC4ALwCFAYYBLwCGAYcBLwCIATEAiAEvAIkBiAGJAYoBMgAzADQAMgCLATMAMwCLATUAjAE3ADgAjAGNATYAjgGNAYwBOACOAYwBjgGPAY0BjgGQAY8BkQGQAY4BOACSAY4BkQGOAZIBkQGSAZMBOACTAZIBkQGTATkAkwGUATkAkwGVAZQBOACWAZMBkwGWAZUBlgE4ADsAlgE6AJUBPAA+AJcBPgA/AJcBPAA9AD4AQACYAUIAmAFDAEIAmQGYAUAAmAGZAZoBmAGaAZsBmAGbAZwBmAGdAUMAmAGcAUEAnQGYAUEAnQFBAJ4BRABFAEYARACfAUUARQCfAUcAoAGhAaIBoAGjAaQBpQGjAaABogGlAaABpQGmAaMBpQGnAaYBqAGnAaUBogGpAaUBqAGlAakBqAGpAaoBogGqAakBqAGqAasBqgGsAasBqgGtAawBogGuAaoBqgGuAa0BrgGiAa8BrgGwAa0BsQGyAbMBsQG0AbIBtQG2AbcBtgG4AbcBuQG2AbUBtgG5AboBtgG6AbsBtgG7AbwBtgG9AbgBtgG8Ab4BvQG2Ab4BvQG+Ab8BwAHBAcIBwwHEAcUBwwHGAcQBxwHIAckBygHLAcwBygHNAc4BzwHNAcoBzAHPAcoBzwHQAc0BzwHRAdABzAHSAc8B0wHRAc8B0wHPAdIB1AHRAdMB1AHTAdUB0wHSAdYB0wHWAdUBzAHWAdIB1gHXAdUB1gHYAdcBzAHZAdYB1gHZAdgB2QHMAdoB2QHbAdgB3AHdAd4B3QHfAd4B3AHgAd0B3AHhAeAB4gHhAdwB4QHiAeMB4QHjAeQB4QHlAeAB5QHmAeAB5QHnAeYB5gHnAegB4QHpAeUB6QHhAeoB6QHqAesB7AHtAe4B7gHvAewB7wHwAewB7wHxAfAB7gHyAe8B7gHzAfIB7gH0AfMB9AHuAfUB8wH0AfYB8wH2AfcB+AH5AfoB+wH8Af0B+wH9Af4B+wH/AfwB/AH/AQACAQL/AfsBAQL7AQIC+wH+AQIC/gEDAgICBAIFAgYCBQIHAgYCBAIIAgUCBAIJAggCCgIJAgQCCQIKAgsCCQILAgwCCQINAggCDQIOAggCDQIPAg4CDgIPAhACCQIRAg0CEQIJAhICEQISAhMCFAIVAhYCFwIYAhkCGQIaAhcCGgIbAhcCGgIcAhsCGQIdAhoCGQIeAh0CGQIfAh4CHwIZAiACHgIfAiECHwIiAiECHgIhAiMCJAIlAiYCJwIoAikCJwIpAioCJwIrAigCKAIrAiwCLQIrAicCLQInAi4CJwIqAi4CKgIvAi4CMAIxAjICMQIzAjICMAI0AjECMAI1AjQCNgI1AjACNQI2AjcCNQI3AjgCNQI5AjQCOQI6AjQCOQI7AjoCOgI7AjwCNQI9AjkCPQI1Aj4CPQI+Aj8CQAJBAkICQwJAAkICQAJEAkECRQJAAkMCQAJFAkYCRQJDAkcCSAJBAkQCSAJJAkECQQJJAkoCSQJIAksCTAJNAk4CTwJMAk4CTAJPAlACUAJPAlECTAJQAlICUgJTAkwCTAJTAk0CUgJUAlMCTQJTAlUCVQJTAlQCTQJVAlYCVwJWAlUCVQJUAlgCVwJVAlkCWAJZAlUCWAJaAlkCWwJcAl0CWwJdAl4CWwJfAlwCWwJeAmACYQJgAl4CYQJeAmICXwJjAlwCYwJfAmQCZAJfAmUCYwJkAmYCZwJoAmkCaAJqAmkCagJrAmwCaAJrAmoCawJoAm0CaAJuAm0CZwJvAmgCcAJuAmgCcAJoAm8CZwJwAm8CbgJwAnECcgJwAmcCcAJyAnMCcgJnAnQCdQJ2AncCdQJ4AnYCdgJ4AnkCdwJ2AnoCdwJ6AnsCfAJ6AnYCdgJ5AnwCfAJ9AnoCfAJ+An0CfAJ/An4CfwJ8AnkCfwJ5AoACgQKCAoMCgQKEAoICgwKFAoEChQKEAoECgwKGAoUChQKHAoQChAKHAogChwKFAokCiQKFAoYCiQKGAooCiwKMAo0CiwKOAowCjwKLAo0CiwKQAo4CjwKRAosCkgKQAosCkgKLApECkwKQApICkwKSApQCkgKRApUCjwKVApECkgKVApQCjwKWApUClQKXApQClQKWApgClQKYApcCmQKaApsCmwKcApkCmQKcAp0CmwKeApwCnwKgAqECoAKiAqECoAKfAqMCowKfAqQCoAKjAqUCogKgAqYCpgKgAqcCogKmAqgCqQKqAqsCqgKpAqwCqQKtAqwCqgKsAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDSABJAEoANgM3A00AOAM5A1EAOgM7A1UAPAM9A1kAWABXAFoAUABPAFIAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagA+Az8DbgBvAHAAQANxAEEDcgBzAHQAdQB2AHcAQgNDA3sARANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDfgB/AIAAdAN1A3YDdwN4A3kDegN7A3wDggCDAIQAfQN+A4UAiACJAIoAfwOAA4EDggODA4QDggOFA4MDhgOHA4gDhgOJA4cDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDkwOWA5QDlwOYA5kDlwOaA5gDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDpwOqA6gDqwOsA60DqwOuA6wDrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD0wPWA9QD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD5gPpA+cD6gPrA+wD7QPuA+8D7QPwA+4D8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgEBgQJBAcECgQLBAwEDQQOBA8EDQQQBA4EEQQSBBMEFAQVBBYEFwQYBBkEFwQaBBgEGwQcBB0EiwCMAB4EiwCOAIwAHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEkQCSAJMAkQCUAJIAlQCWAJcAlQCYAJYAUwBWAFQASwBOAEwAmQCaAJsAmQCcAJoAnQCeAJ8AnQCgAJ4AoQCiAKMApAClAKYApACnAKUAegB8AH0AegB5AHwAKwSoACwEqQCqAKsAawBtAGwAeAAtBC4ErACtAK4ALwQwBDEELwQyBDAErwCwALEAMwSyADQEswC0ALUAtgC3ALgANQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwESgRNBEsETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EXQRgBF4EYQRiBGMEZARlBGYEZARnBGUEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EfQSABH4EgQSCBIMEhASFBIYEhASHBIUEiASJBIoEiwSMBI0EuQC6ALsAuQC8ALoAjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEmgSdBJsEvQC+AL8AwADBAMIAngSGAIcAwwDEAMUAxgDHAMgAyQDKAMsAjwCNAJAAnwSgBIEAoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BAAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFzADNAM4AKAXQACkFKgXUACsFLAXYAC0FLgXcAC8F3QDeANsA1QDWANMA3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gAwBTEFMgXzADMF8gD0APUA9gD3APgA+QD6APsANAX+ADUFNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFAgEDAQQBZgVnBWgFaQVqBWsFbAVtBW4FBgEHAQgBbwVwBXEFDAENAQ4BcgVzBXQFdQV2BXcFdQV4BXYFeQV6BXsFeQV8BXoFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFhgWJBYcFigWLBYwFigWNBYsFjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFmgWdBZsFngWfBaAFngWhBZ8FogWjBaQFpQWmBacFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtAW1BbYFtwW4BbkFugW7BbwFvQW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFxgXJBccFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF2QXcBdoF3QXeBd8F4AXhBeIF4AXjBeEF5AXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF+QX8BfoF/QX+Bf8FAAYBBgIGAAYDBgEGBAYFBgYGBwYIBgkGCgYLBgwGCgYNBgsGDgYPBhAGDwEQAREBDwERBhABEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GFQEWARcBFQEYARYBGQEaARsBGQEcARoB1wDZANoAzwDRANIAHQEeAR8BHQEgAR4BIQEiASMBIQEkASIBJQEmAScBKAEpASoBKAErASkB/wAAAf0A/wABAQABHgYfBiwBLQEuAS8B8ADvAPEA/AAgBiEGMAExATIBIgYjBiQGIgYlBiMGMwE0ATUBJgYnBjYBNwE4ATkBOgE7ATwBKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GPQZABj4GQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUAZTBlEGVAZVBlYGVwZYBlkGVwZaBlgGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcAZzBnEGdAZ1BnYGdwZ4BnkGdwZ6BngGewZ8Bn0GfgZ/BoAGPQE+AT8BPQFAAT4BgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GjQaQBo4GQQFCAUMBRAFFAUYBCgEJAQsBRwFIAUkBSgFLAUwBTQFOAU8BEwEUARIBkQYFAZIG"), +"lods": [2.6202638, PackedByteArray("AAABAAIAAgADAAAAAgAEAAMABAACAAUABgAHAAgACAAJAAYACgALAAwACwANAAwADgAPABAADwAOABEAEgATABQAFAAVABIAFAAWABUAFgAUABcAGAAZABoAGgAbABgAHAAdAB4AHQAfAB4AIAAhACIAIQAgACMAJAAlACYAJgAnACQAJgAoACcAKAAmACkAKgArACwALAAtACoALgAvADAALwAxADAAMgAzADQAMwAyADUANgA3ADgAOAA5ADYAOAA6ADkAOgA4ADsAPAA9AD4APgA/ADwAQABBAEIAQQBDAEIARABFAEYARQBEAEcASABJAEoASwBMAE0ASwBOAEwATwBQAFEAUABPAFIAUwBUAFUAUwBWAFQAVwBYAFkAWABXAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAawBtAGwAbgBvAHAAbgBxAG8AcgBzAHQAdQB2AHcAeAB2AHUAeQB6AHsAegB5AHwAegB8AH0AfgB/AIAAfwB+AIEAggCDAIQAgwCCAIUAhQCGAIcAiACJAIoAiwCMAI0AiwCOAIwAjwCNAJAAkQCSAJMAkQCUAJIAlQCWAJcAlQCYAJYAmQCaAJsAmQCcAJoAnQCeAJ8AnQCgAJ4AoQCiAKMApAClAKYApACnAKUApgCoAKQAqQCqAKsArACtAK4ArwCwALEAsACyALEAswC0ALUAtgC3ALgAuQC6ALsAuQC8ALoAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEAzwDRANIA0wDUANUA1QDWANMA1wDYANkA1wDZANoA2wDcAN0A3QDeANsA3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8ADvAPEA8gDzAPQA8gD0APUA9gD3APgA+QD6APsA/AD5APsA/QD+AP8A/wAAAf0A/wABAQABAgEDAQQBBAEFAQIBBgEHAQgBCQEKAQYBCgEJAQsBDAENAQ4BDwEQAREBDwESARABEwEUARIBFQEWARcBFQEYARYBGQEaARsBGQEcARoBHQEeAR8BHQEgAR4BIQEiASMBIQEkASIBJQEmAScBKAEpASoBKAErASkBKwEoASwBLQEuAS8BMAExATIBMwE0ATUBNQE0ATYBNwE4ATkBOgE7ATwBPQE+AT8BPQFAAT4BQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8B"), 3.9303958, PackedByteArray("AAABAAIAAgADAAAAAgAEAAMABAACAAUABgAHAAgACAAJAAYACgALAAwACwANAAwADgAPABAADwAOABEAEgATABQAFAAVABIAFAAWABUAFgAUABcAGAAZABoAGgAbABgAHAAdAB4AHQAfAB4AIAAhACIAIQAgACMA")], +"material": ExtResource("1_py30f"), +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 1683, +"vertex_data": PackedByteArray("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") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_py30f") diff --git a/entities/alien/assets/vat/running_alien_vat/Alien-remap_info.json b/entities/alien/assets/vat/running_alien_vat/Alien-remap_info.json new file mode 100644 index 0000000..b064580 --- /dev/null +++ b/entities/alien/assets/vat/running_alien_vat/Alien-remap_info.json @@ -0,0 +1,16 @@ +{ + "os-remap": { + "Min": [ + -0.2, + -2.0, + -0.9 + ], + "Max": [ + 0.1, + 3.4, + 1.1 + ], + "Frames": 12 + }, + "animations": {} +} \ No newline at end of file diff --git a/entities/alien/assets/vat/running_alien_vat/Alien.glb b/entities/alien/assets/vat/running_alien_vat/Alien.glb new file mode 100644 index 0000000..96e785d Binary files /dev/null and b/entities/alien/assets/vat/running_alien_vat/Alien.glb differ diff --git a/entities/alien/assets/vat/running_alien_vat/Alien.glb.import b/entities/alien/assets/vat/running_alien_vat/Alien.glb.import new file mode 100644 index 0000000..c1b59b6 --- /dev/null +++ b/entities/alien/assets/vat/running_alien_vat/Alien.glb.import @@ -0,0 +1,63 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c8b280nh1i42w" +path="res://.godot/imported/Alien.glb-fad778d224a52bd474cfd3984bcf01f5.scn" + +[deps] + +source_file="res://entities/alien/assets/vat/running_alien_vat/Alien.glb" +dest_files=["res://.godot/imported/Alien.glb-fad778d224a52bd474cfd3984bcf01f5.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"@MATERIAL:0": { +"use_external/enabled": true, +"use_external/path": "uid://b7o0pgg1fweqq" +} +}, +"meshes": { +"Alien_Alien_mesh_001": { +"generate/lightmap_uv": 0, +"generate/lods": 0, +"generate/shadow_meshes": 0, +"lods/normal_merge_angle": 20.0, +"save_to_file/enabled": true, +"save_to_file/fallback_path": "res://entities/alien/assets/vat/running_alien_vat/alien_mesh.tres", +"save_to_file/path": "uid://cgv8clg8y80on" +} +} +} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/entities/alien/assets/vat/running_alien_vat/Alien_vat.exr b/entities/alien/assets/vat/running_alien_vat/Alien_vat.exr new file mode 100644 index 0000000..ea26bff Binary files /dev/null and b/entities/alien/assets/vat/running_alien_vat/Alien_vat.exr differ diff --git a/entities/alien/assets/vat/running_alien_vat/Alien_vat.exr.import b/entities/alien/assets/vat/running_alien_vat/Alien_vat.exr.import new file mode 100644 index 0000000..a848c9c --- /dev/null +++ b/entities/alien/assets/vat/running_alien_vat/Alien_vat.exr.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxy6bh1jymqsk" +path="res://.godot/imported/Alien_vat.exr-412e4d42f972d99628cc1bff26b09e66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://entities/alien/assets/vat/running_alien_vat/Alien_vat.exr" +dest_files=["res://.godot/imported/Alien_vat.exr-412e4d42f972d99628cc1bff26b09e66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/entities/alien/assets/vat/running_alien_vat/alien_mesh.tres b/entities/alien/assets/vat/running_alien_vat/alien_mesh.tres new file mode 100644 index 0000000..1898c82 --- /dev/null +++ b/entities/alien/assets/vat/running_alien_vat/alien_mesh.tres @@ -0,0 +1,35 @@ +[gd_resource type="ArrayMesh" format=4 uid="uid://cgv8clg8y80on"] + +[ext_resource type="Material" uid="uid://b7o0pgg1fweqq" path="res://entities/alien/assets/material/alien_running_vat.tres" id="1_f8tat"] + +[sub_resource type="ArrayMesh" id="ArrayMesh_f8tat"] +_surfaces = [{ +"aabb": AABB(-0.87564546, -0.069461584, -2.2149434, 1.751194, 2.8988655, 5.519746), +"format": 34896613377, +"index_count": 2496, +"index_data": PackedByteArray("YgABAAIAAwABAGIAAAADAGIAAAAEAAMAYgBjAAAAAAAFAAQAYwAFAAAAZABjAGIAAgBkAGIABQBjAGUAZABlAGMAZABmAGUABQBlAGYAAgBnAGQAaABmAGQAaABkAGcABQBmAGgAAgBpAGcAaABnAGkABQBoAGoAaABpAGoAaQBrAGoAbABqAGsAaQBsAGsAbAAFAGoAAgBtAGkAaQBtAGwAbQACAAcACABtAAcAbQAGAGwABgBtAAgABQBsAAYABgAIAAQABQAGAAQAbgAKAAsADAAKAG4ACQAMAG4ACQANAAwAbgBvAAkACQAOAA0AbwAOAAkAcABvAG4ACwBwAG4ADgBvAHEAcABxAG8AcAByAHEADgBxAHIACwBzAHAAdAByAHAAdABwAHMADgByAHQACwB1AHMAdABzAHUADgB0AHYAdAB1AHYAdQB3AHYAeAB2AHcAdQB4AHcAeAAOAHYACwB5AHUAdQB5AHgAeQALABAAEQB5ABAAeQAPAHgADwB5ABEADgB4AA8ADwARAA0ADgAPAA0AegATABQAFQATAHoAEgAVAHoAEgAWABUAegB7ABIAEgAXABYAewAXABIAfAB7AHoAFAB8AHoAFwB7AH0AfAB9AHsAfAB+AH0AFwB9AH4AFAB/AHwAgAB+AHwAgAB8AH8AFwB+AIAAFACBAH8AgAB/AIEAFwCAAIIAgACBAIIAgQCDAIIAhACCAIMAgQCEAIMAhAAXAIIAFACFAIEAgQCFAIQAhQAUABkAGgCFABkAhQAYAIQAGACFABoAFwCEABgAGAAaABYAFwAYABYAhgAcAB0AHgAcAIYAGwAeAIYAGwAfAB4AhgCHABsAGwCIAB8AhwCIABsAiQCHAIYAHQCJAIYAiACHAIoAiQCKAIcAiQAgAIoAiACKACAAHQCLAIkAjAAgAIkAjACJAIsAiAAgAIwAHQCNAIsAjACLAI0AiACMAI4AjACNAI4AjQCPAI4AkACOAI8AjQCQAI8AkACIAI4AHQCRAI0AjQCRAJAAkQAdACIAIwCRACIAkQAhAJAAIQCRACMAiACQACEAIQAjAB8AiAAhAB8AkgCTAJQAlQCTAJIAlgCVAJIAlgCXAJUAkgCYAJYAlgCZAJcAmACZAJYAmgCYAJIAlACaAJIAmQCYAJsAmgCbAJgAmgCcAJsAmQCbAJwAlACdAJoAngCcAJoAngCaAJ0AmQCcAJ4AlACfAJ0AngCdAJ8AmQCeAKAAngCfAKAAnwChAKAAogCgAKEAnwCiAKEAogCZAKAAlACjAJ8AnwCjAKIAowCUAKQApQCjAKQAowCmAKIApgCjAKUAmQCiAKYApgClAJcAmQCmAJcApwCoAKkAqgCoAKcAqwCqAKcAqwCsAKoApwCtAKsAqwCuAKwArQCuAKsArwCtAKcAqQCvAKcArgCtALAArwCwAK0ArwCxALAArgCwALEAqQCyAK8AswCxAK8AswCvALIArgCxALMAqQC0ALIAswCyALQArgCzALUAswC0ALUAtAC2ALUAtwC1ALYAtAC3ALYAtwCuALUAqQC4ALQAtAC4ALcAuACpALkAugC4ALkAuAC7ALcAuwC4ALoArgC3ALsAuwC6AKwArgC7AKwAvAC9AL4AvwC9ALwAwAC/ALwAwADBAL8AvADCAMAAwADDAMEAwgDDAMAAxADCALwAvgDEALwAwwDCAMUAxADFAMIAxADGAMUAwwDFAMYAvgDHAMQAyADGAMQAyADEAMcAwwDGAMgAvgDJAMcAyADHAMkAwwDIAMoAyADJAMoAyQDLAMoAzADKAMsAyQDMAMsAzADDAMoAvgDNAMkAyQDNAMwAzQC+AM4AzwDNAM4AzQDQAMwA0ADNAM8AwwDMANAA0ADPAMEAwwDQAMEA0QDSANMA1ADSANEA1QDUANEA1QDWANQA0QDXANUA1QDYANYA1wDYANUA2QDXANEA0wDZANEA2ADXANoA2QDaANcA2QDbANoA2ADaANsA0wDcANkA3QDbANkA3QDZANwA2ADbAN0A0wDeANwA3QDcAN4A2ADdAN8A3QDeAN8A3gDgAN8A4QDfAOAA3gDhAOAA4QDYAN8A0wDiAN4A3gDiAOEA4gDTAOMA5ADiAOMA4gDlAOEA5QDiAOQA2ADhAOUA5QDkANYA2ADlANYA5gDnAOgA5wDpAOgA6QDmAOgA5gDqAOcA6wDnAOoA5gDrAOoA6wDsAOcA5wDsAO0A7gDrAOYA7wDnAO0A5wDvAOkA8ADtAOwA8ADvAO0A7ADrAPEA8ADsAPEA8gDxAOsA6wDuAPIA8gDzAPEA8ADxAPMA7gDzAPIA7wDwAPQA8wD0APAA6QDvAPUA7wD0APUA9gDpAPUA9gD1APQA9wDpAPYA9AD3APYA9wDmAOkA8wD4APQA9AD4APcA7gD4APMA5gD3APkA7gDmAPkA+QD3APgA+QD4AO4A+gD7APwA+wD9APwA/QD6APwA+gD+APsA/wD7AP4A+gD/AP4A/wAAAfsA+wAAAQEBAgH/APoAAwH7AAEB+wADAf0ABAEBAQABBAEDAQEBAAH/AAUBBAEAAQUBBgEFAf8A/wACAQYBBgEHAQUBBAEFAQcBAgEHAQYBAwEEAQgBBwEIAQQB/QADAQkBAwEIAQkBCgH9AAkBCgEJAQgBCwH9AAoBCAELAQoBCwH6AP0ABwEMAQgBCAEMAQsBAgEMAQcB+gALAQ0BAgH6AA0BDQELAQwBDQEMAQIBDgEPARABEAEPAREBDgESAQ8BEgERAQ8BEQETARABEQEUARMBEAETARUBFQEOARABDgEWARIBFwERARIBEQEXARQBFwESARYBFQEYAQ4BGQEWAQ4BGQEOARgBFwEWARkBFQEaARgBGQEYARoBFwEZARsBGQEaARsBHAEXARsBGgEcARsBFwEdARQBHQEXARwBHQEeARQBGgEfARwBHQEcAR8BGgEgAR8BIAEdAR8BFQEgARoBHQEgAR4BIAEVAR4BIQEiASMBIgEkASMBIgElASQBJgEjASQBJAElASYBJwEjASYBIwEnASEBKAEnASYBKAEmASUBJwEpASEBKgEnASgBKgEpAScBKQErASEBKgErASkBIQEsASIBIgEsASUBKwEsASEBKgEtASsBKAEuASoBLgEtASoBKAElAS8BKAEvAS4BMAEtAS4BKwEtATABMAEuAS8BKwEwATEBMQEsASsBMgElASwBMgEvASUBMwEyASwBLwEyATMBLwE0ATABMwEsATUBLAExATUBMAE2ATEBMAE0ATYBNQExATYBLwE3ATQBNAE3ATYBNgE3ATgBNQE2ATgBOQE3AS8BMwE5AS8BOgE4ATcBOAE6ATUBOQE6ATcBOgE7ATUBOgE5ATwBOgE8ATsBOQEzAT0BNQE9ATMBPAE5AT0BNQE7AT0BPQE7ATwBPgE/AUABPwFBAUABQQFCAUABPwFDAUEBQQFDAUQBQQFEAUIBPwFFAUMBRAFDAUYBRQFGAUMBRAFHAUIBRAFGAUcBSAFAAUIBQAFIAT4BQgFHAUkBSAFCAUkBSgFGAUUBRwFGAUsBSwFGAUoBSQFHAUwBRwFLAUwBTQFIAUkBTQFJAUwBTQE+AUgBTAFLAU4BTQFMAU4BSwFKAU8BTwFKAUUBTgFLAVABUAFNAU4BSwFPAVABUAE+AU0BTwFFAVEBTwFRAVABUAFRAT4BPwFRAUUBUQE/AT4BUgFTAVQBUgFUAVUBUwFSAVYBVgFSAVcBVQFXAVIBVgFXAVgBUwFWAVgBVwFVAVkBWQFYAVcBVAFaAVUBWgFUAVMBWQFVAVsBVQFaAVsBWQFcAVgBWgFTAV0BWgFdAVsBWAFeAVMBXAFeAVgBXgFdAVMBXAFZAV4BWwFdAV4BWwFeAVkBJAAlACYAJgAlACcAJAAmACcAJAAoACUAJwAlACkAKAApACUAKgAkACcAJwApACsAJwAsACoAJwArACwAKwAtACwALQAuACwAKwAuAC0ALAAuACoAKwAvAC4ALwAqAC4AKQAwACsAMQArADAAKwAxAC8AMgAwACkAKAAyACkAMQAwADMAMAAyADMAMgAxADMALwA0ACoANQAyACgAMQAyADYANgAyADUAMQA2ADcANwAvADEALwA3ADgALwA4ADQANwA2ADkANwA5ADoANwA6ADgANgA7ADkANgA1ADsAOgA5ADwAOAA6ADwAOQA7ADwAOwA1AD0AOwA9ADwAPgA8AD0APQA1AD4APgA4ADwAPgA1AD8AOAA+AD8AKAA/ADUAPwA0ADgAKABAAD8APwBAADQAJABAACgANABAAEEAQAAkAEIAQABCAEEAQgA0AEEAJAAqAEIANABCACoAXwFgAWEBYQFgAWIBYgFgAWMBYQFiAWQBYgFlAWQBYgFjAWUBYQFkAWYBZwFjAWABYAFfAWcBaAFfAWEBYQFmAWgBZQFpAWQBZgFkAWkBZQFjAWoBZQFqAWkBawFmAWkBYwFsAWoBZwFsAWMBagFtAWkBbQFrAWkBbgFmAWsBbgFoAWYBbQFuAWsBbgFvAWgBbQFvAW4BbwFfAWgBcAFnAV8BbwFwAV8BcAFsAWcBcQFvAW0BbwFxAXABcgFxAW0BcAFxAXIBagFyAW0BcAFyAWwBbAFyAWoBcwF0AXUBcwF2AXQBdQF3AXMBdwF4AXMBdgFzAXgBdwF5AXgBdQF5AXcBeAF6AXYBegF4AXkBdAF2AXsBewF1AXQBegF8AXYBdgF8AXsBegF5AX0BewF8AX4BewF+AXUBfAF6AX8BfQF/AXoBfAF/AX4BfQF5AX8BfwF1AX4BeQF1AX8BgAGBAYIBggGBAYMBggGDAYQBhQGDAYEBgwGFAYQBhgGFAYEBgQGAAYYBhwGFAYYBhwGEAYUBhgGAAYgBiQGHAYYBiQGGAYgBiAGAAYoBiQGIAYoBgAGCAYsBggGEAYsBigGAAYsBiQGKAYwBhwGJAY0BjQGJAYwBigGOAYwBjgGNAYwBhwGNAY8BhwGPAYQBjgGPAY0BkAGLAYQBkAGEAY8BkQGKAYsBigGRAY4BkgGLAZABjwGSAZABiwGTAZEBkgGTAYsBjgGRAZQBkwGUAZEBjwGOAZUBjgGUAZUBjwGVAZYBlQGUAZYBlAGXAZYBkwGXAZQBmAGPAZYBkgGPAZgBmQGWAZcBlwGTAZkBmAGWAZkBmQGTAZoBmQGbAZgBmQGaAZsBmAGcAZIBkwGSAZwBmwGcAZgBkwGcAZoBnAGbAZoBnQGeAZ8BnwGeAaABoAGeAaEBnwGgAaIBoAGjAaIBoAGhAaMBnwGiAaQBpQGhAZ4BngGdAaUBpgGdAZ8BnwGkAaYBowGnAaIBpAGiAacBowGhAagBowGoAacBqQGkAacBoQGqAagBpQGqAaEBqAGrAacBqwGpAacBrAGkAakBrAGmAaQBqwGsAakBrAGtAaYBqwGtAawBrQGdAaYBrgGlAZ0BrQGuAZ0BrgGqAaUBrwGtAasBrQGvAa4BsAGvAasBrgGvAbABqAGwAasBrgGwAaoBqgGwAagBsQGyAbMBsQG0AbIBswG1AbEBtQG2AbEBtAGxAbYBtQG3AbYBswG3AbUBtgG4AbQBuAG2AbcBsgG0AbkBuQGzAbIBuAG6AbQBtAG6AbkBuAG3AbsBuQG6AbwBuQG8AbMBugG4Ab0BuwG9AbgBugG9AbwBuwG3Ab0BvQGzAbwBtwGzAb0BQwBEAEUARABGAEUAQwBGAEQAQwBFAEcARgBIAEUARwBFAEgASQBGAEMARgBKAEgARgBJAEsARgBLAEoASgBLAEwATABLAE0ASgBMAE0ASwBJAE0ASgBNAE4ATgBNAEkASABKAE8AUABPAEoASgBOAFAAUQBIAE8ARwBIAFEAUABSAE8ATwBSAFEAUQBSAFAATgBJAFMAVABHAFEAUABVAFEAVQBUAFEAUABWAFUAVgBQAE4ATgBXAFYATgBTAFcAVgBYAFUAVgBZAFgAVgBXAFkAVQBYAFoAVQBaAFQAWQBbAFgAWABbAFoAVwBbAFkAWgBcAFQAWgBbAFwAXQBcAFsAXABdAFQAXQBbAFcAXQBeAFQAVwBeAF0ARwBUAF4AXgBXAFMARwBeAF8AXgBTAF8AQwBHAF8AUwBgAF8AXwBhAEMAXwBgAGEAYQBgAFMAQwBhAEkAUwBJAGEAvgG/AcABvwHBAcABwQHCAcABvwHDAcEBwQHDAcQBwQHEAcIBvwHFAcMBxAHDAcYBxQHGAcMBxAHHAcIBxAHGAccByAHAAcIBwAHIAb4BwgHHAckByAHCAckBygHGAcUBxwHGAcsBywHGAcoByQHHAcwBxwHLAcwBzQHIAckBzQHJAcwBzQG+AcgBzAHLAc4BzQHMAc4BywHKAc8BzwHKAcUBzgHLAdAB0AHNAc4BywHPAdAB0AG+Ac0BzwHFAdEBzwHRAdAB0AHRAb4BvwHRAcUB0QG/Ab4B0gHTAdQB0gHUAdUB0wHSAdYB1gHSAdcB1QHXAdIB1gHXAdgB0wHWAdgB1wHVAdkB2QHYAdcB1AHaAdUB2gHUAdMB2QHVAdsB1QHaAdsB2QHcAdgB2gHTAd0B2gHdAdsB2AHeAdMB3AHeAdgB3gHdAdMB3AHZAd4B2wHdAd4B2wHeAdkB"), +"lods": [2.2831619, PackedByteArray("AAABAAIAAwABAAAAAAAEAAMABQAAAAIAAAAFAAQABQACAAYABQAGAAQABgACAAcABgAIAAQACAAGAAcACQAKAAsADAAKAAkACQANAAwACwAOAAkACQAOAA0ACwAPAA4ADgAPAA0ADwALABAADwARAA0AEQAPABAAEgATABQAFQATABIAEgAWABUAFAAXABIAEgAXABYAFAAYABcAFwAYABYAGAAUABkAGAAaABYAGgAYABkAGwAcAB0AHgAcABsAGwAfAB4AHQAgABsAGwAgAB8AHQAhACAAIAAhAB8AIQAdACIAIQAjAB8AIwAhACIAJAAlACYAJgAlACcAJAAmACcAJAAoACUAJwAlACkAKAApACUAKgAkACcAJwApACsAJwAsACoAJwArACwAKwAtACwALQAuACwAKwAuAC0ALAAuACoAKwAvAC4ALwAqAC4AKQAwACsAMQArADAAKwAxAC8AMgAwACkAKAAyACkAMQAwADMAMAAyADMAMgAxADMALwA0ACoANQAyACgAMQAyADYANgAyADUAMQA2ADcANwAvADEALwA3ADgALwA4ADQANwA2ADkANwA5ADoANwA6ADgANgA7ADkANgA1ADsAOgA5ADwAOAA6ADwAOQA7ADwAOwA1AD0AOwA9ADwAPgA8AD0APQA1AD4APgA4ADwAPgA1AD8AOAA+AD8AKAA/ADUAPwA0ADgAKABAAD8APwBAADQAJABAACgANABAAEEAQAAkAEIAQABCAEEAQgA0AEEAJAAqAEIANABCACoAQwBEAEUARABGAEUAQwBGAEQAQwBFAEcARgBIAEUARwBFAEgASQBGAEMARgBKAEgARgBJAEsARgBLAEoASgBLAEwATABLAE0ASgBMAE0ASwBJAE0ASgBNAE4ATgBNAEkASABKAE8AUABPAEoASgBOAFAAUQBIAE8ARwBIAFEAUABSAE8ATwBSAFEAUQBSAFAATgBJAFMAVABHAFEAUABVAFEAVQBUAFEAUABWAFUAVgBQAE4ATgBXAFYATgBTAFcAVgBYAFUAVgBZAFgAVgBXAFkAVQBYAFoAVQBaAFQAWQBbAFgAWABbAFoAVwBbAFkAWgBcAFQAWgBbAFwAXQBcAFsAXABdAFQAXQBbAFcAXQBeAFQAVwBeAF0ARwBUAF4AXgBXAFMARwBeAF8AXgBTAF8AQwBHAF8AUwBgAF8AXwBhAEMAXwBgAGEAYQBgAFMAQwBhAEkAUwBJAGEA"), 3.424743, PackedByteArray("AAABAAIAAwABAAAAAAAEAAMABQAAAAIAAAAFAAQABQACAAYABQAGAAQABgACAAcABgAIAAQACAAGAAcACQAKAAsADAAKAAkACQANAAwACwAOAAkACQAOAA0ACwAPAA4ADgAPAA0ADwALABAADwARAA0AEQAPABAA")], +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 479, +"vertex_data": PackedByteArray("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") +}] +blend_shape_mode = 0 + +[resource] +resource_name = "Alien_Alien_mesh_001" +_surfaces = [{ +"aabb": AABB(-0.87564546, -0.069461584, -2.2149434, 1.751194, 2.8988655, 5.519746), +"attribute_data": PackedByteArray("7AAS/7r/VQUCA2ThIP5VBb4MZOH8+1UF9Csr4dn5VQXsAD3Dx/hVBQIDk+Et91UF7AC5Orr/VQXZHrk6YvpVBeUeeEdQ+VUF2R6qXCD+VQXKWBL/uv9VBc0tG+HZ+VUFK1go4WL6VQXKWEHDx/hVBc/D/jfH+FUFD6a8RAr1VQXqpf43YvpVBTKm71kt91UFAjFnwYH0VQXNLc6l5/JVBRdAyaXD8FUFMlqNpaDuVQUCMcOJju1VBc0t+qX061UF3LC1nIH0VQWwzLWcKe9VBb7Mt6gX7lUFnMxpvefyVQWzKWPBgfRVBewAaqWg7lUFQSmSpSnvVQWzKcOJju1VBXDdCnKO7VUFwcELftHpVQWiwQpyKe9VBcHBvpL061UFaW4S/0jpVQWkWqPrredVBfttnuOK5VUFVoYy2WfjVQWkWpHPVeJVBbRayeu74FUFacegwUjpVQUk4aDB8ONVBS/hdM3e4lUFD+FS363nVQUmgL6SSOlVBQxc1Xhn41UFtH8GefDjVQUmgE1fVeJVBR/hLOFV4lUFfMc07ZfeVQVpx2Dh8ONVBWnHEv+74FUFMH1nwQ/eVQWsYpK6dNxVBQlwfa1R2lUFwIhpnz/ZVQUMXLSfHNdVBcZirbqC1VUF6qW8Gw/eVQWNvbwbt9hVBZW9qyal11UFgb0kNnTcVQUQpL6SD95VBRyEjYI/2VUFm6Mee7fYVQUQpH1jHNdVBYsYKh4c11UF+gBmKV7TVQXsAHcet9hVBewA3ziC1VUFuyubuCdrVQW7K2PBLFRVBY0r8r2sRFUFuJQZBel2VQWYkUcOYVdVBbyRcQNzWFUFV5Q+ESdrVQWYkUcOYVdVBc6OtgRgdlUFvJFxA3NYVQX6jgES0EZVBZgoozqAUVUFOyXUTOpXVQV/JRA6x1VVBYonulE1RVUFOyXUTOpXVQWrIn46cndVBX8lEDrHVVUFPCJFUft3VQURWaF9NUVVBRFZQXW1VFUFsVndecZ0VQXXvWnA4UdVBbe/2tEaU1UFXb7KzqNTVQU9GfMET3VVBV0ZUBwaU1UFEBhEB9d1VQX7sosWCVJVBdevVRdyd1UFGbFtFBpTVQXXr1UXcndVBZi1uxiAUVUFIbLiGcdVVQUVHgAcklJVBakbmxsJUlUFEx0ABStzVQU9GfMET3VVBS6zmhGjU1UF0beAD2B2VQXDteQSPXRVBQ6yHw7pdlUF0beAD2B2VQUOsh8O6XZVBWm1Tw1zWFUFjbtfzz10VQWsuXnDPlVVBbC67MC0c1UF/bon0pJSVQWbteIVklJVBdG3hhRPVlUFmLW7GIBRVQXDteQSPXRVBdG3gA9gdlUFjbtfzz10VQXXvWnA4UdVBV2+ys6jU1UFsLrswLRzVQVXlD4RJ2tVBfqOARLQRlUFmJFHDmFXVQX6jgES0EZVBSmThBxHRlUFQY+bHL5FVQVXlD4RJ2tVBUWVgxasRFUFKZOEHEdGVQVXlD4RJ2tVBaKVnAnYVlUFopWpGSxUVQW4lBkF6XZVBUWVgxasRFUFKZOEHEdGVQV+IeA82FZVBTwiRVH7d1UFvyDWUyxUVQWrIn46cndVBYonulE1RVUFyCnxPE9WVQXIKZRVtVRVBZgoozqAUVUFWo1ICU9WVQX6jgES0EZVBc+MBRa1VFUFzo62BGB2VQWYtbsYgFFVBfuyixYJUlUFm7XiFZJSVQXXr1UXcndVBbe/psHXdVUFt7/a0RpTVQXXvWnA4UdVBdGvYBLYVlUFLrOaEaNTVQUZsW0UGlNVBQ6yHw7pdlUF169VF3J3VQWpG5sbCVJVBV0ZUBwaU1UFPRnzBE91VQUVHgAcklJVBRMdAAUrc1UFFR7FBj5VVQXpbMrJK3NVBQhpdclPdVUFEW4vxbRzVQUIaYHE13VVBVVu88c+VVUF6WzKyStzVQURbi/FtHNVBTFrtMPhR1UFEW4vxbRzVQUIaYHE13VVBR4jj1xHRlUFiie6UTVFVQUDJ6pcvkVVBTwiRVH7d1UFPCJFUft3VQU7JdRM6ldVBYonulE1RVUFiie6UTVFVQUtKchUxnRVBQMnqly+RVUFQY+bHL5FVQXPjAUWtVRVBfqOARLQRlUFJY2PGsZ0VQXPjAUWtVRVBUGPmxy+RVUFHiOPXEdGVQW/INZTLFRVBTwiRVH7d1UFjSvyrdAnVQWhK0mzVgFVBY0rwbbVEFUFFIP6BJIzVQUihmQDHBVVBVqGOQ4KFFUFkoMfEdAnVQVahjkOChRVBSKGZAMcFVUFAYm8BAkzVQXxiAQSeQNVBQJQoDopDlUFAFMAOnASVQUnU8RMkxRVBeBQtVHeAVUFJ1PETJMUVQUAUwA6cBJVBe1VYTobNFUFM1YpUaQ0VQXAWemH3gFVBRFZF4RvMVUFwFl7f14RVQXo5EHtigRVBXDkovtMEFUF+eKq/sQPVQUpousi+DFVBZ2jNyWBMlUFPaJFOsQPVQW0qpAWsg5VBZysgBTED1UF861kFxs0VQXzrWQXGzRVBaCr4hlwElUFKKipGCkOVQWBnRM6Ow9VBV2eEiPVL1UF25+eObIOVQUpousi+DFVBX6qphFMEFUF6KffEuYwVQXqpW8PCTNVBbarMQ6SM1UF6qVvDwkzVQVQqFENHBVVBbarMQ6SM1UFOudG/OYwVQUF6NXtXTBVBfjoaPDnEVUFsecS/zsPVQUSqNkVOw9VBSioqRgpDlUF6qVuFPgSVQXop98S5jBVBeqlbw8JM1UFOudG/OYwVQVw5KL7TBBVBejkQe2KBFUFBejV7V0wVQWSgx8R0CdVBVqGOQ4KFFUF8YgEEnkDVQXxiAQSeQNVBZCEaxzwAlUFd4ibHGcCVQWSgx8R0CdVBZCEaxzwAlUFg4JdFlYBVQWSgx8R0CdVBQCCdgmBE1UFFIP6BJIzVQUAgoEZ1RBVBYOCXRZWAVUFkIRrHPACVQVcV708gRNVBTNWKVGkNFUF7VVhOhs0VQXrV7JT1RBVBeBQtVHeAVUFFE/yPPgSVQUCUKA6KQ5VBRRPllVeEVUFSYpXCfgSVQXxiAQSeQNVBQGJvAQJM1UF9YoWFl4RVQUoqKkYKQ5VBbSqkBayDlUF861kFxs0VQUSqNkVOw9VBfnicu6BMlUF6ORB7YoEVQX54qr+xA9VBfeteRKBE1UFfqqmEUwQVQW2qzEOkjNVBZysgBTED1UF861kFxs0VQXbn545sg5VBSmi6yL4MVUFPaJFOsQPVQWBnRM6Ow9VBYGd3iTnEVUFXZ4SI9UvVQWoccrJ1S9VBYBwMMVdMFUFjXWLyfgxVQWNdaDEgTJVBS9w8cfnEVUFgHAwxV0wVQWoccrJ1S9VBVhzy8OKBFUFjXWgxIEyVQWAcDDFXTBVBZ5VdVzwAlUF4FC1Ud4BVQUzVilRpDRVBbhRolxnAlUFM1YpUaQ0VQXgULVR3gFVBSdTxEyTFFUF4FC1Ud4BVQW4UaJcZwJVBXVPyVRvMVUFd4ibHGcCVQXxiAQSeQNVBfWKFhZeEVUFeoqdGm8xVQV3iJscZwJVBfWKFhZeEVUFnlV1XPACVQUzVilRpDRVBetXslPVEFUFbQTV9aj+VQXtDPj5hfxVBYYbjvKX/VUFGR37+TH/VQXzK87q6/pVBQgaZuEO/VUFjSlF4XT7VQXzK4jXk/VVBYYbANCk9lUFGR1TyD/4VQXtDFDIG/ZVBW0Eucy291UFUQoiR6j+VQXvTO75hfxVBbk87fkx/1UFzi2+6uv6VQXvTEnIG/ZVBc4tedeT9VUFuTxIyD/4VQWoumdEtvdVBS800bhv81UFFDqnvEzxVQWzSrq1XvJVBe1Kobz481UFMlqErrLvVQV7SsWl1fFVBehXpqU68FUFMlqXnFnqVQWzSpeVa+tVBe1Kc44G7VUFFDp5juLqVQUvNJWSfexVBZu5Y6hv81UF2iCWvEzxVQVAEH+8+PNVBe0AYK6y71UF2iBrjuLqVQXtAHScWepVBUAQVI4G7VUF6dS4fX3sVQUMa9/3NuhVBQp0/fcT5lUFC4AM7CXnVQXLfxHzv+hVBYSJ2eB45FUF73xb3ZzmVQVhhbHZAeVVBSaDi9Eg31UFoHSc0DLgVQVib6TLzOFVBaFjkNCp31UFdl0710ThVQV9z2DNNuhVBUN4Wo4T5lUFzmtCjr/oVQUNXB2BeORVBUN4qWOp31UFDVyLcCDfVQXOa5BjzOFVBTPZ++xE4VUFkXa0vf3cVQVcgKa42tpVBU+FgKvr21UFoIh2sIbdVQVxhBaZyNlVBYh8HqFj21UFGHIbmPnUVQUJfpiU59NVBQVtmJST1lUFwWTGnHDUVQXIX4+mCtZVBVOtuCb93FUFIYTxei7YVQWJm7yO2tpVBeaPro6G3VUFAIIme8jZVQWtm4RncNRVBSqEVHPn01UFC5B2Z5PWVQVAET4pCtZVBWVVs3HE0VUFwVVZhzvRVQVsR1J4GM9VBb5PgWehz1UFN1cIatbSVQXGRNZjstBVBV9H2l5N0lUFuTd8XgbOVQUOM4Rjj85VBRk9p20p0FUF+zI6dcDJVQXNLTBorshVBc0t13day1UFBzZXgDfJVQUTQDuG0cpVBdpVQYdIylUFMDjph+PLVQU2Fr4G1tJVBawMUBxszFUFfgx+DcTRVQU2Fkkcfc1VBY/FEv/W0lUFAKd+6fXMVQUzxYrpfc1VBY/FAdTjy1UFWL53+6HPVQUZsnT7TdJVBfOmbfAGzlUFoaax6Y/OVQVlvrnXN8lVBQ+njuKuyFUFXrK211rLVQXboS4SbMxVBXyXmxw70VUFfJeTB8TRVQXsAKUG48tVBXYKUBwlyFUF7AAuHH3NVQWkCnsN0cpVBanFxBElyFUF2M/+BtHKVQXYz2AcSMpVBVGformLxlUFmopWvQLGVQU0lQOx38NVBfKorbJnxFUF7KjAt5zHVQVoqeuqecVVBQKvzqsUx1UFAq/EnM3CVQUkn8Cl8MRVBbuokZpWw1UFQ6qumLvBVQWDpZiUdb1VBXmYKpyHvlUFrJabliHAVQWQkIid/r1VBfmKTqiYv1UFsoppvQ+/VQVNi4yeqsBVBXcHQoKcx1UFIBuPezPBVQWsEO6Di8ZVBVUl1YcCxlUFRRapdUTCVQW1BY9iu8FVBTYH9HxnxFUF8wDLdRTHVQXsAJlmzcJVBVUlW2mqwFUFFhuXe+y8VQUuJc1ymL9VBT0l6YcPv1UFyB8JaP69VQV+CoRedb1VBXcZ0WAhwFUFgy9QOFK7VQXNLfIsybpVBa46pSymuFUFJEBZNkC6VQVDMmc6LrlVBfg4Zzrau1UFHkejLLe5VQXKQFIiTbNVBZsvfCBftFUFzi0NLdazVQWyMp8dxbJVBeY5nx3otFUF2irph1K7VQUvJwp+LrlVBd4qCn5jvFUFpOUUhB24VQU09ByEQLpVBVvxGo+3uVUFgua+kk2zVQX25r59lLdVBffyB33au1UFIePPgYK2VQVK39+FPLJVBUrfDpLotFUFTDEnWGO8VQWOQzVS+bVVBbg6P1pSu1UFOk2PXMm6VQXiPTRMC7dVBfsxK0CCtlUFrzE8VC65VQXNLVNQ2rtVBf4tFESUt1UFpEpzQHG1VQWFQzxSs7FVBSJM9ElftFUFJk2iXNazVQWfRnVAxbJVBfg1QTw8slUFc0JBPOi0VQVxKjB8X7RVBS8n83JxtVUFcSqHccWyVQWQyDs4GLBVBanFVC6Qr1UFsdHeLWytVQXg2jE2B69VBWrN7zn1rVUFStfDOaGwVQVO3qUtfq5VBf/alCQUqFUFP8hJIyapVQWpxWwunahVBTPNoiCLp1UFqcU6HjeqVQV213Ugr6lVBSAqrW8YsFUFLydNZ/WtVQUgKp9mKrFVBeLnbnDkrFUFM/JFbQevVQUz8nt4fq5VBWDnLXsUqFUFtuY9aVusVQXZ7rtlobBVBafjF21Jq1UFluDucAOnVQVK37Z5r6lVBfmCQDQqsVUFo5NpMMCqVQV3i/82GLBVBaebNjqQr1UFto5/KtKrVQV1iNIiSatVBQ6ERjH1rVUFAIKuLqGwVQW4hAImW6xVBYia3yA3qlUFm5NvMHqmVQWnm60pJqlVBZWbRTqdqFUFlpcoIYunVQUwjJ8fA6dVBXKVdR6vqVUFx6Ryz9+kVQV1i2nu8aVVBXWLbc9opVUFXotMxjOiVQXHpG7uV6RVBdmcLMEQoFUFsKRQxpmgVQUbkyvBvKJVBbCkFfkioVUFG5MQ/0WjVQVeixH5zqNVBdmcEv+qoVUFeKaXb1KcVQVxrkWM25xVBXim0YdknVUFJ6a+kiKhVQXqpbBo36RVBeqlX4dXpFUFJ6Z5YJmgVQVxrpdtyZtVBRKu0lsQoFUFL7iNbf6eVQUvuDyM7Z1VBci/uYd2nlUF0LfJW7yiVQXIv35vh59VBXe/YGAzolUF+dbJO+2dVQX53mhSzqNVBfnWSE5Fo1UFPM1sTqqhVQX53qtCdp5VBTzN7TvbnFUFqcUIQ2SdVQWpxcVSIqFVBVnf71nxpVUF799YRzOiVQVw31Y9h59VBe/fL1NopVUFj165NC+aVQXVa4ErQZtVBdVrATW4mlUFz24XNoOXVQUfb9kexZNVBR9vcynXlFUFz24XIB2ZVQUraZ8alZhVBY9eOSummVUFDFyxH3GWVQXzYXca+pZVBVtcDimikVUFW1xzHrSSVQUMXLI16JVVBZjO0aaikVUFsdT9rCuSVQXBzlCwtJJVBX7U9qAZkVUFttsLoU6UVQWC1CK8+pZVBZjOM71xllUF6tsSrTyTVQW62ze8lZhVBVzhab0dmVUFheGHsMWTVQVc4Qin15RVBQzmNykMmFUFKOD0KteUVQXq5dskTpRVBUbgqi6Dl1UFRe03KWCVVQUj7dskGZFVBUbw7zkvmlUF/uLvObiaVQUL86ou6JVVBe7y9CqikVUFbWdnPfaOVQWrcvM35I1VBe557zp/j1UFQmfxNweQVQUmczpKW41VBQxcaUNKjFUFlmc6Sm2OVQUBXXxK04xVBQxcsEo4i1UFDFz3UXqHVQVtZ4FXjIhVBe55/FkViVUFQmdyXZ6JVQWrcnNdA4hVBTLRJWZ/j1UFjdSrb+SNVQW4yDBwkJBVBaLBDWavilUF3MEDXFuNVQWiwR1wwYtVBQCCx0eQkFUFPqDiTjiLVQVrguFOwYtVBQGC+lUnilUFCZUgPAeQVQWmiR885I1VBT2gm0dKjFUFDJWjYZ6JVQU+oCpWeodVBamJo2EDiFUFJuP4GBWJVQWl6wEjJ4pVBSjgfiIDiFUFsvLbGPKGVQXA8tEOW41VBcDy7CLBi1UF0uoH+xZqVQUp7DrwRoRVBfDsYv7ghVUFGkB0CVeFVQXfP/wMzoRVBWk+kg0WalUFj9oBmmlnVQXb2c6VV4VVBbncCJkWalUFudxonuCFVQWP2gGaaWdVBbncCJkWalUFj9oBmmlnVQW53Gie4IVVBWnZHJ9phlUFae4S8Z5qVQWS8DLwNINVBULwGP5phlUF3z/8DM6EVQX7Pg4SWGZVBWk+kg0WalUF0uoH+xZqVQUL7CXvWGZVBSnsOvBGhFUF0UQoDQRpVQUcRGERz2VVBW5EmA29g1UFbkSYDb2DVQVUQsMLe2hVBTZDjAiNaVUFKew68EaEVQVp7hLxnmpVBfDsYv7ghVUF0UQoDQRpVQVuRJgNvYNVBTZDjAiNaVUFn9bwlY1pVQWP2gGaaWdVBZzW/5oEaVUFn9bwlY1pVQXb2c6VV4VVBY/aAZppZ1UFfH5ENeFmVQWDfxc2NINVBe96SDVYZlUFyHugUTVkVQX4fHVT8mdVBch7c12WWlUFAEOlDiKCVQVUQsMLe2hVBW5EmA29g1UFd3q+KJZaVQXpejwelXlVBfF81x+EWVUF9X/XNM9lVQV8fkQ14WZVBV5+oisNWlUFXn6iKw1aVQV/f9IgvWRVBfV/1zTPZVUFAEOlDiKCVQVuRJgNvYNVBRxEYRHPZVUFlfJj6YiAVQVm8gHZI2NVBTTzLeeaYlUFJfVeUiNjVQUw9rpSrGNVBVH062CaYlUF/uxE5/9/VQW17dvZ3F5VBdvvF+VlX1UF2+8X5WVfVQXQ8fbaZX5VBZXyY+mIgFUFlvoTYnZ/VQUt+eNS7X5VBXL7nV8RYlUFsHsxDSREVQV1f84Kd2BVBR9/gg52f1UFsHsxDSREVQV3ensJiIBVBXV/zgp3YFUFZvIB2SNjVQXQ8fbaZX5VBbryF8ZTfVUFte3b2dxeVQV97bjFQXxVBXDwK8cAYVUFMPa6UqxjVQVR9CI93H1VBVP3DD2IYVUFLfnjUu1+VQV7+Yw8ynxVBcj5/FLcXlUFIrDawrh7VQXpsyvRH1tVBSKwXtGnW1UFR/khiPtYVQXi9yh1MHtVBSX9Y5IMeVUFR/khiPtYVQXl9sqHuHtVBeL3KHUwe1UFDvYPckJdVQXi9yh1MHtVBeX2yoe4e1UF+HD5MFReVQVsdaoSuVxVBZBx3DGEeFUFT3v3FfJnVQVYf2cWvWRVBWh87hoeelUFT3v3FfJnVQVofO4aHnpVBXd6VxqVeVUFT3v3FfJnVQV3elcalXlVBXd6mRGWWlUFf3/SIL1kVQVefqIrDVpVBfF81x+EWVUF3XwjHR56VQV/f9IgvWRVBfF81x+EWVUF//ZLYndgVQWr93dS7l9VBZb6E2J2f1UFnXj+M6dbVQUbeLoxp3pVBZ14MRFCXVUF6bMr0R9bVQUisNrCuHtVBVSy08H7WFUFuJQZBel2VQWYkUcOYVdVBZiRRw5hV1UFzo62BGB2VQWYKKM6gFFVBTsl1EzqV1UFOyXUTOpXVQWrIn46cndVBakbmxsJUlUFEx0ABStzVQUus5oRo1NVBdG3gA9gdlUFm7XiFZJSVQXRt4YUT1ZVBZ5VKBGjclUFN1boEeZPVQVnVf0gblBVBZQh1iBuUFUFvyC8EeZPVQWhIl0f91BVBQhQkBMaclUF51KSFrFMVQW7UHchKExVBedSkhaxTFUFnlUoEaNyVQXXVJcgf3BVBQQnhxCRcVUF3ydpE11PVQWeJTofCHFVBTIlXg+bQ1UFBCeHEJFxVQVtIxQQwk1VBbdR1Q+bQ1UFjFMvEMJNVQWeVSgRo3JVBWdV/SBuUFUFw1USOG5vVQXXVJcgf3BVBbtQdyEoTFUFelNTN0tOVQWFUCM4XG5VBaEiXR/3UFUFwiNZN9ROVQW/IL43929VBZ4lOh8IcVUFNCYJIShMVQXpJTY45W5VBcouBwrTbVUFzS2yAvNIVQXjMewAakhVBTQxmwlYR1UF7DTwAjlsVQXAL48YSm1VBTQxmwlYR1UFwC+PGEptVQXKLgcK021VBc0txRuNSlUFyi4HCtNtVQXAL48YSm1VBZj8SzafS1UFI/xCObBrVQUq+NYZBUpVBW0jFBDCTVUFBCeHEJFxVQUcJFMfOU1VBeX0OjjzSFUF5fQYF41KVQWZ9UY5wmxVBeMx7ABqSFUFNDGbCVhHVQXKLgcK021VBfqOARLQRlUFV5Q+ESdrVQUpk4QcR0ZVBZzW/5oEaVUFj9oBmmlnVQVp2RyfaYZVBTZDjAiNaVUF3z/8DM6EVQUaQHQJV4VVBVRCwwt7aFUFaT5lF5ZaVQVtQP4Tq4JVBXk+hxc1ZFUFIUAED0ZlVQVC8Bj+aYZVBfDsYv7ghVUFae4S8Z5qVQVEg1TJ4WZVBVeEX8bPZVUFV4TKyTSDVQX7Pg4SWGZVBSFABA9GZVUFaT5lF5ZaVQXfP/wMzoRVBQBDpQ4iglUFIUAED0ZlVQVUQsMLe2hVBS18/sVGhFUFdH7KyTSDVQXYe6rInmpVBXR+vsRYZlUFIUAED0ZlVQX7Pg4SWGZVBd8//AzOhFUFAEOlDiKCVQVtQP4Tq4JVBSFABA9GZVUFAEOlDiKCVQUPRFsVEYFVBW1A/hOrglUFd3q+KJZaVQXxfNcfhFlVBV5+oisNWlUFHERhEc9lVQUPRFsVEYFVBQBDpQ4iglUFM0T1GJmBVQWwezENJERVBWl9vw8RYlUFd3o2D/9/VQUff4IOdn9VBX9/0iC9ZFUF9X/IHJmBVQX1f9c0z2VVBQ9EWxURgVUFM0T1GJmBVQVtQP4Tq4JVBW1A/hOrglUFM0T1GJmBVQV5PocXNWRVBX9/0iC9ZFUFXHu3HvJnVQX1f8gcmYFVBTk/xRvyZ1UFeT6HFzVkVQUzRPUYmYFVBc59aQiaYlUFdX/OCndgVQV3ensJiIBVBTD2ulKsY1UFq/d3Uu5fVQVR9OtgmmJVBav3d1LuX1UFLfnjUu1+VQWW+hNidn9VBdDx9tplflUFZvIB2SNjVQWV8mPpiIBVBQ/s9uURYlUFte3b2dxeVQX+7ETn/39VBdvvF+VlX1UFr+566iREVQX+7ETn/39VBdvvF+VlX1UFlfJj6YiAVQWv7nrqJERVBXDwK8cAYVUF0PH22mV+VQXb7xflZV9VBbryF8ZTfVUFcPArxwBhVQV97bjFQXxVBbryF8ZTfVUFLfnjUu1+VQXI+fxS3F5VBXL7nV8RYlUFJfVeUiNjVQVR9CI93H1VBTD2ulKsY1UFZvIB2SNjVQW68hfGU31VBTTzocTcfVUFte3b2dxeVQVw8CvHAGFVBdvvF+VlX1UFU/cMPYhhVQUt+eNS7X5VBav3d1LuX1UFe/mMPMp8VQUw9rpSrGNVBVP3DD2IYVUFq/d3Uu5fVQU0+UNzuVxVBSX9Y5IMeVUF4vcodTB7VQWp/amPVF5VBcj5/FLcXlUFe/mMPMp8VQX8+Qw+QXxVBX3tuMVBfFUFDe76w8p8VQW68hfGU31VBbryF8ZTfVUFDe76w8p8VQU086HE3H1VBVP3DD2IYVUFUfQiPdx9VQV7+Yw8ynxVBeL3KHUwe1UFDvYPckJdVQU0+UNzuVxVBWx1qhK5XFUFnXgxEUJdVQXAd4YSy11VBZ14MRFCXVUFG3i6Mad6VQXAd4YSy11VBcB3hhLLXVUFkHHcMYR4VQVsdaoSuVxVBcd09zAwXFUFG3i6Mad6VQXHdPcwMFxVBcB3hhLLXVUFG3i6Mad6VQWadBc2H1tVBcd09zAwXFUFnXj+M6dbVQXttu3ODHlVBYu3J9KEeFUF6bMr0R9bVQWQcdwxhHhVBcd09zAwXFUFmnQXNh9bVQVefqIrDVpVBe96SDVYZlUFd3q+KJZaVQV8fkQ14WZVBdK3Mc9UXlUFi7cn0oR4VQXttu3ODHlVBaKVqRksVFUF8XzXH4RZVQXpejwelXlVBd18Ix0eelUF//ZLYndgVQVR9OtgmmJVBav3d1LuX1UF5fbKh7h7VQUO9r6Sp1tVBQ72D3JCXVUF6bMr0R9bVQVUstPB+1hVBe227c4MeVUFGbFtFBpTVQXRr2AS2FZVBay5ecM+VVUFjbtfzz10VQW3UdUPm0NVBRRPsBNdT1UF8k+0EJFxVQUIUJATGnJVBQhpdclPdVUFEW4vxbRzVQW/ILwR5k9VBUshqxCjclUFbSMUEMJNVQWhIl0f91BVBb8gvBHmT1UFHCRTHzlNVQUcJFMfOU1VBQQnhxCRcVUFniU6HwhxVQXXVJcgf3BVBZ5VKBGjclUFZ1X9IG5QVQUUT7ATXU9VBQhQkBMaclUFu1B3IShMVQXnUpIWsUxVBQhQkBMaclUFt1HVD5tDVQXnUpIWsUxVBbdR1Q+bQ1UFnlUoEaNyVQV6U1M3S05VBddUlyB/cFUFw1USOG5vVQXnUpIWsUxVBS5nM8hLTlUFTmXKyW5vVQUuZ9fEXG5VBch7DEgIcVUF1n24TF1PVQXIe8ZPKExVBZQh1iBuUFUFoSJdH/dQVQW/IL43929VBWdV/SBuUFUFN1YmOPdvVQXDVRI4bm9VBbtQdyEoTFUF51KSFrFMVQV6U1M3S05VBcIjWTfUTlUFniU6HwhxVQXpJTY45W5VBRwkUx85TVUFoSJdH/dQVQUcJFMfOU1VBcIjWTfUTlUF5TBhGwVKVQXsNPACOWxVBVk1uwWfS1UFwC+PGEptVQU0JgkhKExVBWgmfjdcblUF6SU2OOVuVQUuZ9fEXG5VBU5lyslub1UFEmTEw+VuVQVOZcrJbm9VBRVijMj3b1UFEmTEw+VuVQXKYfvE1E5VBRJkxMPlblUFFWKMyPdvVQXAL48YSm1VBeUwYRsFSlUFzS3FG41KVQUq+NYZBUpVBfr17RsWS1UF5fQYF41KVQXl9BgXjUpVBfr17RsWS1UFmfVGOcJsVQX69e0bFktVBSP8Qjmwa1UFA/nvOXxJVQUq+NYZBUpVBZn1RjnCbFUF+vXtGxZLVQUD+e85fElVBTRenRjCbFUFfGHAE2pIVQX7YCYY80hVBQxc3xV8SVUF5F5YETlsVQV8YcATakhVBQxccxKwa1UFDFxzErBrVQV8YcATakhVBQxc3xV8SVUFG1yzEZ9LVQXkXlgROWxVBQxccxKwa1UFbSMUEMJNVQUcJFMfOU1VBb8gvBHmT1UFyi4HCtNtVQXNLcUbjUpVBc0tsgLzSFUF4zHsAGpIVQXsNPACOWxVBTQxmwlYR1UFFPES/wRpVQWS8DLwNINVBRTx+O7PZVUFQvAY/mmGVQXXvWnA4UdVBY27X889dFUF7EzTF78mVQWOSicbiUJVBWVLAw3vQFUF69v0XQBCVQW/3FlivyZVBRbchGF3QVUF29AHmhMkVQWYzvyYvyZVBYbRzZUAQlUFmM5inolCVQWYzvyYvyZVBdvQB5oTJFUF29AHmhMkVQXm0RyfEkNVBZjOYp6JQlUFEknTDUcnVQVGR9EaEkNVBQJH6gzdP1UFFtyEYXdBVQW/3FlivyZVBc3bp2YBI1UF7EzTF78mVQVlSwMN70BVBaVL7gsBI1UFZ9aIYK0lVQWC1x5hZkBVBfXW4WR4IlUFgtceYWZAVQUW2WVcNiZVBfXZyl8kJVUFZUsDDe9AVQWOSicbiUJVBRJJ0w1HJ1UFZ9aIYK0lVQUW2WVcNiZVBYLXHmFmQFUFwtT1lTYmVQXC1AibrSVVBdvQB5oTJFUFwtT1lTYmVQXb0AeaEyRVBYbRzZUAQlUFijj2GoojVQUoPAobASNVBXk3xRvdP1UFeKPQVd4gVQV4o6NhPxdVBRiipVebJFUFq9h1Yss+VQWC1x5hZkBVBfXZyl8kJVUFkDyADj8XVQXPOYwFLRZVBd47+gM+NlUFMzeEGngiVQWiOFQRthZVBYo49hqKI1UFojhUEbYWVQUzN4QaeCJVBXM3fgZnIVUFq9h1Yss+VQX11uFkeCJVBYLXHmFmQFUFAew+YTE9VQVN6wpfQx9VBRTs3FDMH1UFzPKErcwfVQWO8xW8Qx9VBfnx3K1VIFUFmPESX6g8VQXC7utcDhxVBdbwq1GGG1UFwu7rXA4cVQUB7D5hMT1VBb/sz1IOO1UFSu0gvR88VQVh7KW6uh5VBfvu962XO1UFF2csDc0AVQWqY2cOHzxVBVZjtQogHVUFF2csDc0AVQVWY7UKIB1VBVVoaQkxPVUFFOzcUMwfVQXa6/E9/DlVBb/sz1IOO1UF1vCrUYYbVQUq7gA/qR1VBRLxhj3qOFUF+fHcrVUgVQWm8CaYMh5VBY7zSZiFOlUF++73rZc7VQUA7guuhhtVBW7um5dzOVUFSK6qwmI4VQVIriHRURhVBWSqCtHIF1UFIfr6sqUVVQUP9lm9tjVVBW/7AaDZN1UFIfr6sqUVVQVv+wGg2TdVBXb8irJiOFUFFf3VnOsZVQV2/IqyYjhVBW/7AaDZN1UFc+mjW/0aVQXn6INcLTVVBQHlTT1iGVUF1b0BFZskVQWFvOIZxzZVBau5MxVnIVUF1b0BFZskVQVxvmsZPjZVBYW84hnHNlUF1b0BFZskVQVxvrkQPxdVBXG+axk+NlUFczd+BmchVQXPOYwFLRZVBaI4VBG2FlUF6jnZAsc2VQXPOYwFLRZVBXM3fgZnIVUF6/BpvSAdVQVK7SC9HzxVBY/wk62XHFUFyeGOXlEYVQXJ4ck76xlVBVviS1xQN1UFZKoK0cgXVQUHrLTBpRVVBUiuqsJiOFUFFIP6BJIzVQVahjkOChRVBVqGOQ4KFFUFAYm8BAkzVQUCUKA6KQ5VBSdTxEyTFFUFJ1PETJMUVQXtVWE6GzRVBV2eEiPVL1UF25+eObIOVQV+qqYRTBBVBeqlbw8JM1UFEqjZFTsPVQXqpW4U+BJVBQvka5ZML1UFKORAphcNVQVf4yuXjwxVBXHpEtMXDVUFmOia0aANVQU16vfDjwxVBaLp1ZjDLlUF5Oi7ptEIVQXJ5tabWglVBcnm1ptaCVUFy+TapSgtVQUL5GuWTC9VBfHjy8I6LlUFmuV70bEtVQUJ467FBgxVBZXloMFEAFUFkOdTwmsKVQXx48vCOi5VBfDnGZVEAFUFC+RrlkwvVQUH5nKVawpVBSjkQKYXDVUFy+TapSgtVQXk41W9FyxVBeTou6bRCFUFHulnvQUrVQUy5pe89ApVBZjomtGgDVUFNer66aAsVQVK55npfQtVBZrle9GxLVUFFOV66o4rVQWp5EzT0QhVBabYqwp8KlUFW9VvARMFVQVZ2XgDnAVVBUzWFgoCBFUFo9cLGfQpVQVN0jwD4ihVBUzWFgoCBFUFptirCnwqVQWj1wsZ9ClVBVnZYBw3B1UFo9cLGfQpVQWm2KsKfCpVBQ71tuZICFUFc/lVyq4GVQVo9bHpWShVBZDnU8JrClUFLOeR0eMJVQXx48vCOi5VBcb87uicBVUF6vvx6WspVQXG/LTHNwdVBVvVbwETBVUFptirCnwqVQVM1hYKAgRVBfGIBBJ5A1UFkIRrHPACVQWSgx8R0CdVBcLUCJutJVUF5tEcnxJDVQXb0AeaEyRVBRbZZVw2JlUFFtyEYXdBVQX12cpfJCVVBevb9F0AQlUF0NsMbD8XVQUx21loVD9VBWLbcWPvIVUFS9w4bN4gVQVGR9EaEkNVBRJJ0w1HJ1UFjkonG4lCVQVqgVHJiiNVBU6AysndP1UFToBgxngiVQXN26dmASNVBdDbDGw/F1UFYttxY+8hVQUW3IRhd0FVBavYdWLLPlUF9dnKXyQlVQVi23Fj7yFVBat5/8XvQFUFZ3fKyd0/VQVnd7bEASNVBf55sshHJ1UFYttxY+8hVQUW3IRhd0FVBc3bp2YBI1UFq9h1Yss+VQVi23Fj7yFVBTHbWWhUP1UFq9h1Yss+VQUx21loVD9VBVnX42i6PVUFkDyADj8XVQWiOFQRthZVBc85jAUtFlUF9dbhZHgiVQVZ1+Nouj1VBWfWXmxDPlUFq9h1Yss+VQUXZywNzQBVBWNlhw+6HlUFqmNnDh88VQVVaAoPqDxVBXM3fgZnIVUFMzeEGngiVQUzN3MCQz5VBVnX42i6PVUFMdtZaFQ/VQVn1l5sQz5VBTHbWWhUP1UFS9w4bN4gVQVn1l5sQz5VBXM3fgZnIVUFMzdzAkM+VQWdO3UEmyRVBZDaMHCbJFUFZ9ZebEM+VQVL3Dhs3iBVBQBlQQhDH1UFVWhpCTE9VQVWY7UKIB1VBfnx3K1VIFUFjvMVvEMfVQWP8JOtlxxVBY/wk62XHFUFSu0gvR88VQX77vetlztVBb/sz1IOO1UFAew+YTE9VQUU7NxQzB9VBXfywl26HlUFmPESX6g8VQXW8KtRhhtVBcLu61wOHFUFmPESX6g8VQXl70tizQBVBcLu61wOHFUF5e9LYs0AVQUB7D5hMT1VBSruAD+pHVUFv+zPUg47VQXa6/E9/DlVBcLu61wOHFUFKu4AP6kdVQXa6/E9/DlVBRLxhj3qOFUF++73rZc7VQVh7KW6uh5VBQDuC66GG1UFzPKErcwfVQX58dytVSBVBY7zSZiFOlUFFOzcUMwfVQVN6308hTpVBdrr8T38OVUF1vCrUYYbVQXC7utcDhxVBSruAD+pHVUFpvAmmDIeVQX77vetlztVBW7um5dzOVUFj/CTrZccVQX58dytVSBVBY/wk62XHFUFpvAmmDIeVQXa+SieYhlVBQ/2Wb22NVUFaPWluv0aVQVv+wGg2TdVBQDuC66GG1UFwO0Ymeo4VQVu7puXczlVBRLxhj3qOFUF2uvxPfw5VQVw8Mk7czlVBdrr8T38OVUFTet9PIU6VQVw8Mk7czlVBabwJpgyHlUFbu6bl3M5VQWO80mYhTpVBW/7AaDZN1UF2vkonmIZVQUV/dWc6xlVBQHlTT1iGVUFuOIgPXQaVQXJ4ck76xlVBcnhyTvrGVUFuOIgPXQaVQVb4ktcUDdVBbjiID10GlUF5+iDXC01VQW25ZRb2RhVBQHlTT1iGVUFW+JLXFA3VQW44iA9dBpVBbbllFvZGFUFW+JLXFA3VQXE5bVgyBdVBcnhjl5RGFUFtuWUW9kYVQVlp+bOtjVVBWSqCtHIF1UF+6Yn0i01VQXn6INcLTVVBcTltWDIF1UFtuWUW9kYVQWiOFQRthZVBSg8ChsBI1UFijj2GoojVQWQPIAOPxdVBaGmNM/9GlUFZafmzrY1VQX7pifSLTVVBQCCgRnVEFUFzzmMBS0WVQXqOdkCxzZVBd47+gM+NlUF6/BpvSAdVQWP8JOtlxxVBY7zFbxDH1UFdvyKsmI4VQUV/dWc6xlVBRX9ab1RGFUFZKoK0cgXVQVlp+bOtjVVBQestMGlFVUFnKyAFMQPVQX3rXkSgRNVBTrnRvzmMFUF+Oho8OcRVQXw5xmVRABVBYfq9ZgGDFUFounVmMMuVQWj6fiVOi5VBY11i8n4MVUFgHAwxV0wVQU16vfDjwxVBZDnU8JrClUFeenowkwvVQWY6JrRoA1VBSznkdHjCVUFNer3w48MVQUs55HR4wlVBZrle9GxLVUF8ePLwjouVQXL5NqlKC1VBSjkQKYXDVUFC+RrlkwvVQWH6vWYBgxVBeTou6bRCFUFounVmMMuVQXJ5tabWglVBfDnGZVEAFUFounVmMMuVQXJ5tabWglVBQvka5ZML1UF8OcZlUQAVQUy5pe89ApVBcvk2qUoLVUFyebWm1oJVQXk41W9FyxVBdldysn0ClUFpFqpyAUrVQXwX5LIFyxVBZrle9GxLVUFqeRM09EIVQUJ467FBgxVBXHpEtMXDVUFNer66aAsVQWY6JrRoA1VBSjkQKYXDVUF5ONVvRcsVQVf42m9oCxVBeTou6bRCFUFMuaXvPQKVQXJ5tabWglVBUrnmel9C1UFmuV70bEtVQUs55HR4wlVBRTleuqOK1UFmOia0aANVQVK55npfQtVBSznkdHjCVUFJdbKG64GVQVN0jwD4ihVBaPXCxn0KVUFstH+BUgIVQWp5EzT0QhVBRTleuqOK1UFa+TD6QUrVQWkWqnIBStVBaRaYMWOK1UF8F+SyBcsVQXwX5LIFyxVBaRaYMWOK1UF1l8fxaAsVQWXXKLDfQtVBdZfH8WgLFUFpFpgxY4rVQWj1wsZ9ClVBVnZYBw3B1UFJdbKG64GVQVz+VXKrgZVBcb8tMc3B1UFhft/zL8HVQXG/LTHNwdVBer78elrKVUFhft/zL8HVQWF+3/MvwdVBWj1selZKFUFc/lVyq4GVQVy+HrqJQZVBer78elrKVUFcvh66iUGVQWF+3/MvwdVBZ1mnRhrKVUFVmO/ExMFVQXHaNwVJQZVBdRjKBicBVUF6WVhEeIoVQXHaHISWShVBVZjvxMTBVUFx2hyElkoVQXHaNwVJQZVBVZjvxMTBVUFsWi/EUgIVQXHaHISWShVBellYRHiKFUFkOdTwmsKVQU16vfDjwxVBSznkdHjCVUFptirCnwqVQVZ2XgDnAVVBVnZYBw3B1UFW9VvARMFVQVM1hYKAgRVBU3SPAPiKFUFq0bFG60lVQUCR+oM3T9VBUZH0RoSQ1UFq0auC3giVQXo5EHtigRVBTrnRvzmMFUF"), +"format": 34896613431, +"index_count": 2496, +"index_data": PackedByteArray("UAEBAAIAUAFRAQAAUgFRAVABAgBSAVABUgFTAVEBUgFUAVMBAgBVAVIBVgFUAVIBVgFSAVUBAwBUAVYBAwBWAVcBVgFVAVgBVgFYAVcBAgBYAVUBWAFZAVcBWAFaAVkBAgBbAVgBWAFbAVoBWwECAAUAWwEEAFoBBgAIAFwBCAAJAFwBBgAHAAgACgALAAwACwANAAwAXQELAAoACwBdAV4BCwBeAV8BCwBgAQ0AYAELAGEBYAFhAWIBDgAPABAADgBjAQ8ADwBjAREAZAETABQAZAFlARIAZgFlAWQBFABmAWQBZgFnAWUBZgFoAWcBFABpAWYBagFoAWYBagFmAWkBFQBoAWoBFQBqAWsBagFpAWwBagFsAWsBFABsAWkBbAFtAWsBbAFuAW0BFABvAWwBbAFvAW4BbwEUABcAbwEWAG4BGAAaAHABGgAbAHABGAAZABoAHAAdAB4AHQAfAB4AcQEdABwAHQBxAXIBHQByAXMBHQB0AR8AdAEdAHUBdAF1AXYBIAAhACIAIAB3ASEAIQB3ASMAeAElACYAeAF5ASQAegF5AXgBJgB6AXgBegF7AXkBegF8AXsBJgB9AXoBfgF8AXoBfgF6AX0BJwB8AX4BJwB+AX8BfgF9AYABfgGAAX8BJgCAAX0BgAGBAX8BgAGCAYEBJgCDAYABgAGDAYIBgwEmACkAgwEoAIIBKgAsAIQBLAAtAIQBKgArACwALgAvADAALwAxADAAhQEvAC4ALwCFAYYBLwCGAYcBLwCIATEAiAEvAIkBiAGJAYoBMgAzADQAMgCLATMAMwCLATUAjAE3ADgAjAGNATYAjgGNAYwBOACOAYwBjgGPAY0BjgE5AI8BkAE5AI4BOACRAY4BkAGOAZEBkAGRAZIBOACSAZEBkAGSAZMBkgGUAZMBkgGVAZQBOACWAZIBkgGWAZUBlgE4ADsAlgE6AJUBPAA+AJcBPgA/AJcBPAA9AD4AQACYAUIAmAFDAEIAmQGYAUAAmAGZAZoBmAGaAUEAmAFBAJsBmAGcAUMAmAGbAZ0BnAGYAZ0BnAGdAZ4BRABFAEYARACfAUUARQCfAUcAoAGhAaIBoAGjAaQBpQGjAaABogGlAaABpQGmAaMBpQGnAaYBqAGnAaUBogGpAaUBqAGlAakBqAGpAaoBogGqAakBqAGqAasBqgGsAasBqgGtAawBogGuAaoBqgGuAa0BrgGiAa8BrgGwAa0BsQGyAbMBsQG0AbIBtQG2AbcBtgG4AbcBuQG2AbUBtgG5AboBtgG6AbsBtgG7AbwBtgG9AbgBtgG8Ab4BvQG2Ab4BvQG+Ab8BwAHBAcIBwwHEAcUBwwHGAcQBxwHIAckBygHLAcwBygHNAc4BzwHNAcoBzAHPAcoBzwHQAc0BzwHRAdABzAHSAc8B0wHRAc8B0wHPAdIB1AHRAdMB1AHTAdUB0wHSAdYB0wHWAdUBzAHWAdIB1gHXAdUB1gHYAdcBzAHZAdYB1gHZAdgB2QHMAdoB2QHbAdgB3AHdAd4B3QHfAd4B3AHgAd0B3AHhAeAB4gHhAdwB4QHiAeMB4QHjAeQB4QHlAeAB5QHmAeAB5QHnAeYB5gHnAegB4QHpAeUB6QHhAeoB6QHqAesB7AHtAe4B7gHvAewB7wHwAewB7wHxAfAB7gHyAe8B7gHzAfIB7gH0AfMB9AHuAfUB8wH0AfYB8wH2AfcB+AH5AfoB+wH8Af0B+wH9Af4B+wH/AfwB/AH/AQACAQL/AfsBAQL7AQIC+wH+AQIC/gEDAgICBAIFAgYCBQIHAgYCBAIIAgUCBAIJAggCCgIJAgQCCQIKAgsCCQILAgwCCQINAggCDQIOAggCDQIPAg4CDgIPAhACCQIRAg0CEQIJAhICEQISAhMCFAIVAhYCFwIYAhkCGQIaAhcCGgIbAhcCGgIcAhsCGQIdAhoCGQIeAh0CGQIfAh4CHwIZAiACHgIfAiECHwIiAiECHgIhAiMCJAIlAiYCJwIoAikCJwIpAioCJwIrAigCKAIrAiwCLQIrAicCLQInAi4CJwIqAi4CKgIvAi4CMAIxAjICMQIzAjICMAI0AjECMAI1AjQCNgI1AjACNQI2AjcCNQI3AjgCNQI5AjQCOQI6AjQCOQI7AjoCOgI7AjwCNQI9AjkCPQI1Aj4CPQI+Aj8CQAJBAkICQwJAAkICQAJEAkECRQJAAkMCQAJFAkYCRQJDAkcCSAJBAkQCSAJJAkECQQJJAkoCSQJIAksCTAJNAk4CTwJMAk4CTAJPAlACUAJPAlECTAJQAlICUgJTAkwCTAJTAk0CUgJUAlMCTQJTAlUCVQJTAlQCTQJVAlYCVwJWAlUCVQJUAlgCVwJVAlkCWAJZAlUCWAJaAlkCWwJcAl0CWwJdAl4CWwJfAlwCWwJeAmACYQJgAl4CYQJeAmICXwJjAlwCYwJfAmQCZAJfAmUCYwJkAmYCZwJoAmkCaAJqAmkCagJrAmwCaAJrAmoCawJoAm0CaAJuAm0CZwJvAmgCcAJuAmgCcAJoAm8CZwJwAm8CbgJwAnECcgJwAmcCcAJyAnMCcgJnAnQCdQJ2AncCdQJ4AnYCdgJ4AnkCdwJ2AnoCdwJ6AnsCfAJ6AnYCdgJ5AnwCfAJ9AnoCfAJ+An0CfAJ/An4CfwJ8AnkCfwJ5AoACgQKCAoMCgQKEAoICgwKFAoEChQKEAoECgwKGAoUChQKHAoQChAKHAogChwKFAokCiQKFAoYCiQKGAooCiwKMAo0CiwKOAowCjwKLAo0CiwKQAo4CjwKRAosCkgKQAosCkgKLApECkwKQApICkwKSApQCkgKRApUCjwKVApECkgKVApQCjwKWApUClQKXApQClQKWApgClQKYApcCmQKaApsCmwKcApkCmQKcAp0CmwKeApwCnwKgAqECoAKiAqECoAKfAqMCowKfAqQCoAKjAqUCogKgAqYCpgKgAqcCogKmAqgCqQKqAqsCqgKpAqwCqQKtAqwCqgKsAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDSABJAEoANgM3A00AOAM5A1EAOgM7A1UAPAM9A1kAWABXAFoAUABPAFIAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagA+Az8DbgBvAHAAQANxAEEDcgBzAHQAdQB2AHcAQgNDA3sARANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDfgB/AIAAdAN1A3YDdwN4A3kDegN7A3wDggCDAIQAfQN+A38DiACJAIoAgAOBA4IDgwOEA4UDgwOGA4QDhwOIA4kDhwOKA4gDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlAOXA5UDmAOZA5oDmAObA5kDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqAOrA6kDrAOtA64DrAOvA60DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1APXA9UD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD5wPqA+gD6wPsA+0D7gPvA/AD7gPxA+8D8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/AwAEAQQCBAMEBAQFBAYEBwQIBAkEBwQKBAgECwQMBA0EDgQPBBAEDgQRBA8EEgQTBBQEFQQWBBcEGAQZBBoEGAQbBBkEHAQdBB4EiwCMAB8EiwCOAIwAIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsEkQCSAJMAkQCUAJIAlQCWAJcAlQCYAJYAUwBWAFQASwBOAEwAmQCaAJsAmQCcAJoAnQCeAJ8AnQCgAJ4AoQCiAKMApAClAKYApACnAKUAegB8AH0AegB5AHwALASoAC0EqQCqAKsAawBtAGwAeAAuBC8ErACtAK4AMAQxBDIEMAQzBDEErwCwALEANASyADUEswC0ALUAtgC3ALgANgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ESwROBEwETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEXgRhBF8EYgRjBGQEZQRmBGcEZQRoBGYEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEfgSBBH8EggSDBIQEhQSGBIcEhQSIBIYEiQSKBIsEjASNBI4EuQC6ALsAuQC8ALoAjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EmwSeBJwEvQC+AL8AwADBAMIAhgCHAIUAwwDEAMUAxgDHAMgAyQDKAMsAjwCNAJAAnwSgBIEAoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BAAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFzADNAM4AKAXQACkFKgXUACsFLAXYAC0FLgXcAC8F3QDeANsA1QDWANMA3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gAwBTEFMgXzADMF8gD0APUA9gD3APgA+QD6APsANAX+ADUFNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFAgEDAQQBZgVnBWgFaQVqBWsFbAVtBW4FBgEHAQgBbwVwBXEFDAENAQ4BcgVzBXQFdQV2BXcFdQV4BXYFeQV6BXsFeQV8BXoFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFhgWJBYcFigWLBYwFigWNBYsFjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFmgWdBZsFngWfBaAFngWhBZ8FogWjBaQFpQWmBacFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtAW1BbYFtwW4BbkFugW7BbwFvQW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFxgXJBccFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF2QXcBdoF3QXeBd8F4AXhBeIF4AXjBeEF5AXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF+QX8BfoF/QX+Bf8FAAYBBgIGAAYDBgEGBAYFBgYGBwYIBgkGCgYLBgwGCgYNBgsGDgYPBhAGDwEQAREBDwERBhABEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GFQEWARcBFQEYARYBGQEaARsBGQEcARoB1wDZANoAzwDRANIAHQEeAR8BHQEgAR4BIQEiASMBIQEkASIBJQEmAScBKAEpASoBKAErASkB/wAAAf0A/wABAQABHgYfBiwBLQEuAS8B8ADvAPEA/AAgBiEGMAExATIBIgYjBiQGIgYlBiMGMwE0ATUBJgYnBjYBNwE4ATkBOgE7ATwBKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GPQZABj4GQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUAZTBlEGVAZVBlYGVwZYBlkGVwZaBlgGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcAZzBnEGdAZ1BnYGdwZ4BnkGdwZ6BngGewZ8Bn0GfgZ/BoAGPQE+AT8BPQFAAT4BgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GjQaQBo4GQQFCAUMBRAFFAUYBCgEJAQsBRwFIAUkBSgFLAUwBTQFOAU8BEwEUARIBkQYFAZIG"), +"lods": [2.2831619, PackedByteArray("AAABAAIAAwAAAAIAAwACAAQABAACAAUABgAHAAgACAAJAAYACgALAAwACwANAAwADgAPABAADwAOABEAEgATABQAFAAVABIAFAAWABUAFgAUABcAGAAZABoAGgAbABgAHAAdAB4AHQAfAB4AIAAhACIAIQAgACMAJAAlACYAJgAnACQAJgAoACcAKAAmACkAKgArACwALAAtACoALgAvADAALwAxADAAMgAzADQAMwAyADUANgA3ADgAOAA5ADYAOAA6ADkAOgA4ADsAPAA9AD4APgA/ADwAQABBAEIAQQBDAEIARABFAEYARQBEAEcASABJAEoASwBMAE0ASwBOAEwATwBQAFEAUABPAFIAUwBUAFUAUwBWAFQAVwBYAFkAWABXAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAawBtAGwAbgBvAHAAbgBxAG8AcgBzAHQAdQB2AHcAeAB2AHUAeQB6AHsAegB5AHwAegB8AH0AfgB/AIAAfwB+AIEAggCDAIQAhQCCAIYAhgCHAIUAiACJAIoAiwCMAI0AiwCOAIwAjwCNAJAAkQCSAJMAkQCUAJIAlQCWAJcAlQCYAJYAmQCaAJsAmQCcAJoAnQCeAJ8AnQCgAJ4AoQCiAKMApAClAKYApACnAKUApgCoAKQAqQCqAKsArACtAK4ArwCwALEAsACyALEAswC0ALUAtgC3ALgAuQC6ALsAuQC8ALoAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEAzwDRANIA0wDUANUA1QDWANMA1wDYANkA1wDZANoA2wDcAN0A3QDeANsA3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8ADvAPEA8gDzAPQA8gD0APUA9gD3APgA+QD6APsA/AD5APsA/QD+AP8A/wAAAf0A/wABAQABAgEDAQQBBAEFAQIBBgEHAQgBCQEKAQYBCgEJAQsBDAENAQ4BDwEQAREBDwESARABEwEUARIBFQEWARcBFQEYARYBGQEaARsBGQEcARoBHQEeAR8BHQEgAR4BIQEiASMBIQEkASIBJQEmAScBKAEpASoBKAErASkBKwEoASwBLQEuAS8BMAExATIBMwE0ATUBNQE0ATYBNwE4ATkBOgE7ATwBPQE+AT8BPQFAAT4BQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8B"), 3.424743, PackedByteArray("AAABAAIAAwAAAAIAAwACAAQABAACAAUABgAHAAgACAAJAAYACgALAAwACwANAAwADgAPABAADwAOABEAEgATABQAFAAVABIAFAAWABUAFgAUABcAGAAZABoAGgAbABgAHAAdAB4AHQAfAB4AIAAhACIAIQAgACMA")], +"material": ExtResource("1_f8tat"), +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 1683, +"vertex_data": PackedByteArray("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") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_f8tat") diff --git a/entities/mecha/assets/3d/mecha-body.blend b/entities/mecha/assets/3d/mecha-body.blend new file mode 100644 index 0000000..043d3e5 Binary files /dev/null and b/entities/mecha/assets/3d/mecha-body.blend differ diff --git a/entities/mecha/assets/3d/mecha-body.blend.import b/entities/mecha/assets/3d/mecha-body.blend.import new file mode 100644 index 0000000..8965aff --- /dev/null +++ b/entities/mecha/assets/3d/mecha-body.blend.import @@ -0,0 +1,71 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://hq2acth6vm2d" +path="res://.godot/imported/mecha-body.blend-9265dc8fca82c0eb6c666e9c3b7ef0a5.scn" + +[deps] + +source_file="res://entities/mecha/assets/3d/mecha-body.blend" +dest_files=["res://.godot/imported/mecha-body.blend-9265dc8fca82c0eb6c666e9c3b7ef0a5.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Material": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/materials/default3d.tres", +"use_external/path": "uid://41afldgohk0o" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/entities/mecha/assets/3d/mecha-body.blend1 b/entities/mecha/assets/3d/mecha-body.blend1 new file mode 100644 index 0000000..319e360 Binary files /dev/null and b/entities/mecha/assets/3d/mecha-body.blend1 differ diff --git a/entities/mecha/assets/3d/mecha-leg.blend b/entities/mecha/assets/3d/mecha-leg.blend new file mode 100644 index 0000000..4a3e154 Binary files /dev/null and b/entities/mecha/assets/3d/mecha-leg.blend differ diff --git a/entities/mecha/assets/3d/mecha-leg.blend.import b/entities/mecha/assets/3d/mecha-leg.blend.import new file mode 100644 index 0000000..e66f8b9 --- /dev/null +++ b/entities/mecha/assets/3d/mecha-leg.blend.import @@ -0,0 +1,71 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cahdsj2xg25fy" +path="res://.godot/imported/mecha-leg.blend-6470342e2c60263cb402b38e461944d0.scn" + +[deps] + +source_file="res://entities/mecha/assets/3d/mecha-leg.blend" +dest_files=["res://.godot/imported/mecha-leg.blend-6470342e2c60263cb402b38e461944d0.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Material": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/materials/default3d.tres", +"use_external/path": "uid://41afldgohk0o" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/entities/mecha/assets/3d/mecha-leg.blend1 b/entities/mecha/assets/3d/mecha-leg.blend1 new file mode 100644 index 0000000..827aefb Binary files /dev/null and b/entities/mecha/assets/3d/mecha-leg.blend1 differ diff --git a/entities/mecha/assets/textures/pointer.svg b/entities/mecha/assets/textures/pointer.svg new file mode 100644 index 0000000..5bf78a4 --- /dev/null +++ b/entities/mecha/assets/textures/pointer.svg @@ -0,0 +1,70 @@ + + + + + + + + + diff --git a/entities/mecha/assets/textures/pointer.svg.import b/entities/mecha/assets/textures/pointer.svg.import new file mode 100644 index 0000000..c70895d --- /dev/null +++ b/entities/mecha/assets/textures/pointer.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvgqy34aw6xfc" +path.s3tc="res://.godot/imported/pointer.svg-f098bd9bb13ed2213cbb52b3b3bd4f05.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://entities/mecha/assets/textures/pointer.svg" +dest_files=["res://.godot/imported/pointer.svg-f098bd9bb13ed2213cbb52b3b3bd4f05.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=5.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/entities/mecha/mecha.gd b/entities/mecha/mecha.gd new file mode 100644 index 0000000..d3a7fa5 --- /dev/null +++ b/entities/mecha/mecha.gd @@ -0,0 +1,142 @@ +@tool +extends CharacterBody3D +class_name Mecha + +const STEP_MOVE_DISPLACEMENT = 3 +const RECOIL_STRENGHT = 0.5 +const MOUSE_SENSIVITY = 0.01 +const ZOOM_SENSIVITY = 1. + +const MAX_ZOOM = 60. +const MIN_ZOOM = 15. + +const MAX_HP : float = 50. + +signal died + +@export var hp : float = MAX_HP + +@export var max_speed : float = 15. +@export var turn_speed : float = 5. + +var destination := Vector2() + +@onready var legs : Array[MechaLeg] = [ + %Leg1, + %Leg2, + %Leg3, + %Leg4, +] + +var turn_normal : Vector2 = Vector2.UP + +var selected_item = 0 + +var current_recoil = 0. + +func _ready(): + for l in legs: + l.step.connect(next_leg_can_step) + + +func next_leg_can_step(): + for l in legs: + l.can_step = false + await get_tree().create_timer(MechaLeg.STEP_DURATION / len(legs)).timeout + for l in legs: + l.can_step = true + + +func _process(delta): + if not Engine.is_editor_hint(): + var target = calculate_target_position() + %Target.global_position = target + + var target_turn = (Vector2(position.x,position.z) - Vector2(target.x,target.z)).normalized() + + turn_normal = lerp( + turn_normal, + target_turn, + min(turn_speed * delta, 1.) + ) + + var speed = 0. + var item_used = false + + for i in range(len(%Inventory.get_children())): + var item = %Inventory.get_children()[i] + if item is Weapon: + var used = item.process_fire( + delta, + self, + selected_item == i and Input.is_action_pressed("fire") + ) + if used: + item_used = true + + if not item_used and Input.is_action_pressed("move_to"): + speed = max_speed + + var front_factor = 1 - (turn_normal - target_turn).length() / 2. + + velocity = position.direction_to(target) * speed * front_factor + + %Model.rotation.y = - turn_normal.angle() + + # Recoil + %Model.position = Vector3(turn_normal.x, 0, turn_normal.y) * current_recoil * RECOIL_STRENGHT + current_recoil = lerp(current_recoil, 0., 0.5) + + %StepTargets.position.x = lerp( + 0, + -STEP_MOVE_DISPLACEMENT, + speed/max_speed + ) + + %Camera3D.look_at(self.position) + + move_and_slide() + +func calculate_target_position() -> Vector3: + var camera : Camera3D = get_viewport().get_camera_3d() + + if camera: + var ray_normal := camera.project_ray_normal(get_viewport().get_mouse_position()) + var ray_origin := camera.project_ray_origin(get_viewport().get_mouse_position()) + + var plane = Plane(Vector3.UP, 0) + var intersection = plane.intersects_ray(ray_origin, ray_normal) + if intersection: + return intersection + return global_position + +func get_target_angle() -> float: + return - turn_normal.angle() + PI / 2 + +func get_projectile_spwan_point() -> Vector3: + return global_position + Vector3.UP * 2. + +func add_recoil(recoil : = 1.): + current_recoil += recoil + +func hit(damage = 1.): + hp = max(0, hp - damage) + if hp == 0: + die() + +func die(): + died.emit() + +func _unhandled_input(event): + if Input.is_action_just_pressed("zoom_in"): + %Camera3D.position.z = max(MIN_ZOOM, %Camera3D.position.z - ZOOM_SENSIVITY) + if Input.is_action_just_pressed("zoom_out"): + %Camera3D.position.z = min(MAX_ZOOM, %Camera3D.position.z + ZOOM_SENSIVITY) + if event is InputEventMouseMotion and Input.is_action_pressed("turn_camera") and Input.mouse_mode == Input.MOUSE_MODE_VISIBLE: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + %CameraPivot.rotation.y -= event.relative.x * MOUSE_SENSIVITY + %CameraPivot.rotation.x -= event.relative.y * MOUSE_SENSIVITY + if %CameraPivot.rotation.x > deg_to_rad(-20): + %CameraPivot.rotation.x = deg_to_rad(-20) + if %CameraPivot.rotation.x < deg_to_rad(-80): + %CameraPivot.rotation.x = deg_to_rad(-80) diff --git a/entities/mecha/mecha.gd.uid b/entities/mecha/mecha.gd.uid new file mode 100644 index 0000000..f17509c --- /dev/null +++ b/entities/mecha/mecha.gd.uid @@ -0,0 +1 @@ +uid://bbjxgsv6p27ly diff --git a/entities/mecha/mecha.tscn b/entities/mecha/mecha.tscn new file mode 100644 index 0000000..6351972 --- /dev/null +++ b/entities/mecha/mecha.tscn @@ -0,0 +1,94 @@ +[gd_scene format=3 uid="uid://0t1qprxnrxpw"] + +[ext_resource type="Script" uid="uid://bbjxgsv6p27ly" path="res://entities/mecha/mecha.gd" id="1_ariye"] +[ext_resource type="PackedScene" uid="uid://hq2acth6vm2d" path="res://entities/mecha/assets/3d/mecha-body.blend" id="1_wfen8"] +[ext_resource type="PackedScene" uid="uid://dhgclnvdm41nl" path="res://entities/mecha/mecha_leg.tscn" id="2_p6u1l"] +[ext_resource type="Texture2D" uid="uid://dvgqy34aw6xfc" path="res://entities/mecha/assets/textures/pointer.svg" id="4_ua006"] +[ext_resource type="Script" uid="uid://7s4jtqkpp21e" path="res://entities/mecha/weapons/gatling/gatling.gd" id="5_pfbkk"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_g4v7s"] +height = 5.0075684 +radius = 2.546875 + +[node name="Mecha" type="CharacterBody3D" unique_id=608967332] +axis_lock_linear_y = true +axis_lock_angular_x = true +axis_lock_angular_z = true +motion_mode = 1 +script = ExtResource("1_ariye") +max_speed = 20.0 + +[node name="Model" type="Node3D" parent="." unique_id=1153097662] +unique_name_in_owner = true + +[node name="mecha-body" parent="Model" unique_id=479724907 instance=ExtResource("1_wfen8")] +transform = Transform3D(1.3113416e-07, 0, -1, 0, 1, 0, 1, 0, 1.3113416e-07, 0, 2, 0) + +[node name="Leg1" parent="Model" unique_id=1161871766 instance=ExtResource("2_p6u1l")] +unique_name_in_owner = true +transform = Transform3D(-0.70710665, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, -0.70710665, 0, 2, 0) +step_target_path = NodePath("../StepTargets/Marker3D") + +[node name="Leg2" parent="Model" unique_id=1040806054 instance=ExtResource("2_p6u1l")] +unique_name_in_owner = true +transform = Transform3D(0.70710677, 0, -0.70710665, 0, 1, 0, 0.70710665, 0, 0.70710677, 0, 2, 0) +step_target_path = NodePath("../StepTargets/Marker3D2") + +[node name="Leg3" parent="Model" unique_id=636817449 instance=ExtResource("2_p6u1l")] +unique_name_in_owner = true +transform = Transform3D(0.70710665, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710665, 0, 2, 0) +step_target_path = NodePath("../StepTargets/Marker3D3") + +[node name="Leg4" parent="Model" unique_id=373252400 instance=ExtResource("2_p6u1l")] +unique_name_in_owner = true +transform = Transform3D(-0.70710677, 0, 0.70710665, 0, 1, 0, -0.70710665, 0, -0.70710677, 0, 2, 0) +step_target_path = NodePath("../StepTargets/Marker3D4") + +[node name="StepTargets" type="Node3D" parent="Model" unique_id=1107229276] +unique_name_in_owner = true + +[node name="Marker3D" type="Marker3D" parent="Model/StepTargets" unique_id=1883887265] +transform = Transform3D(-0.7071066, 0, -0.7071067, 0, 1, 0, 0.7071067, 0, -0.7071066, -2.1213202, 0, 2.1213205) + +[node name="Marker3D2" type="Marker3D" parent="Model/StepTargets" unique_id=2083428784] +transform = Transform3D(0.7071067, 0, -0.7071066, 0, 1, 0, 0.7071066, 0, 0.7071067, 2.1213205, 0, 2.1213202) + +[node name="Marker3D3" type="Marker3D" parent="Model/StepTargets" unique_id=203630463] +transform = Transform3D(0.7071066, 0, 0.7071067, 0, 1, 0, -0.7071067, 0, 0.7071066, 2.12132, 0, -2.1213207) + +[node name="Marker3D4" type="Marker3D" parent="Model/StepTargets" unique_id=1646251219] +transform = Transform3D(-0.7071067, 0, 0.7071066, 0, 1, 0, -0.7071066, 0, -0.7071067, -2.1213207, 0, -2.1213205) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=781282910] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5037842, 0) +shape = SubResource("CylinderShape3D_g4v7s") + +[node name="TargetContainer" type="Node" parent="." unique_id=857862335] + +[node name="Target" type="Node3D" parent="TargetContainer" unique_id=871238190] +unique_name_in_owner = true + +[node name="Sprite3D" type="Sprite3D" parent="TargetContainer/Target" unique_id=328289766] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9376632, -0.07640457) +modulate = Color(0.79607844, 0.2627451, 0.3647059, 1) +pixel_size = 0.02 +billboard = 1 +no_depth_test = true +texture = ExtResource("4_ua006") + +[node name="CameraPivot" type="Node3D" parent="." unique_id=1668504271] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 0.8660253, 0.49999997, 0, -0.49999997, 0.8660253, 0, 0, 0) + +[node name="Camera3D" type="Camera3D" parent="CameraPivot" unique_id=2082056518] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50) + +[node name="Inventory" type="Node3D" parent="." unique_id=1873054596] +unique_name_in_owner = true + +[node name="Gatling" type="Node" parent="Inventory" unique_id=2131873567] +script = ExtResource("5_pfbkk") +metadata/_custom_type_script = "uid://7s4jtqkpp21e" + +[editable path="Model/mecha-body"] diff --git a/entities/mecha/mecha_leg.gd b/entities/mecha/mecha_leg.gd new file mode 100644 index 0000000..1c2867d --- /dev/null +++ b/entities/mecha/mecha_leg.gd @@ -0,0 +1,32 @@ +@tool +extends Node3D +class_name MechaLeg + +const STEP_DURATION = 0.15 +signal step + +@export_node_path("Node3D") var step_target_path : NodePath +@onready var local_target : Node3D = %LocalTarget + +@export var step_distance: float = 5 + +@export var can_step = true + +func _process(_delta): + if step_target_path and can_step: + var step_target : Node3D = get_node(step_target_path) as Node3D + var dist := step_target.global_position.distance_to(local_target.global_position) + if dist > step_distance: + step.emit() + tween_step(get_node(step_target_path).global_position) + + +func tween_step(target_pos: Vector3): + var tween = create_tween().set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_OUT) + + tween.set_parallel(true) + tween.tween_property(local_target, "global_position:x", target_pos.x, STEP_DURATION * 0.7) + tween.tween_property(local_target, "global_position:z", target_pos.z, STEP_DURATION * 0.7) + tween.tween_property(local_target, "global_position:y", target_pos.y + 1.5, STEP_DURATION * 0.5) + tween.set_parallel(false) + tween.tween_property(local_target, "global_position:y", target_pos.y, STEP_DURATION * 0.3) \ No newline at end of file diff --git a/entities/mecha/mecha_leg.gd.uid b/entities/mecha/mecha_leg.gd.uid new file mode 100644 index 0000000..dae6263 --- /dev/null +++ b/entities/mecha/mecha_leg.gd.uid @@ -0,0 +1 @@ +uid://brd008shv85w7 diff --git a/entities/mecha/mecha_leg.tscn b/entities/mecha/mecha_leg.tscn new file mode 100644 index 0000000..a2975c2 --- /dev/null +++ b/entities/mecha/mecha_leg.tscn @@ -0,0 +1,57 @@ +[gd_scene format=3 uid="uid://dhgclnvdm41nl"] + +[ext_resource type="PackedScene" uid="uid://cahdsj2xg25fy" path="res://entities/mecha/assets/3d/mecha-leg.blend" id="1_h7rhd"] +[ext_resource type="Script" uid="uid://brd008shv85w7" path="res://entities/mecha/mecha_leg.gd" id="1_rf6lx"] + +[node name="MechaLeg" type="Node3D" unique_id=1161871766] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.673074, 0.8926722, -2.4868906) +script = ExtResource("1_rf6lx") +step_target_path = NodePath("StepTarget") +step_distance = 4.0 + +[node name="StepTarget" type="Marker3D" parent="." unique_id=1875541333] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, -2, 0) + +[node name="mecha-leg" parent="." unique_id=597959552 instance=ExtResource("1_h7rhd")] +transform = Transform3D(0.83249575, -0.55403143, 0, 0.55403143, 0.83249575, 0, 0, 0, 1, -0.018096328, 0, -0.013853073) + +[node name="Skeleton3D" parent="mecha-leg/Armature" parent_id_path=PackedInt32Array(597959552, 1015042136) index="0" unique_id=1015525704] +bones/0/rotation = Quaternion(-3.2671387e-08, -1.890937e-08, -0.86549115, 0.5009242) +bones/0/scale = Vector3(0.99999994, 0.99999994, 1) +bones/1/position = Vector3(7.566918e-08, 2, -1.2818292e-14) +bones/1/rotation = Quaternion(-2.992432e-08, 6.2881918e-15, -0.39635947, 0.9180954) +bones/1/scale = Vector3(1.0000002, 1.0000002, 1) +bones/2/position = Vector3(6.1847814e-08, 2.1000001, 3.2634116e-14) +bones/2/rotation = Quaternion(-2.8624317e-08, -1.0078329e-14, -0.3791404, 0.92533916) + +[node name="Bone_001" parent="mecha-leg/Armature/Skeleton3D" index="0" unique_id=442116879] +transform = Transform3D(-0.91758627, -0.39747998, 0.006730333, 0.39629143, -0.9132409, 0.094576165, -0.031445723, 0.089448966, 0.9954949, 1.6874223, -1.0735638, 0.008158923) + +[node name="Bone" parent="mecha-leg/Armature/Skeleton3D" index="1" unique_id=1147044007] +transform = Transform3D(-0.5367859, 0.84371114, -0.00349133, -0.8437184, -0.53678185, 0.0021121316, -9.205331e-05, 0.0040794616, 0.99999166, 0, 0, 0) + +[node name="CCDIK3D" type="CCDIK3D" parent="mecha-leg/Armature/Skeleton3D" index="2" unique_id=720183381] +angular_delta_limit = 0.606676447993229 +deterministic = true +setting_count = 1 +settings/0/target_node = NodePath("../../../../Node/LocalTarget") +settings/0/root_bone_name = "Bone" +settings/0/root_bone = 0 +settings/0/end_bone_name = "Bone.002" +settings/0/end_bone = 2 +settings/0/extend_end_bone = false +settings/0/joint_count = 3 +settings/0/joints/0/rotation_axis = 3 +settings/0/joints/0/limitation = null +settings/0/joints/1/rotation_axis = 3 +settings/0/joints/1/limitation = null +settings/0/joints/2/rotation_axis = 3 +settings/0/joints/2/limitation = null + +[node name="Node" type="Node" parent="." unique_id=196901171] + +[node name="LocalTarget" type="Marker3D" parent="Node" unique_id=1076144472] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3219225, -1.137534, -2.3036175) + +[editable path="mecha-leg"] diff --git a/entities/mecha/weapons/gatling/bullet/bullet.gd b/entities/mecha/weapons/gatling/bullet/bullet.gd new file mode 100644 index 0000000..ff1d765 --- /dev/null +++ b/entities/mecha/weapons/gatling/bullet/bullet.gd @@ -0,0 +1,24 @@ +extends Node3D +class_name Bullet + +const MAX_LIFETIME = 3. + +var damage : float = 10. +var speed : float = 150. +var lifetime : float = 0. + +@onready var raycast : RayCast3D = %RayCast3D + +func _process(delta): + lifetime += delta + position += transform.basis * Vector3(0,0,-speed) * delta + + if raycast.is_colliding(): + if raycast.get_collider() is Alien: + raycast.get_collider().hit(damage) + queue_free() + if raycast.get_collider() is StaticBody3D: + queue_free() + + if lifetime > MAX_LIFETIME: + queue_free() \ No newline at end of file diff --git a/entities/mecha/weapons/gatling/bullet/bullet.gd.uid b/entities/mecha/weapons/gatling/bullet/bullet.gd.uid new file mode 100644 index 0000000..a222fa8 --- /dev/null +++ b/entities/mecha/weapons/gatling/bullet/bullet.gd.uid @@ -0,0 +1 @@ +uid://es5nf3pho7t1 diff --git a/entities/mecha/weapons/gatling/bullet/bullet.tscn b/entities/mecha/weapons/gatling/bullet/bullet.tscn new file mode 100644 index 0000000..7485ac6 --- /dev/null +++ b/entities/mecha/weapons/gatling/bullet/bullet.tscn @@ -0,0 +1,28 @@ +[gd_scene format=3 uid="uid://da2dnjy802y1l"] + +[ext_resource type="Script" uid="uid://es5nf3pho7t1" path="res://entities/mecha/weapons/gatling/bullet/bullet.gd" id="1_s22gb"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_yf5fn"] +radius = 0.328125 +height = 2.694336 +radial_segments = 4 +rings = 1 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_57qmd"] +shading_mode = 0 +albedo_color = Color(0.99215686, 0.9372549, 0.56078434, 1) +disable_receive_shadows = true + +[node name="Bullet" type="Node3D" unique_id=226363088] +script = ExtResource("1_s22gb") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=564603597] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0) +mesh = SubResource("CapsuleMesh_yf5fn") +surface_material_override/0 = SubResource("StandardMaterial3D_57qmd") + +[node name="RayCast3D" type="RayCast3D" parent="." unique_id=888262706] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, -1.3228955) +target_position = Vector3(0, -3, 0) +collide_with_areas = true diff --git a/entities/mecha/weapons/gatling/gatling.gd b/entities/mecha/weapons/gatling/gatling.gd new file mode 100644 index 0000000..135daf2 --- /dev/null +++ b/entities/mecha/weapons/gatling/gatling.gd @@ -0,0 +1,49 @@ +extends Weapon +class_name Gatling + +const BULLET_SCENE : PackedScene = preload("res://entities/mecha/weapons/gatling/bullet/bullet.tscn") + +var max_bullet_rate : float = 100. +var min_bullet_rate : float = 1. +var bullet_dispersion : float = 0.03 +var bullet_rate := min_bullet_rate +var bullet_acc = 0.1 +var bullet_decc = 1. +var time_shooting = 0. + +func process_fire(delta : float, mecha : Mecha, shoot : bool) -> bool: + if shoot: + bullet_rate = lerp( + bullet_rate, + max_bullet_rate, + min(bullet_acc * delta, 1) + ) + else : + bullet_rate = lerp( + bullet_rate, + min_bullet_rate, + min(bullet_decc * delta, 1) + ) + + time_shooting += delta + + if shoot: + for i in range(roundi(bullet_rate * time_shooting)): + time_shooting -= 1/bullet_rate + shoot_bullet(mecha) + else : + time_shooting = 0. + return shoot + +func shoot_bullet(mecha : Mecha,): + var new_bullet : Bullet = BULLET_SCENE.instantiate() + new_bullet.rotation.y = mecha.get_target_angle() + new_bullet.position = mecha.get_projectile_spwan_point() + mecha.add_recoil() + add_child(new_bullet) + new_bullet.rotation += Vector3( + randf_range(-bullet_dispersion, bullet_dispersion), + randf_range(-bullet_dispersion, bullet_dispersion), + randf_range(-bullet_dispersion, bullet_dispersion) + ) + diff --git a/entities/mecha/weapons/gatling/gatling.gd.uid b/entities/mecha/weapons/gatling/gatling.gd.uid new file mode 100644 index 0000000..85ab974 --- /dev/null +++ b/entities/mecha/weapons/gatling/gatling.gd.uid @@ -0,0 +1 @@ +uid://7s4jtqkpp21e diff --git a/entities/mecha/weapons/weapon.gd b/entities/mecha/weapons/weapon.gd new file mode 100644 index 0000000..5222bd6 --- /dev/null +++ b/entities/mecha/weapons/weapon.gd @@ -0,0 +1,5 @@ +@abstract +extends Node +class_name Weapon + +@abstract func process_fire(delta : float, mecha : Mecha, shoot : bool) -> bool diff --git a/entities/mecha/weapons/weapon.gd.uid b/entities/mecha/weapons/weapon.gd.uid new file mode 100644 index 0000000..7d985c9 --- /dev/null +++ b/entities/mecha/weapons/weapon.gd.uid @@ -0,0 +1 @@ +uid://cyonrs821lwwg diff --git a/gui/game_gui/game_gui.gd b/gui/game_gui/game_gui.gd new file mode 100644 index 0000000..1ffdc39 --- /dev/null +++ b/gui/game_gui/game_gui.gd @@ -0,0 +1,23 @@ +extends Node +class_name GameGui + +@export var mecha : Mecha + +func _process(_delta): + %FPSCount.text = "%d fps" % Engine.get_frames_per_second() + if mecha: + %HPProgressBar.value = lerp( + %HPProgressBar.value, + (mecha.hp / Mecha.MAX_HP) * 100., + 0.5, + ) + else: + printerr("Missing mecha in GameGui") + +func show_lose_gui(): + %LooseAnimationPlayer.play("Appear") + +func _on_retry_button_pressed(): + get_tree().paused = false + get_tree().reload_current_scene() + diff --git a/gui/game_gui/game_gui.gd.uid b/gui/game_gui/game_gui.gd.uid new file mode 100644 index 0000000..bc6b2de --- /dev/null +++ b/gui/game_gui/game_gui.gd.uid @@ -0,0 +1 @@ +uid://i1k7uvreb7o0 diff --git a/gui/game_gui/game_gui.tscn b/gui/game_gui/game_gui.tscn new file mode 100644 index 0000000..6e70611 --- /dev/null +++ b/gui/game_gui/game_gui.tscn @@ -0,0 +1,264 @@ +[gd_scene format=3 uid="uid://bimqv18m7axjk"] + +[ext_resource type="Script" uid="uid://i1k7uvreb7o0" path="res://gui/game_gui/game_gui.gd" id="1_hi8mw"] +[ext_resource type="FontFile" uid="uid://iug4bpafhqp" path="res://common/fonts/BPdotsPlusBold.otf" id="2_dce4h"] +[ext_resource type="Theme" uid="uid://pemhq200t8km" path="res://common/theme/default.tres" id="3_xsn8x"] +[ext_resource type="Texture2D" uid="uid://c46rt5tydx8ih" path="res://common/assets/wheat_pattern.png" id="4_0211q"] +[ext_resource type="Texture2D" uid="uid://dqasylgir7ka2" path="res://common/assets/alien_2d_anim/alien_running.tres" id="4_h86ds"] + +[sub_resource type="LabelSettings" id="LabelSettings_s3fup"] +font = ExtResource("2_dce4h") +font_size = 32 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e6mfr"] +bg_color = Color(0.22352941, 0.03529412, 0.2784314, 1) +border_width_left = 10 +border_width_top = 10 +border_width_right = 10 +border_width_bottom = 10 +border_color = Color(0.22352941, 0.03529412, 0.2784314, 1) +corner_radius_top_left = 100 +corner_radius_top_right = 100 +corner_radius_bottom_right = 100 +corner_radius_bottom_left = 100 +corner_detail = 1 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vrt4x"] +bg_color = Color(0.8, 0.25882354, 0.36862746, 1) +corner_radius_top_left = 100 +corner_radius_top_right = 100 +corner_radius_bottom_right = 100 +corner_radius_bottom_left = 100 +corner_detail = 1 +shadow_color = Color(0, 0, 0, 1) +shadow_offset = Vector2(8.805, 0) + +[sub_resource type="Animation" id="Animation_xsn8x"] +resource_name = "Appear" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ColorRect:modulate") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.1, 0.26666668), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.06666667), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MarginContainer/VBoxContainer:modulate") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.26666668, 0.43333334), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("WheatTextureRect:offset_transform_position") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.43333334, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 200), Vector2(0, 0)] +} + +[sub_resource type="Animation" id="Animation_0211q"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ColorRect:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MarginContainer/VBoxContainer:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("WheatTextureRect:offset_transform_position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_h86ds"] +_data = { +&"Appear": SubResource("Animation_xsn8x"), +&"RESET": SubResource("Animation_0211q") +} + +[node name="GameGui" type="Node" unique_id=1834150819] +script = ExtResource("1_hi8mw") + +[node name="InGameGui" type="CanvasLayer" parent="." unique_id=690401621] + +[node name="MarginContainer" type="MarginContainer" parent="InGameGui" unique_id=505084840] +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="FPSCount" type="Label" parent="InGameGui/MarginContainer" unique_id=1901714455] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 0 +text = "60" +label_settings = SubResource("LabelSettings_s3fup") + +[node name="VBoxContainer" type="VBoxContainer" parent="InGameGui/MarginContainer" unique_id=334322492] +layout_mode = 2 +size_flags_vertical = 8 + +[node name="Label" type="Label" parent="InGameGui/MarginContainer/VBoxContainer" unique_id=1844773394] +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("3_xsn8x") +text = "HP" + +[node name="HPProgressBar" type="ProgressBar" parent="InGameGui/MarginContainer/VBoxContainer" unique_id=1290386622] +unique_name_in_owner = true +custom_minimum_size = Vector2(500, 0) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 8 +theme_override_fonts/font = ExtResource("2_dce4h") +theme_override_styles/background = SubResource("StyleBoxFlat_e6mfr") +theme_override_styles/fill = SubResource("StyleBoxFlat_vrt4x") +value = 53.55 + +[node name="LoseGui" type="CanvasLayer" parent="." unique_id=1327310714] +process_mode = 3 +visible = false + +[node name="ColorRect" type="ColorRect" parent="LoseGui" unique_id=2001573710] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.22315995, 0.036399998, 0.28, 0.8627451) + +[node name="MarginContainer" type="MarginContainer" parent="LoseGui" unique_id=606840258] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_bottom = 130 + +[node name="VBoxContainer" type="VBoxContainer" parent="LoseGui/MarginContainer" unique_id=1986040987] +layout_mode = 2 +theme = ExtResource("3_xsn8x") +theme_override_constants/separation = 34 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="LoseGui/MarginContainer/VBoxContainer" unique_id=661476620] +modulate = Color(0.8, 0.2627451, 0.36862746, 1) +custom_minimum_size = Vector2(300, 118.99) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("4_h86ds") +expand_mode = 1 +stretch_mode = 6 + +[node name="Label" type="Label" parent="LoseGui/MarginContainer/VBoxContainer" unique_id=549082129] +layout_mode = 2 +theme = ExtResource("3_xsn8x") +theme_override_font_sizes/font_size = 116 +text = "You +Lost" +horizontal_alignment = 1 + +[node name="Label2" type="RichTextLabel" parent="LoseGui/MarginContainer/VBoxContainer" unique_id=1870970148] +layout_mode = 2 +theme = ExtResource("3_xsn8x") +text = "Wave 3" +fit_content = true +horizontal_alignment = 1 + +[node name="RetryButton" type="Button" parent="LoseGui/MarginContainer/VBoxContainer" unique_id=1360931085] +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("3_xsn8x") +text = "Retry" + +[node name="WheatTextureRect" type="TextureRect" parent="LoseGui" unique_id=403968258] +custom_minimum_size = Vector2(0, 100) +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -145.0 +offset_bottom = 0.00036621094 +grow_horizontal = 2 +grow_vertical = 0 +size_flags_vertical = 8 +offset_transform_enabled = true +texture = ExtResource("4_0211q") +stretch_mode = 1 + +[node name="LooseAnimationPlayer" type="AnimationPlayer" parent="LoseGui" unique_id=1363083305] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_h86ds") + +[connection signal="pressed" from="LoseGui/MarginContainer/VBoxContainer/RetryButton" to="." method="_on_retry_button_pressed"] diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..3903565 --- /dev/null +++ b/icon.svg @@ -0,0 +1,81 @@ + + + + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..a2aefe5 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://by7efrb5seyt8" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/objects/dome/assets/shader/barrier.gdshader b/objects/dome/assets/shader/barrier.gdshader new file mode 100644 index 0000000..715c0d8 --- /dev/null +++ b/objects/dome/assets/shader/barrier.gdshader @@ -0,0 +1,61 @@ +shader_type spatial; +render_mode unshaded, depth_draw_never, cull_disabled; + +uniform float width = 15.0; +uniform float height = 15.0; +uniform float density = 5.0; +uniform float line_thickness = 0.1; +uniform vec4 line_color : source_color = vec4( 0.2, 1.0, 1.0, 1.0 ); + +uniform sampler2D depth_texture : source_color, hint_depth_texture; +uniform vec4 color1: source_color = vec4(1,1,1,.1); +uniform vec4 color2: source_color = vec4(1,1,1,1); +uniform float threshold = .2; +uniform float fresnel_sharpness = 1.0; +uniform float fresnel_factor = 1.0; + + +float hex_cells( vec2 uv ) +{ + float x = uv.x * width * density; + float y = mod( floor(x), 2.0 ) * 0.5 + ( uv.y * height ) * density; + + vec2 base_chip = abs( vec2( 0.5 ) - mod( vec2( x, y ), 1.0 ) ); + return abs( max( base_chip.x * 1.5 + base_chip.y, base_chip.y * 2.0 ) - 1.0 ); +} + +void fragment( ) +{ + float depth = texture(depth_texture, SCREEN_UV).x; + //vec3 ndc = vec3(SCREEN_UV, depth) * 2.0 - 1.0; + vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, depth); + vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0); + view.xyz /= view.w; + float linear_depth = -view.z; + + float object_depth = FRAGCOORD.z; + //vec3 object_ndc = vec3(SCREEN_UV, object_depth) * 2.0 - 1.0; + vec3 object_ndc = vec3(SCREEN_UV * 2.0 - 1.0, object_depth); + vec4 object_view = INV_PROJECTION_MATRIX * vec4(object_ndc, 1.0); + object_view.xyz /= object_view.w; + float linear_object_depth = -object_view.z; + + float fresnel = pow(1.0 - dot(VIEW, NORMAL), fresnel_sharpness) * fresnel_factor; + + if (linear_depth - linear_object_depth > threshold) { + float hex = hex_cells( UV ); + + vec4 final_color = mix( + color1, + line_color, + float( hex < line_thickness ) + ); + + ALBEDO = final_color.rgb; + ALPHA = final_color.a+(fresnel); + } + else { + ALBEDO = color2.rgb; + ALPHA = color2.a+fresnel; + } +} \ No newline at end of file diff --git a/objects/dome/assets/shader/barrier.gdshader.uid b/objects/dome/assets/shader/barrier.gdshader.uid new file mode 100644 index 0000000..4140387 --- /dev/null +++ b/objects/dome/assets/shader/barrier.gdshader.uid @@ -0,0 +1 @@ +uid://bdveg7wa4kl6y diff --git a/objects/dome/assets/shader/sky.gdshader b/objects/dome/assets/shader/sky.gdshader new file mode 100644 index 0000000..90423dd --- /dev/null +++ b/objects/dome/assets/shader/sky.gdshader @@ -0,0 +1,35 @@ +shader_type spatial; +render_mode unshaded; + +uniform sampler2D sky_texture : source_color; +uniform bool lock_aspect = false; +uniform float aspect_ratio = 1.3333333; +uniform vec2 fov = vec2(180.0, 90.0); +uniform ivec2 tiling = ivec2(1, 1); +uniform vec2 offset = vec2(0.0, 0.0); + +// XY offset, ZW tiling +varying vec4 bg_coords; + +void vertex() { + // Camera YX rotation per Basis.get_euler source code + float y = atan(VIEW_MATRIX[0][2], VIEW_MATRIX[2][2]); + float x = asin(VIEW_MATRIX[1][2]); + + // Map rotation to screen space + bg_coords.xy = vec2(y * -0.5, x) / PI; + bg_coords.y += 0.5; + + bg_coords.w = fov.y / 180.0; + bg_coords.z = !lock_aspect ? fov.x / 360.0 : VIEWPORT_SIZE.x / (VIEWPORT_SIZE.y * aspect_ratio) * bg_coords.w; + + // Keep background centered vertically when FOV changes + bg_coords.y *= bg_coords.w > 1.0 ? 0.0 : 1.0 - bg_coords.w; +} + +void fragment() { + vec2 uv_offset = vec2(-offset.x, offset.y); + vec2 uv = (SCREEN_UV + uv_offset) * bg_coords.zw + bg_coords.xy; + uv *= vec2(tiling); + ALBEDO = texture(sky_texture, uv).rgb; +} \ No newline at end of file diff --git a/objects/dome/assets/shader/sky.gdshader.uid b/objects/dome/assets/shader/sky.gdshader.uid new file mode 100644 index 0000000..6eb55b6 --- /dev/null +++ b/objects/dome/assets/shader/sky.gdshader.uid @@ -0,0 +1 @@ +uid://dm5226jwt11ae diff --git a/objects/dome/dome.gd b/objects/dome/dome.gd new file mode 100644 index 0000000..0dda514 --- /dev/null +++ b/objects/dome/dome.gd @@ -0,0 +1,13 @@ +@tool +extends Node3D +class_name Dome + +@export var size : float = 100. : set = set_size + +func _ready(): + set_size(size) + +func set_size(s : float): + size = s + if is_node_ready(): + scale = Vector3.ONE * size diff --git a/objects/dome/dome.gd.uid b/objects/dome/dome.gd.uid new file mode 100644 index 0000000..773c383 --- /dev/null +++ b/objects/dome/dome.gd.uid @@ -0,0 +1 @@ +uid://jus6nhwewgay diff --git a/objects/dome/dome.tscn b/objects/dome/dome.tscn new file mode 100644 index 0000000..11bd036 --- /dev/null +++ b/objects/dome/dome.tscn @@ -0,0 +1,164 @@ +[gd_scene format=3 uid="uid://nlli5ju37ghy"] + +[ext_resource type="Script" uid="uid://jus6nhwewgay" path="res://objects/dome/dome.gd" id="1_jb5pf"] +[ext_resource type="Shader" uid="uid://bdveg7wa4kl6y" path="res://objects/dome/assets/shader/barrier.gdshader" id="3_jb5pf"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nbcly"] +shading_mode = 0 +albedo_color = Color(0.22352941, 0.03529412, 0.2784314, 1) + +[sub_resource type="PlaneMesh" id="PlaneMesh_g4v7s"] +material = SubResource("StandardMaterial3D_nbcly") +size = Vector2(50, 50) + +[sub_resource type="SphereMesh" id="SphereMesh_omx8k"] +flip_faces = true + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_nbcly"] +render_priority = 0 +shader = ExtResource("3_jb5pf") +shader_parameter/width = 15.0 +shader_parameter/height = 15.0 +shader_parameter/density = 15.0 +shader_parameter/line_thickness = 0.1 +shader_parameter/line_color = Color(0.19999999, 1, 1, 0) +shader_parameter/color1 = Color(0.55, 0.71500003, 1, 0) +shader_parameter/color2 = Color(0.5529412, 0.7176471, 1, 1) +shader_parameter/threshold = 10.0 +shader_parameter/fresnel_sharpness = 1.0 +shader_parameter/fresnel_factor = 0.1 + +[sub_resource type="BoxShape3D" id="BoxShape3D_omx8k"] +size = Vector3(0.1, 0.1, 0.1) + +[node name="Dome" type="StaticBody3D" unique_id=166719047] +transform = Transform3D(100, 0, 0, 0, 100, 0, 0, 0, 100, 0, 0, 0) +script = ExtResource("1_jb5pf") + +[node name="Ground" type="MeshInstance3D" parent="." unique_id=196721357] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 0) +mesh = SubResource("PlaneMesh_g4v7s") + +[node name="DomeMesh2" type="MeshInstance3D" parent="." unique_id=1320849271] +mesh = SubResource("SphereMesh_omx8k") +surface_material_override/0 = SubResource("ShaderMaterial_nbcly") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1870476723] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5479279, 0, 0) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="." unique_id=1405453928] +transform = Transform3D(0.9781476, 0, -0.2079117, 0, 1, 0, 0.2079117, 0, 0.9781476, -0.5359544, 0, -0.11392062) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D3" type="CollisionShape3D" parent="." unique_id=1799414955] +transform = Transform3D(0.9135454, 0, -0.40673664, 0, 1, 0, 0.40673664, 0, 0.9135454, -0.50055707, 0, -0.22286236) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D4" type="CollisionShape3D" parent="." unique_id=1057204615] +transform = Transform3D(0.809017, 0, -0.58778524, 0, 1, 0, 0.58778524, 0, 0.809017, -0.443283, 0, -0.32206395) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D5" type="CollisionShape3D" parent="." unique_id=995851263] +transform = Transform3D(0.6809604, 0, -0.7323202, 0, 1, 0, 0.7323202, 0, 0.6809604, -0.3731172, 0, -0.40125868) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D6" type="CollisionShape3D" parent="." unique_id=1389588031] +transform = Transform3D(0.51382184, 0, -0.8578968, 0, 1, 0, 0.8578968, 0, 0.51382184, -0.28153732, 0, -0.4700656) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D7" type="CollisionShape3D" parent="." unique_id=763833944] +transform = Transform3D(0.3242268, 0, -0.94597936, 0, 1, 0, 0.94597936, 0, 0.3242268, -0.17765291, 0, -0.5183285) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D8" type="CollisionShape3D" parent="." unique_id=1992446162] +transform = Transform3D(0.12046155, 0, -0.992718, 0, 1, 0, 0.992718, 0, 0.12046155, -0.06600425, 0, -0.5439379) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D9" type="CollisionShape3D" parent="." unique_id=1208280596] +transform = Transform3D(-0.078486145, 0, -0.9969152, 0, 1, 0, 0.9969152, 0, -0.078486145, 0.04300475, 0, -0.5462377) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D10" type="CollisionShape3D" parent="." unique_id=1292859181] +transform = Transform3D(-0.28404135, 0, -0.958812, 0, 1, 0, 0.958812, 0, -0.28404135, 0.15563418, 0, -0.52535987) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D11" type="CollisionShape3D" parent="." unique_id=1997335297] +transform = Transform3D(-0.47718263, 0, -0.87880415, 0, 1, 0, 0.87880415, 0, -0.47718263, 0.26146168, 0, -0.48152134) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D12" type="CollisionShape3D" parent="." unique_id=1449774908] +transform = Transform3D(-0.6494687, 0, -0.7603884, 0, 1, 0, 0.7603884, 0, -0.6494687, 0.35586205, 0, -0.41663802) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D13" type="CollisionShape3D" parent="." unique_id=357259572] +transform = Transform3D(-0.7835071, 0, -0.62138283, 0, 1, 0, 0.62138283, 0, -0.7835071, 0.4293054, 0, -0.340473) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D14" type="CollisionShape3D" parent="." unique_id=1998926365] +transform = Transform3D(-0.89557827, 0, -0.44490382, 0, 1, 0, 0.44490382, 0, -0.89557827, 0.49071234, 0, -0.24377522) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D15" type="CollisionShape3D" parent="." unique_id=1826517219] +transform = Transform3D(-0.96850854, 0, -0.24898036, 0, 1, 0, 0.24898036, 0, -0.96850854, 0.53067285, 0, -0.13642329) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D16" type="CollisionShape3D" parent="." unique_id=228392577] +transform = Transform3D(-0.99999726, 0, -0.0023402646, 0, 1, 0, 0.0023402646, 0, -0.99999726, 0.5421262, 0, -0.027382933) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D17" type="CollisionShape3D" parent="." unique_id=1106193142] +transform = Transform3D(-0.9779057, 0, 0.20904641, 0, 1, 0, -0.20904641, 0, -0.9779057, 0.5300216, 0, 0.08844173) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D18" type="CollisionShape3D" parent="." unique_id=933370103] +transform = Transform3D(-0.913073, 0, 0.40779632, 0, 1, 0, -0.40779632, 0, -0.913073, 0.49449795, 0, 0.19734235) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D19" type="CollisionShape3D" parent="." unique_id=310765754] +transform = Transform3D(-0.8083345, 0, 0.5887234, 0, 1, 0, -0.5887234, 0, -0.8083345, 0.4371088, 0, 0.29647735) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D20" type="CollisionShape3D" parent="." unique_id=1224640466] +transform = Transform3D(-0.68011034, 0, 0.7331097, 0, 1, 0, -0.7331097, 0, -0.68011034, 0.36685118, 0, 0.37559065) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D21" type="CollisionShape3D" parent="." unique_id=394476411] +transform = Transform3D(-0.5128261, 0, 0.8584924, 0, 1, 0, -0.8584924, 0, -0.5128261, 0.2751915, 0, 0.4442913) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D22" type="CollisionShape3D" parent="." unique_id=1040373752] +transform = Transform3D(-0.32312903, 0, 0.94635487, 0, 1, 0, -0.94635487, 0, -0.32312903, 0.17125116, 0, 0.4924336) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D23" type="CollisionShape3D" parent="." unique_id=1667715263] +transform = Transform3D(-0.11930971, 0, 0.99285704, 0, 1, 0, -0.99285704, 0, -0.11930971, 0.059572875, 0, 0.51791346) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D24" type="CollisionShape3D" parent="." unique_id=733623695] +transform = Transform3D(0.07964271, 0, 0.99682343, 0, 1, 0, -0.99682343, 0, 0.07964271, -0.04943871, 0, 0.52008677) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D25" type="CollisionShape3D" parent="." unique_id=640657227] +transform = Transform3D(0.2851536, 0, 0.95848185, 0, 1, 0, -0.95848185, 0, 0.2851536, -0.16204387, 0, 0.49907833) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D26" type="CollisionShape3D" parent="." unique_id=709442725] +transform = Transform3D(0.47820193, 0, 0.8782499, 0, 1, 0, -0.8782499, 0, 0.47820193, -0.26782042, 0, 0.455117) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D27" type="CollisionShape3D" parent="." unique_id=862417486] +transform = Transform3D(0.6503505, 0, 0.7596344, 0, 1, 0, -0.7596344, 0, 0.6503505, -0.36214545, 0, 0.39012423) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D28" type="CollisionShape3D" parent="." unique_id=677375892] +transform = Transform3D(0.7842275, 0, 0.6204733, 0, 1, 0, -0.6204733, 0, 0.7842275, -0.43550038, 0, 0.313874) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D29" type="CollisionShape3D" parent="." unique_id=1813352688] +transform = Transform3D(0.8960939, 0, 0.4438645, 0, 1, 0, -0.4438645, 0, 0.8960939, -0.49679512, 0, 0.2171051) +shape = SubResource("BoxShape3D_omx8k") + +[node name="CollisionShape3D30" type="CollisionShape3D" parent="." unique_id=1653439158] +transform = Transform3D(0.96879673, 0, 0.24785648, 0, 1, 0, -0.24785648, 0, 0.96879673, -0.53663105, 0, 0.10970685) +shape = SubResource("BoxShape3D_omx8k") diff --git a/objects/map/hex_map.gd b/objects/map/hex_map.gd new file mode 100644 index 0000000..e5834c6 --- /dev/null +++ b/objects/map/hex_map.gd @@ -0,0 +1,87 @@ +@tool +extends Node3D +class_name HexMap + +const BASE_TILE_SET_SCENE = preload('res://objects/map/tiles/base_hex_tile_set.tscn') as PackedScene + +@export_tool_button("Load Map", "Callable") var load_map_action = load_map + +@export var radius = 10 + +@onready var tile_set : HexTileSet = BASE_TILE_SET_SCENE.instantiate() + +var empty_hex_tiles_coords : Array[Vector2i] = [] +var hex_tiles_by_pos : Dictionary[String, HexTile] = {} +var hex_tiles_by_id : Dictionary[String, Array] = {} + +func load_map(): + for c in get_children(): + c.queue_free() + empty_hex_tiles_coords = [] + hex_tiles_by_pos = {} + + empty_hex_tiles_coords = get_all_hex_coords() + empty_hex_tiles_coords.shuffle() + + var mandatory_tiles = tile_set.get_all_hex_tiles().filter( + func (tile : HexTile): return tile.mandatory_tile + ) + + for hex_tile in mandatory_tiles: + for i in range(hex_tile.mandatory_count): + if len(empty_hex_tiles_coords) != 0: + spawn_tile( + empty_hex_tiles_coords.pop_front(), + hex_tile + ) + + while len(empty_hex_tiles_coords) != 0: + var coord : Vector2i = empty_hex_tiles_coords.pop_front() + spawn_tile( + coord, + get_available_tiles_for_coord(coord).pick_random() + ) + + + +func spawn_tile(coord : Vector2i, hex_tile : HexTile): + var new_tile = hex_tile.duplicate() + + hex_tiles_by_pos["%d:%d" % [coord.x, coord.y]] = new_tile + if not (new_tile.name in hex_tiles_by_id): + hex_tiles_by_id[new_tile.name] = [] + + hex_tiles_by_id[new_tile.name].append(new_tile) + + new_tile.position = get_world_tile_coord(coord) + + new_tile.rotation.y = (randi() % 6)/6. * 2. * PI + + add_child(new_tile) + +func get_available_tiles_for_coord(_coord : Vector2) -> Array[HexTile]: + return tile_set.get_all_hex_tiles().filter( + func (tile : HexTile): return not tile.mandatory_tile + ) + +func get_all_hex_coords() -> Array[Vector2i]: + var coords : Array[Vector2i] = [] + + for x in range(-radius, radius): + for y in range(-radius, radius): + if Vector2(x,y).length() < radius: + coords.append(Vector2i(x,y)) + + return coords + +func get_world_tile_coord(coord: Vector2i) -> Vector3: + return Vector3( + coord.x * HexTile.BASE_TILE_SIZE + (HexTile.BASE_TILE_SIZE/2. if coord.y%2 == 0 else 0.), + 0., + coord.y * HexTile.BASE_TILE_SIZE * cos(PI/6), + ) + +func get_all_tiles_with_id(id : String) -> Array[HexTile]: + if id in hex_tiles_by_id: + return (hex_tiles_by_id[id] as Array[HexTile]) + return ([] as Array[HexTile]) \ No newline at end of file diff --git a/objects/map/hex_map.gd.uid b/objects/map/hex_map.gd.uid new file mode 100644 index 0000000..7e6e27f --- /dev/null +++ b/objects/map/hex_map.gd.uid @@ -0,0 +1 @@ +uid://da00pdn0rf7t5 diff --git a/objects/map/tiles/base/base.blend b/objects/map/tiles/base/base.blend new file mode 100644 index 0000000..77a6a5b Binary files /dev/null and b/objects/map/tiles/base/base.blend differ diff --git a/objects/map/tiles/base/base.blend.import b/objects/map/tiles/base/base.blend.import new file mode 100644 index 0000000..d6454bd --- /dev/null +++ b/objects/map/tiles/base/base.blend.import @@ -0,0 +1,75 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c3tu8mi21rbj5" +path="res://.godot/imported/base.blend-1078cc3cc14bf2d0e109d3d1e8d426e3.scn" + +[deps] + +source_file="res://objects/map/tiles/base/base.blend" +dest_files=["res://.godot/imported/base.blend-1078cc3cc14bf2d0e109d3d1e8d426e3.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"meshes": { +"base_Cylinder_003": { +"generate/lightmap_uv": 0, +"generate/lods": 0, +"generate/shadow_meshes": 0, +"lods/normal_merge_angle": 20.0, +"save_to_file/enabled": true, +"save_to_file/fallback_path": "res://objects/map/tiles/base/base.tres", +"save_to_file/path": "uid://dnhk02pm0g1j" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/objects/map/tiles/base/base.blend1 b/objects/map/tiles/base/base.blend1 new file mode 100644 index 0000000..6d900e8 Binary files /dev/null and b/objects/map/tiles/base/base.blend1 differ diff --git a/objects/map/tiles/base/base.tres b/objects/map/tiles/base/base.tres new file mode 100644 index 0000000..03070a2 --- /dev/null +++ b/objects/map/tiles/base/base.tres @@ -0,0 +1,33 @@ +[gd_resource type="ArrayMesh" format=4 uid="uid://dnhk02pm0g1j"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yhyhb"] + +[sub_resource type="ArrayMesh" id="ArrayMesh_8mopr"] +_surfaces = [{ +"aabb": AABB(-20, -2, -23.094011, 40, 2, 46.188023), +"format": 34896613377, +"index_count": 60, +"index_data": PackedByteArray("AAABAAIAAAADAAEABAACAAEAAwAEAAEABQAAAAIABQADAAAABQACAAYAAwAHAAQACAAFAAYAAwAFAAkACQAFAAgAAwAJAAcABwAKAAQABwAJAAoAAgAEAAsAAgALAAYACwAEAAoACAAGAAsACQALAAoACQAIAAsA"), +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 12, +"vertex_data": PackedByteArray("/38AAAAAAAD//////z8AAP9///8AAAAA//8AAP8/AAD//////78AAAAAAAD/PwAAAAD///8/AAD//wAA/78AAAAAAAD/vwAA/38AAP//AAD/f/////8AAAAA////vwAA") +}] +blend_shape_mode = 0 + +[resource] +resource_name = "base_Cylinder_003" +_surfaces = [{ +"aabb": AABB(-20, -2, -23.094011, 40, 2, 46.188023), +"attribute_data": PackedByteArray("//+kwKnq/3////9/qeqkwKnqpMBU1f9/qer/f1TVpMBU1aTA/7//f1TV/3//v6TA/7+kwKmq/3//v/9/qaqkwJm6e/D/n+/Bmbpz0WSFe/D/n///ZIVz0amqpMBUlf9/qar/f1SVpMBUlaTA/3//f1SV/3//f6TAZMVz0Zn6c9H/3+/B/9///2TFe/CZ+nvw"), +"format": 34896613399, +"index_count": 60, +"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEQAQABMAEwAQABQAEQATABUAFgAXABgAFgAZABcAGgAbABwAGgAdABsAHgAfACAAHwAeACEAIQAeACIAHwAhACMA"), +"material": SubResource("StandardMaterial3D_yhyhb"), +"primitive": 3, +"uv_scale": Vector4(2, 1.98, 0, 0), +"vertex_count": 36, +"vertex_data": PackedByteArray("/38AAAAAqer//////z+p6v9///8AAKnq//8AAP8/qer//wAA/z//v///////v/+///////8//7///wAA/7//v///AAD/v1SV/3//////VJX//////79Ulf9/AAD//1SV/38AAP//VJUAAP///79Ulf9//////1SVAAAAAP+/VJX//////7//v/9///8AAP+///////8//78AAP///7//v/9///////+/AAD///8//78AAAAA/7//vwAA////P/+/AAD///+//78AAAAA/z//vwAAAAD/P6nq/3///wAAqeoAAP///z+p6v9/AAAAAKnqAAAAAP8//z///wAA/z//P/9/AAAAAP8//38AAP///z8AAAAA/7//P///AAD/v/8//38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/3////9/////f////3///////3////9/////f////3////9/////f/9/////f////3////9/////f////3////9/////f///AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_8mopr") diff --git a/objects/map/tiles/base_hex_tile_set.tscn b/objects/map/tiles/base_hex_tile_set.tscn new file mode 100644 index 0000000..678a7e9 --- /dev/null +++ b/objects/map/tiles/base_hex_tile_set.tscn @@ -0,0 +1,170 @@ +[gd_scene format=3 uid="uid://ygpr1p4jwi4v"] + +[ext_resource type="Script" uid="uid://ovrpkbwq0piy" path="res://objects/map/tiles/hex_tile_set.gd" id="1_sgwpe"] +[ext_resource type="Script" uid="uid://bcelqd50co3p3" path="res://objects/map/tiles/hex_tile.gd" id="2_0fw1f"] +[ext_resource type="ArrayMesh" uid="uid://dnhk02pm0g1j" path="res://objects/map/tiles/base/base.tres" id="3_6x72r"] +[ext_resource type="Script" uid="uid://boba1g0kd5n68" path="res://objects/map/tiles/hex_tile_types/hex_tile_house.gd" id="4_0fw1f"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oixbx"] +albedo_color = Color(0.35686275, 0.6509804, 0.45882353, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sgwpe"] +albedo_color = Color(0.47058824, 0.8, 0.43529412, 1) + +[sub_resource type="CylinderMesh" id="CylinderMesh_g4v7s"] +bottom_radius = 12.328 +height = 21.673828 +radial_segments = 10 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yf5fn"] +albedo_color = Color(0.35686275, 0.6509804, 0.45882353, 1) + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_sgwpe"] +height = 24.650146 +radius = 9.0859375 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_yf5fn"] +height = 24.650146 +radius = 12.075195 + +[sub_resource type="PrismMesh" id="PrismMesh_sgwpe"] +size = Vector3(10, 10, 10) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0fw1f"] +albedo_color = Color(0.8, 0.25882354, 0.36862746, 1) + +[sub_resource type="CylinderMesh" id="CylinderMesh_yf5fn"] +height = 200.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_57qmd"] +transparency = 1 +shading_mode = 0 +albedo_color = Color(0.8, 0.256, 0.36480018, 0.42352942) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6x72r"] +albedo_color = Color(0.81960785, 0.7058824, 0.7607843, 1) + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_6x72r"] +height = 24.650146 +radius = 6.894 + +[sub_resource type="Gradient" id="Gradient_0fw1f"] +interpolation_mode = 1 +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_g4v7s"] +gradient = SubResource("Gradient_0fw1f") +width = 300 +height = 300 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0.5, 1) + +[node name="HexTileSet" type="Node3D" unique_id=549438538] +script = ExtResource("1_sgwpe") + +[node name="Grass" type="StaticBody3D" parent="." unique_id=940672834] +script = ExtResource("2_0fw1f") +id = &"Grass" +metadata/_custom_type_script = "uid://bcelqd50co3p3" + +[node name="Base" type="MeshInstance3D" parent="Grass" unique_id=76705257] +mesh = ExtResource("3_6x72r") +surface_material_override/0 = SubResource("StandardMaterial3D_oixbx") + +[node name="Grass2" type="StaticBody3D" parent="." unique_id=1341297106] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 40, 0, 0) +script = ExtResource("2_0fw1f") +id = &"Grass2" +metadata/_custom_type_script = "uid://bcelqd50co3p3" + +[node name="Base" type="MeshInstance3D" parent="Grass2" unique_id=2047809771] +mesh = ExtResource("3_6x72r") +surface_material_override/0 = SubResource("StandardMaterial3D_sgwpe") + +[node name="Tree1" type="StaticBody3D" parent="." unique_id=779600102] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 80, 0, 0) +script = ExtResource("2_0fw1f") +id = &"Tree1" +metadata/_custom_type_script = "uid://bcelqd50co3p3" + +[node name="Base2" type="MeshInstance3D" parent="Tree1" unique_id=627081052] +mesh = ExtResource("3_6x72r") +surface_material_override/0 = SubResource("StandardMaterial3D_oixbx") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Tree1" unique_id=1847158047] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9956665, 9.836914, -4.9558372) +mesh = SubResource("CylinderMesh_g4v7s") +surface_material_override/0 = SubResource("StandardMaterial3D_yf5fn") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Tree1" unique_id=770818071] +transform = Transform3D(0.515, 0, 0, 0, 0.515, 0, 0, 0, 0.515, 1.0043335, 2.9007664, 4.0441628) +mesh = SubResource("CylinderMesh_g4v7s") +surface_material_override/0 = SubResource("StandardMaterial3D_yf5fn") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Tree1" unique_id=1419584569] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2411957, 7.078491, -4.7115307) +shape = SubResource("CylinderShape3D_sgwpe") + +[node name="Tree2" type="StaticBody3D" parent="." unique_id=1777082018] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 120, 0, 0) +script = ExtResource("2_0fw1f") +id = &"Tree2" +metadata/_custom_type_script = "uid://bcelqd50co3p3" + +[node name="Base2" type="MeshInstance3D" parent="Tree2" unique_id=1571316613] +mesh = ExtResource("3_6x72r") +surface_material_override/0 = SubResource("StandardMaterial3D_oixbx") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Tree2" unique_id=1159803776] +transform = Transform3D(1.375, 0, 0, 0, 1.375, 0, 0, 0, 1.375, 0.54029846, 11.831854, -0.09746361) +mesh = SubResource("CylinderMesh_g4v7s") +surface_material_override/0 = SubResource("StandardMaterial3D_yf5fn") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Tree2" unique_id=872651782] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8638458, 7.078491, 0.41245174) +shape = SubResource("CylinderShape3D_yf5fn") + +[node name="House" type="StaticBody3D" parent="." unique_id=2024806559 node_paths=PackedStringArray("life_bar", "house_model", "house_model_broke")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 160, 0, 0) +script = ExtResource("4_0fw1f") +life_bar = NodePath("LifeBar") +house_model = NodePath("HouseModel") +house_model_broke = NodePath("HouseModelBroke") +hp = 100.0 +id = &"House" +mandatory_tile = true +mandatory_count = 3 +metadata/_custom_type_script = "uid://bcelqd50co3p3" + +[node name="Base2" type="MeshInstance3D" parent="House" unique_id=501829296] +mesh = ExtResource("3_6x72r") +surface_material_override/0 = SubResource("StandardMaterial3D_oixbx") + +[node name="HouseModel" type="MeshInstance3D" parent="House" unique_id=1045312946] +unique_name_in_owner = true +transform = Transform3D(1.375, 0, 0, 0, 1.375, 0, 0, 0, 1.375, 0.54029846, 5.831854, -0.09746361) +mesh = SubResource("PrismMesh_sgwpe") +surface_material_override/0 = SubResource("StandardMaterial3D_0fw1f") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="House/HouseModel" unique_id=670837026] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 100, 0) +mesh = SubResource("CylinderMesh_yf5fn") +surface_material_override/0 = SubResource("StandardMaterial3D_57qmd") + +[node name="HouseModelBroke" type="MeshInstance3D" parent="House" unique_id=107368671] +unique_name_in_owner = true +transform = Transform3D(1.375, 0, 0, 0, 1.375, 0, 0, 0, 1.375, 0.54029846, 5.831854, -0.09746361) +visible = false +mesh = SubResource("PrismMesh_sgwpe") +surface_material_override/0 = SubResource("StandardMaterial3D_6x72r") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="House" unique_id=907138474] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8638458, 7.078491, 0.41245174) +shape = SubResource("CylinderShape3D_6x72r") + +[node name="LifeBar" type="Sprite3D" parent="House" unique_id=501876162] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.53863525, 16.817535, 0) +billboard = 1 +texture = SubResource("GradientTexture2D_g4v7s") diff --git a/objects/map/tiles/hex_tile.gd b/objects/map/tiles/hex_tile.gd new file mode 100644 index 0000000..57ea024 --- /dev/null +++ b/objects/map/tiles/hex_tile.gd @@ -0,0 +1,14 @@ +@tool +extends StaticBody3D +class_name HexTile + +const BASE_TILE_SIZE = 40 +@export var id = "" + +@export_group("Mandatory Tile") +@export var mandatory_tile :bool = false +@export var mandatory_count : int = 5 + +func _ready(): + id = name + diff --git a/objects/map/tiles/hex_tile.gd.uid b/objects/map/tiles/hex_tile.gd.uid new file mode 100644 index 0000000..0b81f01 --- /dev/null +++ b/objects/map/tiles/hex_tile.gd.uid @@ -0,0 +1 @@ +uid://bcelqd50co3p3 diff --git a/objects/map/tiles/hex_tile_set.gd b/objects/map/tiles/hex_tile_set.gd new file mode 100644 index 0000000..ab052ca --- /dev/null +++ b/objects/map/tiles/hex_tile_set.gd @@ -0,0 +1,6 @@ +@tool +extends Node3D +class_name HexTileSet + +func get_all_hex_tiles() -> Array[HexTile]: + return get_children() as Array[HexTile] \ No newline at end of file diff --git a/objects/map/tiles/hex_tile_set.gd.uid b/objects/map/tiles/hex_tile_set.gd.uid new file mode 100644 index 0000000..94d5a43 --- /dev/null +++ b/objects/map/tiles/hex_tile_set.gd.uid @@ -0,0 +1 @@ +uid://ovrpkbwq0piy diff --git a/objects/map/tiles/hex_tile_types/hex_tile_house.gd b/objects/map/tiles/hex_tile_types/hex_tile_house.gd new file mode 100644 index 0000000..401c146 --- /dev/null +++ b/objects/map/tiles/hex_tile_types/hex_tile_house.gd @@ -0,0 +1,30 @@ +@tool +extends HexTile +class_name HouseHexTile + +@export var life_bar : Sprite3D +@export var house_model : Node3D +@export var house_model_broke : Node3D + +@export var max_hp : float = 100. + +@export var hp : float = max_hp : + set(v): + hp = v + if is_node_ready(): + life_bar.scale = Vector3.ONE * hp / max_hp + +@export var destroyed : bool = false : set = set_destroyed + +func hit(damage = 1.): + hp = max(0, hp - damage) + + if hp == 0: + destroyed = true + +func set_destroyed(_destroyed : bool = destroyed): + destroyed = _destroyed + + if is_node_ready(): + house_model.visible = not destroyed + house_model_broke.visible = destroyed diff --git a/objects/map/tiles/hex_tile_types/hex_tile_house.gd.uid b/objects/map/tiles/hex_tile_types/hex_tile_house.gd.uid new file mode 100644 index 0000000..5f5e4cc --- /dev/null +++ b/objects/map/tiles/hex_tile_types/hex_tile_house.gd.uid @@ -0,0 +1 @@ +uid://boba1g0kd5n68 diff --git a/objects/spawner/assets/shaders/portal.gdshader b/objects/spawner/assets/shaders/portal.gdshader new file mode 100644 index 0000000..2abd6a4 --- /dev/null +++ b/objects/spawner/assets/shaders/portal.gdshader @@ -0,0 +1,65 @@ +// Stolen here https://godotshaders.com/shader/parallax-mapping-2/ +shader_type spatial; +render_mode unshaded; + +uniform sampler2D noise_texture; +uniform sampler2D gradient; + +group_uniforms depth; +uniform int layers : hint_range(0, 64, 1) = 8; +uniform float depth_amount = 1.0; +uniform float fade_amount : hint_range(0.0, 16.0, 0.01) = 1.0; + +vec2 to_polar(vec2 uv) { + uv = uv * 2.0 - 1.0; + float radius = length(uv); + float angle = atan(uv.x, uv.y); + return vec2(angle / PI, radius) / 2.0; +} + +float overlay(float a, float b){ + float limit = step(0.5, a); + return mix(2.0 * a * b, 1.0 - 2.0 * (1.0 - a) * (1.0 - b), limit); +} + +vec2 parallax(float depth, vec3 n, vec3 t, vec3 v) { + vec3 normal = normalize(n); + vec3 tangent = normalize(t); + vec3 bitangent = cross(normal, tangent); + vec3 view = normalize(v); + vec3 view_tangent = vec3(dot(view, tangent), dot(view, bitangent), dot(view, normal)); + vec2 offset = (view_tangent.xy / max(view_tangent.z, 0.001)) * depth; + offset = vec2(-offset.x, offset.y); + + return offset; +} + +void fragment() { + float value = 0.0; + + for(int i = 0; i < layers; i++){ + float t = float(i) / float(layers); + float depth = t * depth_amount; + + vec2 circle_uv = UV + parallax(depth, NORMAL, TANGENT, VIEW); + float circle = length(circle_uv * 2.0 - 1.0); + + circle = clamp((circle - 0.2) / 0.8, 0.0, 1.0); + + vec2 noise_uv = UV + parallax(depth, NORMAL, TANGENT, VIEW); + noise_uv = to_polar(noise_uv); + noise_uv.y += TIME * 0.1; + noise_uv += t; + float noise = texture(noise_texture, noise_uv).r; + + float layer_value = overlay(circle, noise); + layer_value = step(0.5, layer_value); + + layer_value *= pow(1.0 - t, fade_amount); + + value = max(value, layer_value); + } + vec4 color = texture(gradient, vec2(value)); + ALBEDO = color.xyz; + +} diff --git a/objects/spawner/assets/shaders/portal.gdshader.uid b/objects/spawner/assets/shaders/portal.gdshader.uid new file mode 100644 index 0000000..f8e664c --- /dev/null +++ b/objects/spawner/assets/shaders/portal.gdshader.uid @@ -0,0 +1 @@ +uid://boy8idm1nge7n diff --git a/objects/spawner/spawner.gd b/objects/spawner/spawner.gd new file mode 100644 index 0000000..8d5c204 --- /dev/null +++ b/objects/spawner/spawner.gd @@ -0,0 +1,45 @@ +extends Node3D + +const SPAWN_RANDOM_POSITION_RANGE = 10 +const SPAWN_RANDOM_ANGLE_RANGE = PI/8 + +@export var delay : float = 5. +@export var duration : float = 10. +@export var spawn_rate : float = 30. +@export var horde_manager : AlienHordeManager + +var current_frame : int = 0 + +var aliens : Array[Alien] = [] +var clusters := [] +var clusters_coords : Array[Vector2i] = [] + +var time_elapsed = 0. +var time_spawning = 0. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + if delay > 0: + delay -= delta + else: + spawn_aliens(delta) + +func spawn_aliens(delta): + if time_elapsed < duration: + time_elapsed += delta + time_spawning += delta + + for i in range(roundi(spawn_rate * time_spawning)): + time_spawning -= 1/spawn_rate + spawn_alien() + +func spawn_alien() -> Alien: + var alien_position : Vector3 = Vector3( + %SpawnPoint.global_position.x + randf_range(-SPAWN_RANDOM_POSITION_RANGE, SPAWN_RANDOM_POSITION_RANGE), + 0, + %SpawnPoint.global_position.z + randf_range(-SPAWN_RANDOM_POSITION_RANGE, SPAWN_RANDOM_POSITION_RANGE) + ) + + var alien_rotation : float = rotation.y + randf_range(-SPAWN_RANDOM_ANGLE_RANGE, SPAWN_RANDOM_ANGLE_RANGE) + + return horde_manager.spawn_alien(alien_position, alien_rotation) diff --git a/objects/spawner/spawner.gd.uid b/objects/spawner/spawner.gd.uid new file mode 100644 index 0000000..8c28a6b --- /dev/null +++ b/objects/spawner/spawner.gd.uid @@ -0,0 +1 @@ +uid://bkljflytckumm diff --git a/objects/spawner/spawner.tscn b/objects/spawner/spawner.tscn new file mode 100644 index 0000000..1f6f4d5 --- /dev/null +++ b/objects/spawner/spawner.tscn @@ -0,0 +1,77 @@ +[gd_scene format=3 uid="uid://c50w214ctcjc7"] + +[ext_resource type="Shader" uid="uid://boy8idm1nge7n" path="res://objects/spawner/assets/shaders/portal.gdshader" id="1_jjtoq"] +[ext_resource type="Script" uid="uid://bkljflytckumm" path="res://objects/spawner/spawner.gd" id="1_y68vg"] + +[sub_resource type="Animation" id="Animation_s17ww"] +resource_name = "Appear" +length = 0.4 + +[sub_resource type="Animation" id="Animation_y68vg"] +length = 0.001 + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_d6t07"] +_data = { +&"Appear": SubResource("Animation_s17ww"), +&"RESET": SubResource("Animation_y68vg") +} + +[sub_resource type="SphereMesh" id="SphereMesh_d6t07"] +radius = 0.4 +height = 0.8 + +[sub_resource type="Gradient" id="Gradient_y68vg"] +offsets = PackedFloat32Array(0, 0.043333333, 0.98333335) +colors = PackedColorArray(0, 0, 0, 1, 0.22352941, 0.03529412, 0.2784314, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_fx0gv"] +gradient = SubResource("Gradient_y68vg") + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_fcnqv"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_vf7ls"] +width = 300 +height = 300 +noise = SubResource("FastNoiseLite_fcnqv") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_yf5fn"] +render_priority = 0 +shader = ExtResource("1_jjtoq") +shader_parameter/noise_texture = SubResource("NoiseTexture2D_vf7ls") +shader_parameter/gradient = SubResource("GradientTexture1D_fx0gv") +shader_parameter/layers = 8 +shader_parameter/depth_amount = 1.34 +shader_parameter/fade_amount = 1.08999997563632 + +[sub_resource type="SphereMesh" id="SphereMesh_w02y4"] +radius = 0.8 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ahe7j"] +shading_mode = 0 +albedo_color = Color(0.10980392, 0.050980393, 0.12941177, 1) + +[node name="Spawner" type="Node3D" unique_id=695896823] +script = ExtResource("1_y68vg") +duration = 1.0 +spawn_rate = 200.0 + +[node name="SpawnPoint" type="Node3D" parent="." unique_id=949382199] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1684067, 0, 0) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=2140330107] +libraries/ = SubResource("AnimationLibrary_d6t07") +autoplay = &"Appear" + +[node name="Aliens" type="Node" parent="." unique_id=1083817569] +unique_name_in_owner = true + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=1379665069] +transform = Transform3D(26.585, 0, 0, 0, 26.585, 0, 0, 0, 26.585, 0, 1.429512, 2.0852394) +mesh = SubResource("SphereMesh_d6t07") +surface_material_override/0 = SubResource("ShaderMaterial_yf5fn") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="." unique_id=655614315] +transform = Transform3D(15.39, 0, 0, 0, -6.727183e-07, 15.39, 0, -15.39, -6.727183e-07, -0.12734604, 1.4227005, 3.4225216) +mesh = SubResource("SphereMesh_w02y4") +surface_material_override/0 = SubResource("StandardMaterial3D_ahe7j") diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..b2d4f42 --- /dev/null +++ b/project.godot @@ -0,0 +1,74 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Swarm Farm" +config/version="proto-1" +run/main_scene="uid://c72xmokv2cooh" +config/features=PackedStringArray("4.7", "Mobile") +boot_splash/bg_color=Color(0.22352941, 0.03529412, 0.2784314, 1) +config/icon="res://icon.svg" + +[display] + +window/size/viewport_width=1920 +window/size/viewport_height=1080 +window/size/mode=3 +window/stretch/mode="canvas_items" +window/stretch/aspect="expand" + +[file_customization] + +folder_colors={ +"res://autoload/": "green", +"res://common/": "pink", +"res://entities/": "orange", +"res://gui/": "purple", +"res://objects/": "red", +"res://scenes/": "blue" +} + +[input] + +move_to={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(273, 9),"global_position":Vector2(282, 57),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +turn_camera={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":4,"position":Vector2(285, 28),"global_position":Vector2(294, 76),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +fire={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(156, 12),"global_position":Vector2(165, 60),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +zoom_out={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(220, 16),"global_position":Vector2(229, 64),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +zoom_in={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(361, 16),"global_position":Vector2(370, 64),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} + +[physics] + +3d/physics_engine="Jolt Physics" + +[rendering] + +rendering_device/driver.windows="d3d12" +renderer/rendering_method="mobile" diff --git a/scenes/game/game.gd b/scenes/game/game.gd new file mode 100644 index 0000000..95b6ad6 --- /dev/null +++ b/scenes/game/game.gd @@ -0,0 +1,22 @@ +@tool +extends Node + +const SIZE : float = 600. + +@onready var dome : Dome = %Dome +@onready var hex_map : HexMap = %HexMap +@onready var alien_horde_manager : AlienHordeManager = %AlienHordeManager +@onready var game_gui : GameGui = %GameGui +@onready var spawners : Node = %Spawners + +@export_tool_button("Init Game", "Callable") var load_map_action = init_game +var wave + +func _ready(): + init_game() + +func init_game(): + dome.size = SIZE + hex_map.radius = roundi(SIZE / (HexTile.BASE_TILE_SIZE * 2)) - 1 + hex_map.load_map() + diff --git a/scenes/game/game.gd.uid b/scenes/game/game.gd.uid new file mode 100644 index 0000000..3bab21f --- /dev/null +++ b/scenes/game/game.gd.uid @@ -0,0 +1 @@ +uid://duwl2xplogkr8 diff --git a/scenes/game/game.tscn b/scenes/game/game.tscn new file mode 100644 index 0000000..c56579e --- /dev/null +++ b/scenes/game/game.tscn @@ -0,0 +1,69 @@ +[gd_scene format=3 uid="uid://c72xmokv2cooh"] + +[ext_resource type="Script" uid="uid://duwl2xplogkr8" path="res://scenes/game/game.gd" id="1_5i0tg"] +[ext_resource type="PackedScene" uid="uid://0t1qprxnrxpw" path="res://entities/mecha/mecha.tscn" id="1_27f8m"] +[ext_resource type="PackedScene" uid="uid://nlli5ju37ghy" path="res://objects/dome/dome.tscn" id="3_fusjd"] +[ext_resource type="Script" uid="uid://da00pdn0rf7t5" path="res://objects/map/hex_map.gd" id="4_xayjg"] +[ext_resource type="PackedScene" uid="uid://brr2idsr7qmpf" path="res://entities/alien/alien_horde_manager/alien_horde_manager.tscn" id="5_apimt"] +[ext_resource type="PackedScene" uid="uid://bimqv18m7axjk" path="res://gui/game_gui/game_gui.tscn" id="6_5y3pt"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_omx8k"] +sky_top_color = Color(1.5281513e-06, 0.05061449, 0.19047657, 1) +sky_horizon_color = Color(0.22352941, 0.03529412, 0.2784314, 1) +sky_curve = 0.025613217 +ground_bottom_color = Color(0.22352941, 0.03529412, 0.2784314, 1) +ground_horizon_color = Color(0.22352941, 0.03529412, 0.2784314, 1) + +[sub_resource type="Sky" id="Sky_jb5pf"] +sky_material = SubResource("ProceduralSkyMaterial_omx8k") + +[sub_resource type="Environment" id="Environment_g4v7s"] +background_mode = 2 +sky = SubResource("Sky_jb5pf") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +tonemap_mode = 2 +adjustment_enabled = true +adjustment_brightness = 0.86 +adjustment_contrast = 1.075 +adjustment_saturation = 1.3 + +[sub_resource type="CameraAttributesPhysical" id="CameraAttributesPhysical_6rjad"] + +[node name="Game" type="Node" unique_id=1001231740] +script = ExtResource("1_5i0tg") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=842873254] +transform = Transform3D(-0.589464, 0.5635923, -0.5787023, -0.047807492, 0.69080204, 0.7214618, 0.8063788, 0.45294192, -0.3802589, 0, 9.893875, 0) +light_energy = 2.023 +shadow_enabled = true + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=505736504] +environment = SubResource("Environment_g4v7s") +camera_attributes = SubResource("CameraAttributesPhysical_6rjad") + +[node name="Mecha" parent="." unique_id=608967332 instance=ExtResource("1_27f8m")] +unique_name_in_owner = true + +[node name="Dome" parent="." unique_id=166719047 instance=ExtResource("3_fusjd")] +unique_name_in_owner = true +transform = Transform3D(600, 0, 0, 0, 600, 0, 0, 0, 600, 0, 0, 0) +size = 600.0 + +[node name="HexMap" type="Node3D" parent="." unique_id=1608265666] +unique_name_in_owner = true +script = ExtResource("4_xayjg") +radius = 8 +metadata/_custom_type_script = "uid://da00pdn0rf7t5" + +[node name="AlienHordeManager" parent="." unique_id=1604717993 node_paths=PackedStringArray("hex_map", "mecha") instance=ExtResource("5_apimt")] +unique_name_in_owner = true +hex_map = NodePath("../HexMap") +mecha = NodePath("../Mecha") + +[node name="GameGui" parent="." unique_id=638603976 node_paths=PackedStringArray("mecha") instance=ExtResource("6_5y3pt")] +unique_name_in_owner = true +mecha = NodePath("../Mecha") + +[node name="Spawners" type="Node" parent="." unique_id=2119144288] +unique_name_in_owner = true