From e9598b88841374301646a7115253ab38ac904e4c Mon Sep 17 00:00:00 2001 From: jacopograndi Date: Fri, 24 Dec 2021 21:10:33 +0100 Subject: working --- assets/VoxelCore.ink.svg | 310 ----------- assets/VoxelCore.ink.svg.import | 35 -- assets/VoxelCore.jpg | Bin 63534 -> 0 bytes assets/VoxelCore.jpg.import | 35 -- assets/VoxelCore.png | Bin 22543 -> 0 bytes assets/VoxelCore.png.import | 35 -- assets/VoxelCore.splash.png | Bin 24110 -> 0 bytes assets/VoxelCore.splash.png.import | 35 -- assets/VoxelCore.svg | 252 --------- assets/VoxelCore.svg.import | 35 -- assets/promo.jpg | Bin 103205 -> 0 bytes assets/promo.jpg.import | 35 -- default_env.tres | 11 +- models/shapes/T.glb | Bin 1324 -> 1528 bytes models/shapes/aT.glb | Bin 1664 -> 1872 bytes models/shapes/aaT.glb | Bin 2600 -> 2804 bytes models/shapes/aaaT.glb | Bin 4284 -> 4492 bytes models/shapes/aasT.glb | Bin 10096 -> 10304 bytes models/shapes/asT.glb | Bin 5808 -> 6012 bytes models/shapes/daT.glb | Bin 1780 -> 1988 bytes models/shapes/daaT.glb | Bin 2608 -> 2812 bytes models/shapes/daaaT.glb | Bin 4312 -> 4516 bytes models/shapes/daasT.glb | Bin 9356 -> 9560 bytes models/shapes/dasT.glb | Bin 5148 -> 5352 bytes models/shapes/dkT.glb | Bin 2472 -> 2680 bytes models/shapes/dkaT.glb | Bin 3900 -> 4108 bytes models/shapes/dkdaT.glb | Bin 4032 -> 4236 bytes models/shapes/dkdaaT.glb | Bin 7140 -> 7344 bytes models/shapes/dkdasT.glb | Bin 17480 -> 17684 bytes models/shapes/dkdsT.glb | Bin 8684 -> 8892 bytes models/shapes/dksT.glb | Bin 9708 -> 9912 bytes models/shapes/dsT.glb | Bin 3852 -> 4060 bytes models/shapes/dsaT.glb | Bin 6756 -> 6960 bytes models/shapes/dssT.glb | Bin 15472 -> 15676 bytes models/shapes/kT.glb | Bin 2148 -> 2356 bytes models/shapes/kaT.glb | Bin 3304 -> 3508 bytes models/shapes/kdaT.glb | Bin 3392 -> 3600 bytes models/shapes/kdaaT.glb | Bin 5844 -> 6052 bytes models/shapes/kdasT.glb | Bin 13196 -> 13404 bytes models/shapes/kdsT.glb | Bin 9708 -> 9912 bytes models/shapes/ksT.glb | Bin 7068 -> 7276 bytes models/shapes/sT.glb | Bin 2976 -> 3184 bytes models/shapes/saT.glb | Bin 5056 -> 5260 bytes models/shapes/ssT.glb | Bin 12020 -> 12224 bytes models/turrets/GunMat.material | Bin 1629 -> 742 bytes models/turrets/laser0.glb | Bin 219384 -> 0 bytes models/turrets/laser0.glb.import | 1065 ------------------------------------ project.godot | 11 +- scenes/gui.tscn | 455 +++++++++++++-- scripts/bullet.gd | 6 +- scripts/debug.gd | 7 +- scripts/enemies.gd | 41 +- scripts/fx/fx_enemy_damage.gd | 5 +- scripts/gui.gd | 27 +- scripts/movement.gd | 398 +++----------- scripts/path.gd | 9 +- scripts/turret.gd | 109 +++- shaders/dissolve_mat.tres | 8 +- world.tscn | 39 +- 59 files changed, 707 insertions(+), 2256 deletions(-) delete mode 100644 assets/VoxelCore.ink.svg delete mode 100644 assets/VoxelCore.ink.svg.import delete mode 100644 assets/VoxelCore.jpg delete mode 100644 assets/VoxelCore.jpg.import delete mode 100644 assets/VoxelCore.png delete mode 100644 assets/VoxelCore.png.import delete mode 100644 assets/VoxelCore.splash.png delete mode 100644 assets/VoxelCore.splash.png.import delete mode 100644 assets/VoxelCore.svg delete mode 100644 assets/VoxelCore.svg.import delete mode 100644 assets/promo.jpg delete mode 100644 assets/promo.jpg.import delete mode 100644 models/turrets/laser0.glb delete mode 100644 models/turrets/laser0.glb.import diff --git a/assets/VoxelCore.ink.svg b/assets/VoxelCore.ink.svg deleted file mode 100644 index 80122f7..0000000 --- a/assets/VoxelCore.ink.svg +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/VoxelCore.ink.svg.import b/assets/VoxelCore.ink.svg.import deleted file mode 100644 index 0bc261f..0000000 --- a/assets/VoxelCore.ink.svg.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/VoxelCore.ink.svg-4718d4ac4629898f64ded822ab0e621c.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/VoxelCore.ink.svg" -dest_files=[ "res://.import/VoxelCore.ink.svg-4718d4ac4629898f64ded822ab0e621c.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/assets/VoxelCore.jpg b/assets/VoxelCore.jpg deleted file mode 100644 index 0682677..0000000 Binary files a/assets/VoxelCore.jpg and /dev/null differ diff --git a/assets/VoxelCore.jpg.import b/assets/VoxelCore.jpg.import deleted file mode 100644 index b7462c6..0000000 --- a/assets/VoxelCore.jpg.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/VoxelCore.jpg-546a802807085d7294c1a4ac9736c075.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/VoxelCore.jpg" -dest_files=[ "res://.import/VoxelCore.jpg-546a802807085d7294c1a4ac9736c075.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/assets/VoxelCore.png b/assets/VoxelCore.png deleted file mode 100644 index c2b7b8b..0000000 Binary files a/assets/VoxelCore.png and /dev/null differ diff --git a/assets/VoxelCore.png.import b/assets/VoxelCore.png.import deleted file mode 100644 index 4a186c6..0000000 --- a/assets/VoxelCore.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/VoxelCore.png-b5b1979c6a7e5e89c6102575742c8591.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/VoxelCore.png" -dest_files=[ "res://.import/VoxelCore.png-b5b1979c6a7e5e89c6102575742c8591.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/assets/VoxelCore.splash.png b/assets/VoxelCore.splash.png deleted file mode 100644 index 2918198..0000000 Binary files a/assets/VoxelCore.splash.png and /dev/null differ diff --git a/assets/VoxelCore.splash.png.import b/assets/VoxelCore.splash.png.import deleted file mode 100644 index 405a808..0000000 --- a/assets/VoxelCore.splash.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/VoxelCore.splash.png-a49420f88bbec24a9c00c9fd284f5d33.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/VoxelCore.splash.png" -dest_files=[ "res://.import/VoxelCore.splash.png-a49420f88bbec24a9c00c9fd284f5d33.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/assets/VoxelCore.svg b/assets/VoxelCore.svg deleted file mode 100644 index 7c80149..0000000 --- a/assets/VoxelCore.svg +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/VoxelCore.svg.import b/assets/VoxelCore.svg.import deleted file mode 100644 index e2ac6be..0000000 --- a/assets/VoxelCore.svg.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/VoxelCore.svg-91360d56fcb3faae17f0313f95f6ea48.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/VoxelCore.svg" -dest_files=[ "res://.import/VoxelCore.svg-91360d56fcb3faae17f0313f95f6ea48.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/assets/promo.jpg b/assets/promo.jpg deleted file mode 100644 index 33b327c..0000000 Binary files a/assets/promo.jpg and /dev/null differ diff --git a/assets/promo.jpg.import b/assets/promo.jpg.import deleted file mode 100644 index d31ff59..0000000 --- a/assets/promo.jpg.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/promo.jpg-cc4ade6b028ccd982c4f1e280b0afbf0.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/promo.jpg" -dest_files=[ "res://.import/promo.jpg-cc4ade6b028ccd982c4f1e280b0afbf0.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/default_env.tres b/default_env.tres index 2ba632d..b2f9bcc 100644 --- a/default_env.tres +++ b/default_env.tres @@ -7,9 +7,10 @@ background_mode = 2 background_sky = SubResource( 1 ) ambient_light_color = Color( 1, 1, 1, 1 ) ambient_light_energy = 1.83 -auto_exposure_enabled = true -auto_exposure_speed = 2.35 -ss_reflections_enabled = true -ssao_enabled = true -ssao_bias = 0.102 +tonemap_mode = 3 +auto_exposure_speed = 21.0 +ssao_radius = 0.2 ssao_quality = 2 +glow_intensity = 0.1 +adjustment_enabled = true +adjustment_saturation = 1.2 diff --git a/models/shapes/T.glb b/models/shapes/T.glb index e31db85..015d6ae 100644 Binary files a/models/shapes/T.glb and b/models/shapes/T.glb differ diff --git a/models/shapes/aT.glb b/models/shapes/aT.glb index 532099f..9466b48 100644 Binary files a/models/shapes/aT.glb and b/models/shapes/aT.glb differ diff --git a/models/shapes/aaT.glb b/models/shapes/aaT.glb index 1b7bf94..54e4d7b 100644 Binary files a/models/shapes/aaT.glb and b/models/shapes/aaT.glb differ diff --git a/models/shapes/aaaT.glb b/models/shapes/aaaT.glb index 8c60771..1973a9e 100644 Binary files a/models/shapes/aaaT.glb and b/models/shapes/aaaT.glb differ diff --git a/models/shapes/aasT.glb b/models/shapes/aasT.glb index 0a142c8..cab8368 100644 Binary files a/models/shapes/aasT.glb and b/models/shapes/aasT.glb differ diff --git a/models/shapes/asT.glb b/models/shapes/asT.glb index f7c3835..f606062 100644 Binary files a/models/shapes/asT.glb and b/models/shapes/asT.glb differ diff --git a/models/shapes/daT.glb b/models/shapes/daT.glb index b496618..536cc52 100644 Binary files a/models/shapes/daT.glb and b/models/shapes/daT.glb differ diff --git a/models/shapes/daaT.glb b/models/shapes/daaT.glb index 0f06eac..29258c9 100644 Binary files a/models/shapes/daaT.glb and b/models/shapes/daaT.glb differ diff --git a/models/shapes/daaaT.glb b/models/shapes/daaaT.glb index a96360f..e2a5d05 100644 Binary files a/models/shapes/daaaT.glb and b/models/shapes/daaaT.glb differ diff --git a/models/shapes/daasT.glb b/models/shapes/daasT.glb index e42bff1..66ff689 100644 Binary files a/models/shapes/daasT.glb and b/models/shapes/daasT.glb differ diff --git a/models/shapes/dasT.glb b/models/shapes/dasT.glb index 06b78f1..f1e441b 100644 Binary files a/models/shapes/dasT.glb and b/models/shapes/dasT.glb differ diff --git a/models/shapes/dkT.glb b/models/shapes/dkT.glb index 8ec1036..11704b5 100644 Binary files a/models/shapes/dkT.glb and b/models/shapes/dkT.glb differ diff --git a/models/shapes/dkaT.glb b/models/shapes/dkaT.glb index 31f70e3..2c9650a 100644 Binary files a/models/shapes/dkaT.glb and b/models/shapes/dkaT.glb differ diff --git a/models/shapes/dkdaT.glb b/models/shapes/dkdaT.glb index e3c736c..1f0bca4 100644 Binary files a/models/shapes/dkdaT.glb and b/models/shapes/dkdaT.glb differ diff --git a/models/shapes/dkdaaT.glb b/models/shapes/dkdaaT.glb index a0efc23..d9f6814 100644 Binary files a/models/shapes/dkdaaT.glb and b/models/shapes/dkdaaT.glb differ diff --git a/models/shapes/dkdasT.glb b/models/shapes/dkdasT.glb index 1e664e4..182a33b 100644 Binary files a/models/shapes/dkdasT.glb and b/models/shapes/dkdasT.glb differ diff --git a/models/shapes/dkdsT.glb b/models/shapes/dkdsT.glb index a856970..aca6a45 100644 Binary files a/models/shapes/dkdsT.glb and b/models/shapes/dkdsT.glb differ diff --git a/models/shapes/dksT.glb b/models/shapes/dksT.glb index 9994e57..d22f530 100644 Binary files a/models/shapes/dksT.glb and b/models/shapes/dksT.glb differ diff --git a/models/shapes/dsT.glb b/models/shapes/dsT.glb index dff9c0d..6879c87 100644 Binary files a/models/shapes/dsT.glb and b/models/shapes/dsT.glb differ diff --git a/models/shapes/dsaT.glb b/models/shapes/dsaT.glb index a233665..8022fe9 100644 Binary files a/models/shapes/dsaT.glb and b/models/shapes/dsaT.glb differ diff --git a/models/shapes/dssT.glb b/models/shapes/dssT.glb index 4167013..026e479 100644 Binary files a/models/shapes/dssT.glb and b/models/shapes/dssT.glb differ diff --git a/models/shapes/kT.glb b/models/shapes/kT.glb index aea8199..e7c6500 100644 Binary files a/models/shapes/kT.glb and b/models/shapes/kT.glb differ diff --git a/models/shapes/kaT.glb b/models/shapes/kaT.glb index ba1f035..c09bd94 100644 Binary files a/models/shapes/kaT.glb and b/models/shapes/kaT.glb differ diff --git a/models/shapes/kdaT.glb b/models/shapes/kdaT.glb index d6920bd..17a0fb4 100644 Binary files a/models/shapes/kdaT.glb and b/models/shapes/kdaT.glb differ diff --git a/models/shapes/kdaaT.glb b/models/shapes/kdaaT.glb index d457de9..301214d 100644 Binary files a/models/shapes/kdaaT.glb and b/models/shapes/kdaaT.glb differ diff --git a/models/shapes/kdasT.glb b/models/shapes/kdasT.glb index 38366e9..bc866e6 100644 Binary files a/models/shapes/kdasT.glb and b/models/shapes/kdasT.glb differ diff --git a/models/shapes/kdsT.glb b/models/shapes/kdsT.glb index 89e441b..4a9edc2 100644 Binary files a/models/shapes/kdsT.glb and b/models/shapes/kdsT.glb differ diff --git a/models/shapes/ksT.glb b/models/shapes/ksT.glb index 4ffdf0a..e679c04 100644 Binary files a/models/shapes/ksT.glb and b/models/shapes/ksT.glb differ diff --git a/models/shapes/sT.glb b/models/shapes/sT.glb index 10bb6d5..d04e1aa 100644 Binary files a/models/shapes/sT.glb and b/models/shapes/sT.glb differ diff --git a/models/shapes/saT.glb b/models/shapes/saT.glb index 62366c3..450d8d2 100644 Binary files a/models/shapes/saT.glb and b/models/shapes/saT.glb differ diff --git a/models/shapes/ssT.glb b/models/shapes/ssT.glb index b98818a..f97cf40 100644 Binary files a/models/shapes/ssT.glb and b/models/shapes/ssT.glb differ diff --git a/models/turrets/GunMat.material b/models/turrets/GunMat.material index 7ac3f7b..eed9446 100644 Binary files a/models/turrets/GunMat.material and b/models/turrets/GunMat.material differ diff --git a/models/turrets/laser0.glb b/models/turrets/laser0.glb deleted file mode 100644 index 0b1093e..0000000 Binary files a/models/turrets/laser0.glb and /dev/null differ diff --git a/models/turrets/laser0.glb.import b/models/turrets/laser0.glb.import deleted file mode 100644 index db22b6f..0000000 --- a/models/turrets/laser0.glb.import +++ /dev/null @@ -1,1065 +0,0 @@ -[remap] - -importer="scene" -type="PackedScene" -path="res://.import/laser0.glb-e49ff0ef5ae347a57585d5712ace136d.scn" - -[deps] - -source_file="res://models/turrets/laser0.glb" -dest_files=[ "res://.import/laser0.glb-e49ff0ef5ae347a57585d5712ace136d.scn" ] - -[params] - -nodes/root_type="Spatial" -nodes/root_name="Scene Root" -nodes/root_scale=1.0 -nodes/custom_script="" -nodes/storage=0 -nodes/use_legacy_names=true -materials/location=1 -materials/storage=1 -materials/keep_on_reimport=true -meshes/octahedral_compression=true -meshes/compress=4286 -meshes/ensure_tangents=true -meshes/storage=0 -meshes/light_baking=0 -meshes/lightmap_texel_size=0.1 -skins/use_named_skins=true -external_files/store_in_subdir=false -animation/import=true -animation/fps=15 -animation/filter_script="" -animation/storage=false -animation/keep_custom_tracks=false -animation/optimizer/enabled=true -animation/optimizer/max_linear_error=0.05 -animation/optimizer/max_angular_error=0.01 -animation/optimizer/max_angle=22 -animation/optimizer/remove_unused_tracks=true -animation/clips/amount=0 -animation/clip_1/name="" -animation/clip_1/start_frame=0 -animation/clip_1/end_frame=0 -animation/clip_1/loops=false -animation/clip_2/name="" -animation/clip_2/start_frame=0 -animation/clip_2/end_frame=0 -animation/clip_2/loops=false -animation/clip_3/name="" -animation/clip_3/start_frame=0 -animation/clip_3/end_frame=0 -animation/clip_3/loops=false -animation/clip_4/name="" -animation/clip_4/start_frame=0 -animation/clip_4/end_frame=0 -animation/clip_4/loops=false -animation/clip_5/name="" -animation/clip_5/start_frame=0 -animation/clip_5/end_frame=0 -animation/clip_5/loops=false -animation/clip_6/name="" -animation/clip_6/start_frame=0 -animation/clip_6/end_frame=0 -animation/clip_6/loops=false -animation/clip_7/name="" -animation/clip_7/start_frame=0 -animation/clip_7/end_frame=0 -animation/clip_7/loops=false -animation/clip_8/name="" -animation/clip_8/start_frame=0 -animation/clip_8/end_frame=0 -animation/clip_8/loops=false -animation/clip_9/name="" -animation/clip_9/start_frame=0 -animation/clip_9/end_frame=0 -animation/clip_9/loops=false -animation/clip_10/name="" -animation/clip_10/start_frame=0 -animation/clip_10/end_frame=0 -animation/clip_10/loops=false -animation/clip_11/name="" -animation/clip_11/start_frame=0 -animation/clip_11/end_frame=0 -animation/clip_11/loops=false -animation/clip_12/name="" -animation/clip_12/start_frame=0 -animation/clip_12/end_frame=0 -animation/clip_12/loops=false -animation/clip_13/name="" -animation/clip_13/start_frame=0 -animation/clip_13/end_frame=0 -animation/clip_13/loops=false -animation/clip_14/name="" -animation/clip_14/start_frame=0 -animation/clip_14/end_frame=0 -animation/clip_14/loops=false -animation/clip_15/name="" -animation/clip_15/start_frame=0 -animation/clip_15/end_frame=0 -animation/clip_15/loops=false -animation/clip_16/name="" -animation/clip_16/start_frame=0 -animation/clip_16/end_frame=0 -animation/clip_16/loops=false -animation/clip_17/name="" -animation/clip_17/start_frame=0 -animation/clip_17/end_frame=0 -animation/clip_17/loops=false -animation/clip_18/name="" -animation/clip_18/start_frame=0 -animation/clip_18/end_frame=0 -animation/clip_18/loops=false -animation/clip_19/name="" -animation/clip_19/start_frame=0 -animation/clip_19/end_frame=0 -animation/clip_19/loops=false -animation/clip_20/name="" -animation/clip_20/start_frame=0 -animation/clip_20/end_frame=0 -animation/clip_20/loops=false -animation/clip_21/name="" -animation/clip_21/start_frame=0 -animation/clip_21/end_frame=0 -animation/clip_21/loops=false -animation/clip_22/name="" -animation/clip_22/start_frame=0 -animation/clip_22/end_frame=0 -animation/clip_22/loops=false -animation/clip_23/name="" -animation/clip_23/start_frame=0 -animation/clip_23/end_frame=0 -animation/clip_23/loops=false -animation/clip_24/name="" -animation/clip_24/start_frame=0 -animation/clip_24/end_frame=0 -animation/clip_24/loops=false -animation/clip_25/name="" -animation/clip_25/start_frame=0 -animation/clip_25/end_frame=0 -animation/clip_25/loops=false -animation/clip_26/name="" -animation/clip_26/start_frame=0 -animation/clip_26/end_frame=0 -animation/clip_26/loops=false -animation/clip_27/name="" -animation/clip_27/start_frame=0 -animation/clip_27/end_frame=0 -animation/clip_27/loops=false -animation/clip_28/name="" -animation/clip_28/start_frame=0 -animation/clip_28/end_frame=0 -animation/clip_28/loops=false -animation/clip_29/name="" -animation/clip_29/start_frame=0 -animation/clip_29/end_frame=0 -animation/clip_29/loops=false -animation/clip_30/name="" -animation/clip_30/start_frame=0 -animation/clip_30/end_frame=0 -animation/clip_30/loops=false -animation/clip_31/name="" -animation/clip_31/start_frame=0 -animation/clip_31/end_frame=0 -animation/clip_31/loops=false -animation/clip_32/name="" -animation/clip_32/start_frame=0 -animation/clip_32/end_frame=0 -animation/clip_32/loops=false -animation/clip_33/name="" -animation/clip_33/start_frame=0 -animation/clip_33/end_frame=0 -animation/clip_33/loops=false -animation/clip_34/name="" -animation/clip_34/start_frame=0 -animation/clip_34/end_frame=0 -animation/clip_34/loops=false -animation/clip_35/name="" -animation/clip_35/start_frame=0 -animation/clip_35/end_frame=0 -animation/clip_35/loops=false -animation/clip_36/name="" -animation/clip_36/start_frame=0 -animation/clip_36/end_frame=0 -animation/clip_36/loops=false -animation/clip_37/name="" -animation/clip_37/start_frame=0 -animation/clip_37/end_frame=0 -animation/clip_37/loops=false -animation/clip_38/name="" -animation/clip_38/start_frame=0 -animation/clip_38/end_frame=0 -animation/clip_38/loops=false -animation/clip_39/name="" -animation/clip_39/start_frame=0 -animation/clip_39/end_frame=0 -animation/clip_39/loops=false -animation/clip_40/name="" -animation/clip_40/start_frame=0 -animation/clip_40/end_frame=0 -animation/clip_40/loops=false -animation/clip_41/name="" -animation/clip_41/start_frame=0 -animation/clip_41/end_frame=0 -animation/clip_41/loops=false -animation/clip_42/name="" -animation/clip_42/start_frame=0 -animation/clip_42/end_frame=0 -animation/clip_42/loops=false -animation/clip_43/name="" -animation/clip_43/start_frame=0 -animation/clip_43/end_frame=0 -animation/clip_43/loops=false -animation/clip_44/name="" -animation/clip_44/start_frame=0 -animation/clip_44/end_frame=0 -animation/clip_44/loops=false -animation/clip_45/name="" -animation/clip_45/start_frame=0 -animation/clip_45/end_frame=0 -animation/clip_45/loops=false -animation/clip_46/name="" -animation/clip_46/start_frame=0 -animation/clip_46/end_frame=0 -animation/clip_46/loops=false -animation/clip_47/name="" -animation/clip_47/start_frame=0 -animation/clip_47/end_frame=0 -animation/clip_47/loops=false -animation/clip_48/name="" -animation/clip_48/start_frame=0 -animation/clip_48/end_frame=0 -animation/clip_48/loops=false -animation/clip_49/name="" -animation/clip_49/start_frame=0 -animation/clip_49/end_frame=0 -animation/clip_49/loops=false -animation/clip_50/name="" -animation/clip_50/start_frame=0 -animation/clip_50/end_frame=0 -animation/clip_50/loops=false -animation/clip_51/name="" -animation/clip_51/start_frame=0 -animation/clip_51/end_frame=0 -animation/clip_51/loops=false -animation/clip_52/name="" -animation/clip_52/start_frame=0 -animation/clip_52/end_frame=0 -animation/clip_52/loops=false -animation/clip_53/name="" -animation/clip_53/start_frame=0 -animation/clip_53/end_frame=0 -animation/clip_53/loops=false -animation/clip_54/name="" -animation/clip_54/start_frame=0 -animation/clip_54/end_frame=0 -animation/clip_54/loops=false -animation/clip_55/name="" -animation/clip_55/start_frame=0 -animation/clip_55/end_frame=0 -animation/clip_55/loops=false -animation/clip_56/name="" -animation/clip_56/start_frame=0 -animation/clip_56/end_frame=0 -animation/clip_56/loops=false -animation/clip_57/name="" -animation/clip_57/start_frame=0 -animation/clip_57/end_frame=0 -animation/clip_57/loops=false -animation/clip_58/name="" -animation/clip_58/start_frame=0 -animation/clip_58/end_frame=0 -animation/clip_58/loops=false -animation/clip_59/name="" -animation/clip_59/start_frame=0 -animation/clip_59/end_frame=0 -animation/clip_59/loops=false -animation/clip_60/name="" -animation/clip_60/start_frame=0 -animation/clip_60/end_frame=0 -animation/clip_60/loops=false -animation/clip_61/name="" -animation/clip_61/start_frame=0 -animation/clip_61/end_frame=0 -animation/clip_61/loops=false -animation/clip_62/name="" -animation/clip_62/start_frame=0 -animation/clip_62/end_frame=0 -animation/clip_62/loops=false -animation/clip_63/name="" -animation/clip_63/start_frame=0 -animation/clip_63/end_frame=0 -animation/clip_63/loops=false -animation/clip_64/name="" -animation/clip_64/start_frame=0 -animation/clip_64/end_frame=0 -animation/clip_64/loops=false -animation/clip_65/name="" -animation/clip_65/start_frame=0 -animation/clip_65/end_frame=0 -animation/clip_65/loops=false -animation/clip_66/name="" -animation/clip_66/start_frame=0 -animation/clip_66/end_frame=0 -animation/clip_66/loops=false -animation/clip_67/name="" -animation/clip_67/start_frame=0 -animation/clip_67/end_frame=0 -animation/clip_67/loops=false -animation/clip_68/name="" -animation/clip_68/start_frame=0 -animation/clip_68/end_frame=0 -animation/clip_68/loops=false -animation/clip_69/name="" -animation/clip_69/start_frame=0 -animation/clip_69/end_frame=0 -animation/clip_69/loops=false -animation/clip_70/name="" -animation/clip_70/start_frame=0 -animation/clip_70/end_frame=0 -animation/clip_70/loops=false -animation/clip_71/name="" -animation/clip_71/start_frame=0 -animation/clip_71/end_frame=0 -animation/clip_71/loops=false -animation/clip_72/name="" -animation/clip_72/start_frame=0 -animation/clip_72/end_frame=0 -animation/clip_72/loops=false -animation/clip_73/name="" -animation/clip_73/start_frame=0 -animation/clip_73/end_frame=0 -animation/clip_73/loops=false -animation/clip_74/name="" -animation/clip_74/start_frame=0 -animation/clip_74/end_frame=0 -animation/clip_74/loops=false -animation/clip_75/name="" -animation/clip_75/start_frame=0 -animation/clip_75/end_frame=0 -animation/clip_75/loops=false -animation/clip_76/name="" -animation/clip_76/start_frame=0 -animation/clip_76/end_frame=0 -animation/clip_76/loops=false -animation/clip_77/name="" -animation/clip_77/start_frame=0 -animation/clip_77/end_frame=0 -animation/clip_77/loops=false -animation/clip_78/name="" -animation/clip_78/start_frame=0 -animation/clip_78/end_frame=0 -animation/clip_78/loops=false -animation/clip_79/name="" -animation/clip_79/start_frame=0 -animation/clip_79/end_frame=0 -animation/clip_79/loops=false -animation/clip_80/name="" -animation/clip_80/start_frame=0 -animation/clip_80/end_frame=0 -animation/clip_80/loops=false -animation/clip_81/name="" -animation/clip_81/start_frame=0 -animation/clip_81/end_frame=0 -animation/clip_81/loops=false -animation/clip_82/name="" -animation/clip_82/start_frame=0 -animation/clip_82/end_frame=0 -animation/clip_82/loops=false -animation/clip_83/name="" -animation/clip_83/start_frame=0 -animation/clip_83/end_frame=0 -animation/clip_83/loops=false -animation/clip_84/name="" -animation/clip_84/start_frame=0 -animation/clip_84/end_frame=0 -animation/clip_84/loops=false -animation/clip_85/name="" -animation/clip_85/start_frame=0 -animation/clip_85/end_frame=0 -animation/clip_85/loops=false -animation/clip_86/name="" -animation/clip_86/start_frame=0 -animation/clip_86/end_frame=0 -animation/clip_86/loops=false -animation/clip_87/name="" -animation/clip_87/start_frame=0 -animation/clip_87/end_frame=0 -animation/clip_87/loops=false -animation/clip_88/name="" -animation/clip_88/start_frame=0 -animation/clip_88/end_frame=0 -animation/clip_88/loops=false -animation/clip_89/name="" -animation/clip_89/start_frame=0 -animation/clip_89/end_frame=0 -animation/clip_89/loops=false -animation/clip_90/name="" -animation/clip_90/start_frame=0 -animation/clip_90/end_frame=0 -animation/clip_90/loops=false -animation/clip_91/name="" -animation/clip_91/start_frame=0 -animation/clip_91/end_frame=0 -animation/clip_91/loops=false -animation/clip_92/name="" -animation/clip_92/start_frame=0 -animation/clip_92/end_frame=0 -animation/clip_92/loops=false -animation/clip_93/name="" -animation/clip_93/start_frame=0 -animation/clip_93/end_frame=0 -animation/clip_93/loops=false -animation/clip_94/name="" -animation/clip_94/start_frame=0 -animation/clip_94/end_frame=0 -animation/clip_94/loops=false -animation/clip_95/name="" -animation/clip_95/start_frame=0 -animation/clip_95/end_frame=0 -animation/clip_95/loops=false -animation/clip_96/name="" -animation/clip_96/start_frame=0 -animation/clip_96/end_frame=0 -animation/clip_96/loops=false -animation/clip_97/name="" -animation/clip_97/start_frame=0 -animation/clip_97/end_frame=0 -animation/clip_97/loops=false -animation/clip_98/name="" -animation/clip_98/start_frame=0 -animation/clip_98/end_frame=0 -animation/clip_98/loops=false -animation/clip_99/name="" -animation/clip_99/start_frame=0 -animation/clip_99/end_frame=0 -animation/clip_99/loops=false -animation/clip_100/name="" -animation/clip_100/start_frame=0 -animation/clip_100/end_frame=0 -animation/clip_100/loops=false -animation/clip_101/name="" -animation/clip_101/start_frame=0 -animation/clip_101/end_frame=0 -animation/clip_101/loops=false -animation/clip_102/name="" -animation/clip_102/start_frame=0 -animation/clip_102/end_frame=0 -animation/clip_102/loops=false -animation/clip_103/name="" -animation/clip_103/start_frame=0 -animation/clip_103/end_frame=0 -animation/clip_103/loops=false -animation/clip_104/name="" -animation/clip_104/start_frame=0 -animation/clip_104/end_frame=0 -animation/clip_104/loops=false -animation/clip_105/name="" -animation/clip_105/start_frame=0 -animation/clip_105/end_frame=0 -animation/clip_105/loops=false -animation/clip_106/name="" -animation/clip_106/start_frame=0 -animation/clip_106/end_frame=0 -animation/clip_106/loops=false -animation/clip_107/name="" -animation/clip_107/start_frame=0 -animation/clip_107/end_frame=0 -animation/clip_107/loops=false -animation/clip_108/name="" -animation/clip_108/start_frame=0 -animation/clip_108/end_frame=0 -animation/clip_108/loops=false -animation/clip_109/name="" -animation/clip_109/start_frame=0 -animation/clip_109/end_frame=0 -animation/clip_109/loops=false -animation/clip_110/name="" -animation/clip_110/start_frame=0 -animation/clip_110/end_frame=0 -animation/clip_110/loops=false -animation/clip_111/name="" -animation/clip_111/start_frame=0 -animation/clip_111/end_frame=0 -animation/clip_111/loops=false -animation/clip_112/name="" -animation/clip_112/start_frame=0 -animation/clip_112/end_frame=0 -animation/clip_112/loops=false -animation/clip_113/name="" -animation/clip_113/start_frame=0 -animation/clip_113/end_frame=0 -animation/clip_113/loops=false -animation/clip_114/name="" -animation/clip_114/start_frame=0 -animation/clip_114/end_frame=0 -animation/clip_114/loops=false -animation/clip_115/name="" -animation/clip_115/start_frame=0 -animation/clip_115/end_frame=0 -animation/clip_115/loops=false -animation/clip_116/name="" -animation/clip_116/start_frame=0 -animation/clip_116/end_frame=0 -animation/clip_116/loops=false -animation/clip_117/name="" -animation/clip_117/start_frame=0 -animation/clip_117/end_frame=0 -animation/clip_117/loops=false -animation/clip_118/name="" -animation/clip_118/start_frame=0 -animation/clip_118/end_frame=0 -animation/clip_118/loops=false -animation/clip_119/name="" -animation/clip_119/start_frame=0 -animation/clip_119/end_frame=0 -animation/clip_119/loops=false -animation/clip_120/name="" -animation/clip_120/start_frame=0 -animation/clip_120/end_frame=0 -animation/clip_120/loops=false -animation/clip_121/name="" -animation/clip_121/start_frame=0 -animation/clip_121/end_frame=0 -animation/clip_121/loops=false -animation/clip_122/name="" -animation/clip_122/start_frame=0 -animation/clip_122/end_frame=0 -animation/clip_122/loops=false -animation/clip_123/name="" -animation/clip_123/start_frame=0 -animation/clip_123/end_frame=0 -animation/clip_123/loops=false -animation/clip_124/name="" -animation/clip_124/start_frame=0 -animation/clip_124/end_frame=0 -animation/clip_124/loops=false -animation/clip_125/name="" -animation/clip_125/start_frame=0 -animation/clip_125/end_frame=0 -animation/clip_125/loops=false -animation/clip_126/name="" -animation/clip_126/start_frame=0 -animation/clip_126/end_frame=0 -animation/clip_126/loops=false -animation/clip_127/name="" -animation/clip_127/start_frame=0 -animation/clip_127/end_frame=0 -animation/clip_127/loops=false -animation/clip_128/name="" -animation/clip_128/start_frame=0 -animation/clip_128/end_frame=0 -animation/clip_128/loops=false -animation/clip_129/name="" -animation/clip_129/start_frame=0 -animation/clip_129/end_frame=0 -animation/clip_129/loops=false -animation/clip_130/name="" -animation/clip_130/start_frame=0 -animation/clip_130/end_frame=0 -animation/clip_130/loops=false -animation/clip_131/name="" -animation/clip_131/start_frame=0 -animation/clip_131/end_frame=0 -animation/clip_131/loops=false -animation/clip_132/name="" -animation/clip_132/start_frame=0 -animation/clip_132/end_frame=0 -animation/clip_132/loops=false -animation/clip_133/name="" -animation/clip_133/start_frame=0 -animation/clip_133/end_frame=0 -animation/clip_133/loops=false -animation/clip_134/name="" -animation/clip_134/start_frame=0 -animation/clip_134/end_frame=0 -animation/clip_134/loops=false -animation/clip_135/name="" -animation/clip_135/start_frame=0 -animation/clip_135/end_frame=0 -animation/clip_135/loops=false -animation/clip_136/name="" -animation/clip_136/start_frame=0 -animation/clip_136/end_frame=0 -animation/clip_136/loops=false -animation/clip_137/name="" -animation/clip_137/start_frame=0 -animation/clip_137/end_frame=0 -animation/clip_137/loops=false -animation/clip_138/name="" -animation/clip_138/start_frame=0 -animation/clip_138/end_frame=0 -animation/clip_138/loops=false -animation/clip_139/name="" -animation/clip_139/start_frame=0 -animation/clip_139/end_frame=0 -animation/clip_139/loops=false -animation/clip_140/name="" -animation/clip_140/start_frame=0 -animation/clip_140/end_frame=0 -animation/clip_140/loops=false -animation/clip_141/name="" -animation/clip_141/start_frame=0 -animation/clip_141/end_frame=0 -animation/clip_141/loops=false -animation/clip_142/name="" -animation/clip_142/start_frame=0 -animation/clip_142/end_frame=0 -animation/clip_142/loops=false -animation/clip_143/name="" -animation/clip_143/start_frame=0 -animation/clip_143/end_frame=0 -animation/clip_143/loops=false -animation/clip_144/name="" -animation/clip_144/start_frame=0 -animation/clip_144/end_frame=0 -animation/clip_144/loops=false -animation/clip_145/name="" -animation/clip_145/start_frame=0 -animation/clip_145/end_frame=0 -animation/clip_145/loops=false -animation/clip_146/name="" -animation/clip_146/start_frame=0 -animation/clip_146/end_frame=0 -animation/clip_146/loops=false -animation/clip_147/name="" -animation/clip_147/start_frame=0 -animation/clip_147/end_frame=0 -animation/clip_147/loops=false -animation/clip_148/name="" -animation/clip_148/start_frame=0 -animation/clip_148/end_frame=0 -animation/clip_148/loops=false -animation/clip_149/name="" -animation/clip_149/start_frame=0 -animation/clip_149/end_frame=0 -animation/clip_149/loops=false -animation/clip_150/name="" -animation/clip_150/start_frame=0 -animation/clip_150/end_frame=0 -animation/clip_150/loops=false -animation/clip_151/name="" -animation/clip_151/start_frame=0 -animation/clip_151/end_frame=0 -animation/clip_151/loops=false -animation/clip_152/name="" -animation/clip_152/start_frame=0 -animation/clip_152/end_frame=0 -animation/clip_152/loops=false -animation/clip_153/name="" -animation/clip_153/start_frame=0 -animation/clip_153/end_frame=0 -animation/clip_153/loops=false -animation/clip_154/name="" -animation/clip_154/start_frame=0 -animation/clip_154/end_frame=0 -animation/clip_154/loops=false -animation/clip_155/name="" -animation/clip_155/start_frame=0 -animation/clip_155/end_frame=0 -animation/clip_155/loops=false -animation/clip_156/name="" -animation/clip_156/start_frame=0 -animation/clip_156/end_frame=0 -animation/clip_156/loops=false -animation/clip_157/name="" -animation/clip_157/start_frame=0 -animation/clip_157/end_frame=0 -animation/clip_157/loops=false -animation/clip_158/name="" -animation/clip_158/start_frame=0 -animation/clip_158/end_frame=0 -animation/clip_158/loops=false -animation/clip_159/name="" -animation/clip_159/start_frame=0 -animation/clip_159/end_frame=0 -animation/clip_159/loops=false -animation/clip_160/name="" -animation/clip_160/start_frame=0 -animation/clip_160/end_frame=0 -animation/clip_160/loops=false -animation/clip_161/name="" -animation/clip_161/start_frame=0 -animation/clip_161/end_frame=0 -animation/clip_161/loops=false -animation/clip_162/name="" -animation/clip_162/start_frame=0 -animation/clip_162/end_frame=0 -animation/clip_162/loops=false -animation/clip_163/name="" -animation/clip_163/start_frame=0 -animation/clip_163/end_frame=0 -animation/clip_163/loops=false -animation/clip_164/name="" -animation/clip_164/start_frame=0 -animation/clip_164/end_frame=0 -animation/clip_164/loops=false -animation/clip_165/name="" -animation/clip_165/start_frame=0 -animation/clip_165/end_frame=0 -animation/clip_165/loops=false -animation/clip_166/name="" -animation/clip_166/start_frame=0 -animation/clip_166/end_frame=0 -animation/clip_166/loops=false -animation/clip_167/name="" -animation/clip_167/start_frame=0 -animation/clip_167/end_frame=0 -animation/clip_167/loops=false -animation/clip_168/name="" -animation/clip_168/start_frame=0 -animation/clip_168/end_frame=0 -animation/clip_168/loops=false -animation/clip_169/name="" -animation/clip_169/start_frame=0 -animation/clip_169/end_frame=0 -animation/clip_169/loops=false -animation/clip_170/name="" -animation/clip_170/start_frame=0 -animation/clip_170/end_frame=0 -animation/clip_170/loops=false -animation/clip_171/name="" -animation/clip_171/start_frame=0 -animation/clip_171/end_frame=0 -animation/clip_171/loops=false -animation/clip_172/name="" -animation/clip_172/start_frame=0 -animation/clip_172/end_frame=0 -animation/clip_172/loops=false -animation/clip_173/name="" -animation/clip_173/start_frame=0 -animation/clip_173/end_frame=0 -animation/clip_173/loops=false -animation/clip_174/name="" -animation/clip_174/start_frame=0 -animation/clip_174/end_frame=0 -animation/clip_174/loops=false -animation/clip_175/name="" -animation/clip_175/start_frame=0 -animation/clip_175/end_frame=0 -animation/clip_175/loops=false -animation/clip_176/name="" -animation/clip_176/start_frame=0 -animation/clip_176/end_frame=0 -animation/clip_176/loops=false -animation/clip_177/name="" -animation/clip_177/start_frame=0 -animation/clip_177/end_frame=0 -animation/clip_177/loops=false -animation/clip_178/name="" -animation/clip_178/start_frame=0 -animation/clip_178/end_frame=0 -animation/clip_178/loops=false -animation/clip_179/name="" -animation/clip_179/start_frame=0 -animation/clip_179/end_frame=0 -animation/clip_179/loops=false -animation/clip_180/name="" -animation/clip_180/start_frame=0 -animation/clip_180/end_frame=0 -animation/clip_180/loops=false -animation/clip_181/name="" -animation/clip_181/start_frame=0 -animation/clip_181/end_frame=0 -animation/clip_181/loops=false -animation/clip_182/name="" -animation/clip_182/start_frame=0 -animation/clip_182/end_frame=0 -animation/clip_182/loops=false -animation/clip_183/name="" -animation/clip_183/start_frame=0 -animation/clip_183/end_frame=0 -animation/clip_183/loops=false -animation/clip_184/name="" -animation/clip_184/start_frame=0 -animation/clip_184/end_frame=0 -animation/clip_184/loops=false -animation/clip_185/name="" -animation/clip_185/start_frame=0 -animation/clip_185/end_frame=0 -animation/clip_185/loops=false -animation/clip_186/name="" -animation/clip_186/start_frame=0 -animation/clip_186/end_frame=0 -animation/clip_186/loops=false -animation/clip_187/name="" -animation/clip_187/start_frame=0 -animation/clip_187/end_frame=0 -animation/clip_187/loops=false -animation/clip_188/name="" -animation/clip_188/start_frame=0 -animation/clip_188/end_frame=0 -animation/clip_188/loops=false -animation/clip_189/name="" -animation/clip_189/start_frame=0 -animation/clip_189/end_frame=0 -animation/clip_189/loops=false -animation/clip_190/name="" -animation/clip_190/start_frame=0 -animation/clip_190/end_frame=0 -animation/clip_190/loops=false -animation/clip_191/name="" -animation/clip_191/start_frame=0 -animation/clip_191/end_frame=0 -animation/clip_191/loops=false -animation/clip_192/name="" -animation/clip_192/start_frame=0 -animation/clip_192/end_frame=0 -animation/clip_192/loops=false -animation/clip_193/name="" -animation/clip_193/start_frame=0 -animation/clip_193/end_frame=0 -animation/clip_193/loops=false -animation/clip_194/name="" -animation/clip_194/start_frame=0 -animation/clip_194/end_frame=0 -animation/clip_194/loops=false -animation/clip_195/name="" -animation/clip_195/start_frame=0 -animation/clip_195/end_frame=0 -animation/clip_195/loops=false -animation/clip_196/name="" -animation/clip_196/start_frame=0 -animation/clip_196/end_frame=0 -animation/clip_196/loops=false -animation/clip_197/name="" -animation/clip_197/start_frame=0 -animation/clip_197/end_frame=0 -animation/clip_197/loops=false -animation/clip_198/name="" -animation/clip_198/start_frame=0 -animation/clip_198/end_frame=0 -animation/clip_198/loops=false -animation/clip_199/name="" -animation/clip_199/start_frame=0 -animation/clip_199/end_frame=0 -animation/clip_199/loops=false -animation/clip_200/name="" -animation/clip_200/start_frame=0 -animation/clip_200/end_frame=0 -animation/clip_200/loops=false -animation/clip_201/name="" -animation/clip_201/start_frame=0 -animation/clip_201/end_frame=0 -animation/clip_201/loops=false -animation/clip_202/name="" -animation/clip_202/start_frame=0 -animation/clip_202/end_frame=0 -animation/clip_202/loops=false -animation/clip_203/name="" -animation/clip_203/start_frame=0 -animation/clip_203/end_frame=0 -animation/clip_203/loops=false -animation/clip_204/name="" -animation/clip_204/start_frame=0 -animation/clip_204/end_frame=0 -animation/clip_204/loops=false -animation/clip_205/name="" -animation/clip_205/start_frame=0 -animation/clip_205/end_frame=0 -animation/clip_205/loops=false -animation/clip_206/name="" -animation/clip_206/start_frame=0 -animation/clip_206/end_frame=0 -animation/clip_206/loops=false -animation/clip_207/name="" -animation/clip_207/start_frame=0 -animation/clip_207/end_frame=0 -animation/clip_207/loops=false -animation/clip_208/name="" -animation/clip_208/start_frame=0 -animation/clip_208/end_frame=0 -animation/clip_208/loops=false -animation/clip_209/name="" -animation/clip_209/start_frame=0 -animation/clip_209/end_frame=0 -animation/clip_209/loops=false -animation/clip_210/name="" -animation/clip_210/start_frame=0 -animation/clip_210/end_frame=0 -animation/clip_210/loops=false -animation/clip_211/name="" -animation/clip_211/start_frame=0 -animation/clip_211/end_frame=0 -animation/clip_211/loops=false -animation/clip_212/name="" -animation/clip_212/start_frame=0 -animation/clip_212/end_frame=0 -animation/clip_212/loops=false -animation/clip_213/name="" -animation/clip_213/start_frame=0 -animation/clip_213/end_frame=0 -animation/clip_213/loops=false -animation/clip_214/name="" -animation/clip_214/start_frame=0 -animation/clip_214/end_frame=0 -animation/clip_214/loops=false -animation/clip_215/name="" -animation/clip_215/start_frame=0 -animation/clip_215/end_frame=0 -animation/clip_215/loops=false -animation/clip_216/name="" -animation/clip_216/start_frame=0 -animation/clip_216/end_frame=0 -animation/clip_216/loops=false -animation/clip_217/name="" -animation/clip_217/start_frame=0 -animation/clip_217/end_frame=0 -animation/clip_217/loops=false -animation/clip_218/name="" -animation/clip_218/start_frame=0 -animation/clip_218/end_frame=0 -animation/clip_218/loops=false -animation/clip_219/name="" -animation/clip_219/start_frame=0 -animation/clip_219/end_frame=0 -animation/clip_219/loops=false -animation/clip_220/name="" -animation/clip_220/start_frame=0 -animation/clip_220/end_frame=0 -animation/clip_220/loops=false -animation/clip_221/name="" -animation/clip_221/start_frame=0 -animation/clip_221/end_frame=0 -animation/clip_221/loops=false -animation/clip_222/name="" -animation/clip_222/start_frame=0 -animation/clip_222/end_frame=0 -animation/clip_222/loops=false -animation/clip_223/name="" -animation/clip_223/start_frame=0 -animation/clip_223/end_frame=0 -animation/clip_223/loops=false -animation/clip_224/name="" -animation/clip_224/start_frame=0 -animation/clip_224/end_frame=0 -animation/clip_224/loops=false -animation/clip_225/name="" -animation/clip_225/start_frame=0 -animation/clip_225/end_frame=0 -animation/clip_225/loops=false -animation/clip_226/name="" -animation/clip_226/start_frame=0 -animation/clip_226/end_frame=0 -animation/clip_226/loops=false -animation/clip_227/name="" -animation/clip_227/start_frame=0 -animation/clip_227/end_frame=0 -animation/clip_227/loops=false -animation/clip_228/name="" -animation/clip_228/start_frame=0 -animation/clip_228/end_frame=0 -animation/clip_228/loops=false -animation/clip_229/name="" -animation/clip_229/start_frame=0 -animation/clip_229/end_frame=0 -animation/clip_229/loops=false -animation/clip_230/name="" -animation/clip_230/start_frame=0 -animation/clip_230/end_frame=0 -animation/clip_230/loops=false -animation/clip_231/name="" -animation/clip_231/start_frame=0 -animation/clip_231/end_frame=0 -animation/clip_231/loops=false -animation/clip_232/name="" -animation/clip_232/start_frame=0 -animation/clip_232/end_frame=0 -animation/clip_232/loops=false -animation/clip_233/name="" -animation/clip_233/start_frame=0 -animation/clip_233/end_frame=0 -animation/clip_233/loops=false -animation/clip_234/name="" -animation/clip_234/start_frame=0 -animation/clip_234/end_frame=0 -animation/clip_234/loops=false -animation/clip_235/name="" -animation/clip_235/start_frame=0 -animation/clip_235/end_frame=0 -animation/clip_235/loops=false -animation/clip_236/name="" -animation/clip_236/start_frame=0 -animation/clip_236/end_frame=0 -animation/clip_236/loops=false -animation/clip_237/name="" -animation/clip_237/start_frame=0 -animation/clip_237/end_frame=0 -animation/clip_237/loops=false -animation/clip_238/name="" -animation/clip_238/start_frame=0 -animation/clip_238/end_frame=0 -animation/clip_238/loops=false -animation/clip_239/name="" -animation/clip_239/start_frame=0 -animation/clip_239/end_frame=0 -animation/clip_239/loops=false -animation/clip_240/name="" -animation/clip_240/start_frame=0 -animation/clip_240/end_frame=0 -animation/clip_240/loops=false -animation/clip_241/name="" -animation/clip_241/start_frame=0 -animation/clip_241/end_frame=0 -animation/clip_241/loops=false -animation/clip_242/name="" -animation/clip_242/start_frame=0 -animation/clip_242/end_frame=0 -animation/clip_242/loops=false -animation/clip_243/name="" -animation/clip_243/start_frame=0 -animation/clip_243/end_frame=0 -animation/clip_243/loops=false -animation/clip_244/name="" -animation/clip_244/start_frame=0 -animation/clip_244/end_frame=0 -animation/clip_244/loops=false -animation/clip_245/name="" -animation/clip_245/start_frame=0 -animation/clip_245/end_frame=0 -animation/clip_245/loops=false -animation/clip_246/name="" -animation/clip_246/start_frame=0 -animation/clip_246/end_frame=0 -animation/clip_246/loops=false -animation/clip_247/name="" -animation/clip_247/start_frame=0 -animation/clip_247/end_frame=0 -animation/clip_247/loops=false -animation/clip_248/name="" -animation/clip_248/start_frame=0 -animation/clip_248/end_frame=0 -animation/clip_248/loops=false -animation/clip_249/name="" -animation/clip_249/start_frame=0 -animation/clip_249/end_frame=0 -animation/clip_249/loops=false -animation/clip_250/name="" -animation/clip_250/start_frame=0 -animation/clip_250/end_frame=0 -animation/clip_250/loops=false -animation/clip_251/name="" -animation/clip_251/start_frame=0 -animation/clip_251/end_frame=0 -animation/clip_251/loops=false -animation/clip_252/name="" -animation/clip_252/start_frame=0 -animation/clip_252/end_frame=0 -animation/clip_252/loops=false -animation/clip_253/name="" -animation/clip_253/start_frame=0 -animation/clip_253/end_frame=0 -animation/clip_253/loops=false -animation/clip_254/name="" -animation/clip_254/start_frame=0 -animation/clip_254/end_frame=0 -animation/clip_254/loops=false -animation/clip_255/name="" -animation/clip_255/start_frame=0 -animation/clip_255/end_frame=0 -animation/clip_255/loops=false -animation/clip_256/name="" -animation/clip_256/start_frame=0 -animation/clip_256/end_frame=0 -animation/clip_256/loops=false diff --git a/project.godot b/project.godot index 11f4819..4fa3d6c 100644 --- a/project.godot +++ b/project.godot @@ -68,7 +68,7 @@ _global_script_class_icons={ [application] -config/name="snub2" +config/name="snub" run/main_scene="res://world.tscn" config/icon="res://icon.png" @@ -76,6 +76,12 @@ config/icon="res://icon.png" enabled=PoolStringArray( "res://addons/voxel-core/plugin.cfg" ) +[gui] + +theme/use_hidpi=true +theme/custom="res://themes/DarkTheme/Dark.theme" +theme/custom_font="res://themes/font.tres" + [input] movement_forward={ @@ -164,4 +170,7 @@ common/enable_pause_aware_picking=true [rendering] +quality/subsurface_scattering/quality=2 +quality/filters/msaa=4 +quality/filters/use_fxaa=true environment/default_environment="res://default_env.tres" diff --git a/scenes/gui.tscn b/scenes/gui.tscn index cde9dce..f6588d9 100644 --- a/scenes/gui.tscn +++ b/scenes/gui.tscn @@ -1,55 +1,446 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://scripts/gui.gd" type="Script" id=1] -[ext_resource path="res://scripts/debug.gd" type="Script" id=2] +[ext_resource path="res://themes/DarkTheme/Dark.theme" type="Theme" id=2] +[ext_resource path="res://scripts/gui_picker.gd" type="Script" id=3] +[ext_resource path="res://scenes/gui/gui_turret.tscn" type="PackedScene" id=4] +[ext_resource path="res://scripts/gui_turret.gd" type="Script" id=5] +[ext_resource path="res://scripts/gui_bottom_bar.gd" type="Script" id=6] +[ext_resource path="res://scripts/gui_top_bar.gd" type="Script" id=7] + +[sub_resource type="OpenSimplexNoise" id=1] +seed = -7 + +[sub_resource type="NoiseTexture" id=2] +width = 100 +height = 100 +seamless = true +noise = SubResource( 1 ) [node name="gui" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="center_dot" type="ColorRect" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -1.0 +margin_top = -1.0 +margin_right = 1.0 +margin_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="top_bar" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_min_size = Vector2( 0, 40 ) +mouse_filter = 2 +script = ExtResource( 7 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="panel" type="Panel" parent="top_bar"] +anchor_right = 1.0 +margin_bottom = 40.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="resources" type="Control" parent="top_bar/panel"] +anchor_right = 0.5 +anchor_bottom = 1.0 +margin_right = -100.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer" type="HBoxContainer" parent="top_bar/panel/resources"] +margin_right = 40.0 +margin_bottom = 40.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="cash_label" type="Label" parent="top_bar/panel/resources/HBoxContainer"] +margin_top = 7.0 +margin_right = 76.4 +margin_bottom = 31.4 +text = "Resources:" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="T" type="Label" parent="top_bar/panel/resources/HBoxContainer"] +margin_left = 79.0 +margin_top = 7.0 +margin_right = 113.4 +margin_bottom = 31.4 +text = "500T" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="k" type="Label" parent="top_bar/panel/resources/HBoxContainer"] +margin_left = 116.0 +margin_top = 7.0 +margin_right = 136.4 +margin_bottom = 31.4 +custom_colors/font_color = Color( 0.588235, 0, 1, 1 ) +text = "0k" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="a" type="Label" parent="top_bar/panel/resources/HBoxContainer"] +margin_left = 139.0 +margin_top = 7.0 +margin_right = 159.4 +margin_bottom = 31.4 +custom_colors/font_color = Color( 1, 0, 0, 1 ) +text = "0a" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="d" type="Label" parent="top_bar/panel/resources/HBoxContainer"] +margin_left = 162.0 +margin_top = 7.0 +margin_right = 182.4 +margin_bottom = 31.4 +custom_colors/font_color = Color( 0, 0.203922, 1, 1 ) +text = "0d" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="s" type="Label" parent="top_bar/panel/resources/HBoxContainer"] +margin_left = 185.0 +margin_top = 7.0 +margin_right = 205.4 +margin_bottom = 31.4 +custom_colors/font_color = Color( 1, 0.619608, 0, 1 ) +text = "0s" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="editor_button" type="Button" parent="top_bar/panel"] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -60.0 +margin_top = 5.0 +margin_right = -5.0 +margin_bottom = -5.0 +grow_horizontal = 0 +text = "Editor" __meta__ = { "_edit_use_anchors_": false } -[node name="Panel" type="Panel" parent="."] +[node name="wave_label" type="Label" parent="top_bar/panel"] +anchor_left = 0.5 +anchor_right = 0.5 +anchor_bottom = 1.0 +margin_top = 5.0 +margin_right = -10.0 +margin_bottom = -5.0 +grow_horizontal = 0 +text = "Wave 3/10" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="wave_button" type="Button" parent="top_bar/panel"] +anchor_left = 0.5 +anchor_right = 0.5 +anchor_bottom = 1.0 margin_left = 10.0 -margin_top = 11.0 -margin_right = 133.0 -margin_bottom = 124.0 -script = ExtResource( 2 ) +margin_top = 5.0 +margin_right = 81.0 +margin_bottom = -5.0 +text = "Next Wave" + +[node name="bottom_bar" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +theme = ExtResource( 2 ) +script = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": false +} -[node name="Button" type="Button" parent="Panel"] -margin_left = 8.0 -margin_top = 4.0 -margin_right = 98.0 -margin_bottom = 37.0 -text = "spawn" +[node name="voxels" type="Panel" parent="bottom_bar"] +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -270.0 +margin_bottom = -220.0 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} -[node name="Button2" type="Button" parent="Panel"] -margin_left = 5.0 -margin_top = 57.0 -margin_right = 80.0 -margin_bottom = 93.0 -text = "compute path" +[node name="ScrollContainer" type="ScrollContainer" parent="bottom_bar/voxels"] +anchor_right = 1.0 +anchor_bottom = 1.0 +scroll_vertical_enabled = false __meta__ = { "_edit_use_anchors_": false } -[node name="Panel2" type="Panel" parent="."] -margin_left = 21.0 -margin_top = 544.0 +[node name="Hbox" type="HBoxContainer" parent="bottom_bar/voxels/ScrollContainer"] margin_right = 101.0 -margin_bottom = 573.0 -script = ExtResource( 1 ) +margin_bottom = 50.0 +custom_constants/separation = 1 +alignment = 1 +__meta__ = { +"_edit_use_anchors_": false +} -[node name="Label" type="Label" parent="Panel2"] -margin_left = 6.0 -margin_top = 6.0 -margin_right = 55.0 -margin_bottom = 20.0 -text = "aawfawf" +[node name="0" type="TextureButton" parent="bottom_bar/voxels/ScrollContainer/Hbox"] +margin_right = 50.0 +margin_bottom = 50.0 +rect_min_size = Vector2( 50, 50 ) +rect_pivot_offset = Vector2( 25, 25 ) +size_flags_horizontal = 9 +script = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false } -[connection signal="button_down" from="Panel/Button" to="Panel" method="_on_Button_button_down"] -[connection signal="button_down" from="Panel/Button2" to="Panel" method="_on_Button2_button_down"] +[node name="TextureRect" type="ColorRect" parent="bottom_bar/voxels/ScrollContainer/Hbox/0"] +margin_right = 50.0 +margin_bottom = 50.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="1" type="TextureButton" parent="bottom_bar/voxels/ScrollContainer/Hbox"] +margin_left = 51.0 +margin_right = 101.0 +margin_bottom = 50.0 +rect_min_size = Vector2( 50, 50 ) +rect_pivot_offset = Vector2( 25, 25 ) +size_flags_horizontal = 9 +script = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="ColorRect" parent="bottom_bar/voxels/ScrollContainer/Hbox/1"] +margin_right = 50.0 +margin_bottom = 50.0 +color = Color( 0.619608, 0, 0.639216, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="map_tools" type="Panel" parent="bottom_bar"] +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -220.0 +margin_bottom = -120.0 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ScrollContainer" type="ScrollContainer" parent="bottom_bar/map_tools"] +anchor_right = 1.0 +anchor_bottom = 1.0 +scroll_vertical_enabled = false +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Hbox" type="HBoxContainer" parent="bottom_bar/map_tools/ScrollContainer"] +margin_right = 403.0 +margin_bottom = 100.0 +custom_constants/separation = 1 +alignment = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="attach" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"] +margin_right = 100.0 +margin_bottom = 100.0 +rect_min_size = Vector2( 100, 100 ) +rect_pivot_offset = Vector2( 50, 50 ) +size_flags_horizontal = 9 +script = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/attach"] +margin_right = 100.0 +margin_bottom = 100.0 +texture = SubResource( 2 ) +flip_v = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/attach"] +margin_left = 29.0 +margin_top = 5.0 +margin_right = 69.0 +margin_bottom = 19.0 +text = "attach" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="start path" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"] +margin_left = 101.0 +margin_right = 201.0 +margin_bottom = 100.0 +rect_min_size = Vector2( 100, 100 ) +rect_pivot_offset = Vector2( 50, 50 ) +size_flags_horizontal = 9 +script = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/start path"] +margin_right = 100.0 +margin_bottom = 100.0 +texture = SubResource( 2 ) +flip_v = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/start path"] +margin_left = 29.0 +margin_top = 5.0 +margin_right = 69.0 +margin_bottom = 19.0 +text = "start path" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="path" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"] +margin_left = 202.0 +margin_right = 302.0 +margin_bottom = 100.0 +rect_min_size = Vector2( 100, 100 ) +rect_pivot_offset = Vector2( 50, 50 ) +size_flags_horizontal = 9 +script = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/path"] +margin_right = 100.0 +margin_bottom = 100.0 +texture = SubResource( 2 ) +flip_v = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/path"] +margin_left = 29.0 +margin_top = 5.0 +margin_right = 69.0 +margin_bottom = 19.0 +text = "path" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="end path" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"] +margin_left = 303.0 +margin_right = 403.0 +margin_bottom = 100.0 +rect_min_size = Vector2( 100, 100 ) +rect_pivot_offset = Vector2( 50, 50 ) +size_flags_horizontal = 9 +script = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/end path"] +margin_right = 100.0 +margin_bottom = 100.0 +texture = SubResource( 2 ) +flip_v = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/end path"] +margin_left = 29.0 +margin_top = 5.0 +margin_right = 69.0 +margin_bottom = 19.0 +text = "end path" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="turrets" type="Panel" parent="bottom_bar"] +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -120.0 +margin_bottom = 1.0 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ScrollContainer" type="ScrollContainer" parent="bottom_bar/turrets"] +anchor_right = 1.0 +anchor_bottom = 1.0 +follow_focus = true +scroll_vertical_enabled = false +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Hbox" type="HBoxContainer" parent="bottom_bar/turrets/ScrollContainer"] +margin_right = 201.0 +margin_bottom = 120.0 +rect_min_size = Vector2( 0, 120 ) +custom_constants/separation = 1 +alignment = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="gui_turret" parent="bottom_bar/turrets/ScrollContainer/Hbox" instance=ExtResource( 4 )] + +[node name="gui_turret2" parent="bottom_bar/turrets/ScrollContainer/Hbox" instance=ExtResource( 4 )] +margin_left = 101.0 +margin_right = 201.0 + +[connection signal="button_down" from="top_bar/panel/editor_button" to="top_bar" method="_on_editor_button_down"] +[connection signal="pressed" from="top_bar/panel/wave_button" to="top_bar" method="_on_wave_button_pressed"] diff --git a/scripts/bullet.gd b/scripts/bullet.gd index 9b4434d..994d3d1 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -3,6 +3,8 @@ extends Spatial var _enemies_holder var shooter +var damage = 1 + var timer = 0 var time_life = 3 var speed = 7 @@ -10,7 +12,7 @@ var hit_something = false func _ready(): _enemies_holder = get_tree().root.get_child(0).find_node("enemies") - $Area.connect("body_entered", self, "collided") + var _err = $Area.connect("body_entered", self, "collided") func _physics_process(delta): var forward_dir = -global_transform.basis.z.normalized() @@ -27,7 +29,7 @@ func collided(body): if hit_something == false: var groups = parent.get_groups() if "enemies" in groups: - _enemies_holder.damage(parent.name) + _enemies_holder.damage(parent.name, damage) hit_something = true queue_free() diff --git a/scripts/debug.gd b/scripts/debug.gd index 339eec7..b65bd79 100644 --- a/scripts/debug.gd +++ b/scripts/debug.gd @@ -5,9 +5,9 @@ var _path var _enemies func _ready(): - _path = get_tree().root.get_child(0).find_node("path") - _player = get_tree().root.get_child(0).find_node("player") - _enemies = get_tree().root.get_child(0).find_node("enemies") + _path = get_tree().root.get_child(0).get_node("path") + _player = get_tree().root.get_child(0).get_node("player") + _enemies = get_tree().root.get_child(0).get_node("enemies") func _process(delta): pass @@ -16,7 +16,6 @@ func _process(delta): func _on_Button_button_down(): _enemies.spawn() - func _on_Button2_button_down(): var res = _path.load_nodes() _path.hide() diff --git a/scripts/enemies.gd b/scripts/enemies.gd index 08cc389..2144bdf 100644 --- a/scripts/enemies.gd +++ b/scripts/enemies.gd @@ -1,8 +1,11 @@ extends Node +var _resources : Node + var _path var _enemy_blue var _dissolve_mat : ShaderMaterial +var _enemy_mat : Material var _fx_holder var _fx_enemy_damage @@ -12,11 +15,27 @@ var _shapes = {} var serial_enemy = 0 var enemies = {} +var colors = [ + Color.red, + Color.purple, + Color.blue, + Color.mediumseagreen, + Color.green, + Color.greenyellow, + Color.yellow, + Color.orange, + Color.violet, + Color.indigo, +] + func _ready(): - _fx_holder = get_tree().root.get_child(0).find_node("fx") - _path = get_tree().root.get_child(0).find_node("path") + var root = get_tree().root.get_child(0) + _fx_holder = root.get_node("fx") + _path = root.get_node("path") + _resources = root.get_node("player").get_node("resources") _dissolve_mat = load("res://shaders/dissolve_mat.tres") + _enemy_mat = load("res://models/shapes/Enemy.material") _enemy_blue = load("res://scenes/enemy.tscn") _fx_enemy_damage = load("res://scenes/fx/enemy_damage.tscn") @@ -42,10 +61,13 @@ func spawn(): instance.name = str(serial_enemy) var instance_model = _shapes[_shapes.keys()[randi() % _shapes.size()]].instance() instance.add_child(instance_model) + instance_model.get_child(0).set_surface_material(0, _enemy_mat.duplicate()) + var axis : Vector3 = Quat(Vector3(0, randf()*TAU, 0)) * Vector3.RIGHT enemies[serial_enemy] = { "cur": 0, "hp": 10, "rel": 0, "ops": instance_model.name, - "axis": [axis.x, axis.y, axis.z] } + "axis": [axis.x, axis.y, axis.z] + } serial_enemy += 1 func node_from_id (id): @@ -87,18 +109,23 @@ func _physics_process(delta): var axis = Vector3(enemy.axis[0], enemy.axis[1], enemy.axis[2]) child.transform.basis = child.transform.basis.rotated(axis, delta) + + var mesh : MeshInstance = child.get_node(enemy.ops).get_child(0) + mesh.get_active_material(0).albedo_color = colors[enemy.hp-1] for id in delist: get_node(str(id)).queue_free() enemies.erase(id) -func damage(name): +func damage(name, amt): var id = int(name) var enemy = enemies[id] - enemies[id].hp -= 1 - fx_damage(name) + if enemy.hp > 0: + enemy.hp -= amt + _resources.add({ enemy.ops[0]: amt }) + fx_damage(name) func fx_damage(name): var id = int(name) @@ -114,4 +141,4 @@ func fx_damage(name): var instance_model = _shapes[enemy["ops"]].instance() instance.add_child(instance_model) - instance.refresh_shader(_dissolve_mat.duplicate()) + instance.refresh_shader(_dissolve_mat.duplicate(), colors[enemy.hp-1]) diff --git a/scripts/fx/fx_enemy_damage.gd b/scripts/fx/fx_enemy_damage.gd index 48f4629..2ec1d96 100644 --- a/scripts/fx/fx_enemy_damage.gd +++ b/scripts/fx/fx_enemy_damage.gd @@ -1,7 +1,7 @@ extends Spatial var timer = 0 -var timer_life = 0.5 +var timer_life = 1 var anim_size = 1 @@ -9,9 +9,10 @@ var _mesh : MeshInstance var base -func refresh_shader(mat): +func refresh_shader(mat, color : Color): _mesh = get_child(0).get_child(0) _mesh.set_surface_material(0, mat) + _mesh.get_active_material(0).set_shader_param("albedo", color) func refresh_basis(): base = transform.basis diff --git a/scripts/gui.gd b/scripts/gui.gd index bae4ffc..03a2e04 100644 --- a/scripts/gui.gd +++ b/scripts/gui.gd @@ -1,12 +1,23 @@ -extends Panel +extends Control -var _player -var _label +var player : Node +var _in_editor : bool -func _ready(): - _player = self.get_parent().get_parent().find_node("player") - _label = self.find_node("Label") +var bottom_bar : Control +var top_bar : Control + +func _fetch (): + var root = get_tree().root.get_child(0) + player = root.get_node("player") + + if bottom_bar == null: bottom_bar = get_node("bottom_bar") + if top_bar == null: top_bar = get_node("top_bar") -func _process(delta): - _label.text = str(_player.sel_map[_player.sel]) +func _ready(): + _fetch() + bottom_bar.build() +func refresh (in_editor : bool): + _fetch() + bottom_bar.refresh(in_editor) + top_bar.refresh(in_editor) diff --git a/scripts/movement.gd b/scripts/movement.gd index 0b7726d..587b338 100644 --- a/scripts/movement.gd +++ b/scripts/movement.gd @@ -1,209 +1,132 @@ extends KinematicBody +var in_editor : bool = false + var vel = Vector3() -var _mouse = Vector2() -var sensitivity_mouse = 0.1 +var camera = Camera -var _camera : Camera +var _mouse = Vector2() +var sensitivity_mouse = 10 -var _normal = Vector3.ZERO -var _colliding = false -var _colliding_group = [] -var _colliding_node -var _collision_point +var placer : Spatial var _pivot var _pivot_dist -var _pivot_rot -var _pivot_look +var _orbit_timer -var _world +var _world : VoxelMesh -var _turret : PackedScene -var _turret_holder -var _turret_blues = [] +var _gui : Control -var _attach_point -var _attach_point_holder +var _turret_holder : Node +var _attach_point_holder : Node +var path_holder : Node +var load_turrets : Node +var ptr : Node -var _path_start -var _path -var _path_end -var _path_holder +var _enemies : Node -var sel = 0; -var sel_map = [ - "turrets", "path start", "path", "path end", "attach point" -] +var sel = { + "type": "", + "name": "" +} func _ready(): - _camera = $Camera + camera = $camera + placer = $placer - _world = self.get_parent().find_node("world") - _turret_holder = self.get_parent().find_node("turrets") - _path_holder = self.get_parent().find_node("path") - _attach_point_holder = self.get_parent().find_node("attach") + var root = get_tree().root.get_child(0) - _turret = load("res://scenes/turret.tscn") - _path_start = load("res://scenes/path_start.tscn") - _path = load("res://scenes/path.tscn") - _path_end = load("res://scenes/path_end.tscn") - _attach_point = load("res://scenes/attach_point.tscn") + path_holder = root.get_node("path") + _gui = root.get_node("gui") + _enemies = root.get_node("enemies") + ptr = root.find_node("pointer"); - load_turrets() + var saveload = root.get_node("saveload") + load_turrets = saveload.get_node("load_turrets") - #_save() - _load() - -func load_turrets(): - _turret_blues = [] - var dir = Directory.new() - dir.open("res://models/turrets") - dir.list_dir_begin(true) - var turr = dir.get_next() - while turr != "": - if (turr.ends_with(".glb")): - _turret_blues.append(load("res://models/turrets/" + turr)) - turr = dir.get_next() - -func get_map_state (): - var state = {} + _gui.refresh(in_editor) - state["voxels"] = [] - for pos in _world.get_voxels(): - var vox = { "pos": [pos.x, pos.y, pos.z], "id":_world.get_voxel_id(pos) } - state["voxels"] += [vox] + refresh_path() - state["path"] = [] - for node in _path_holder.get_children(): - var pos = node.transform.origin; - var rot = node.transform.basis.get_rotation_quat(); - var pobj = { - "pos": [pos.x, pos.y, pos.z], - "rot": [rot.x, rot.y, rot.z, rot.w], - "id": node.name - } - state["path"] += [pobj] +func refresh_gui(): + _gui.refresh(in_editor) - state["attach"] = [] - for node in _attach_point_holder.get_children(): - var pos = node.transform.origin; - var rot = node.transform.basis.get_rotation_quat(); - var pobj = { - "pos": [pos.x, pos.y, pos.z], - "rot": [rot.x, rot.y, rot.z, rot.w], - "id": node.name - } - state["attach"] += [pobj] - - return state - -func set_map_state (state): - _world.erase_voxels() - for vox in state["voxels"]: - var vecpos = Vector3(vox.pos[0], vox.pos[1], vox.pos[2]); - _world.set_voxel(vecpos, vox.id) - _world.update_mesh() +func gui_editor_toggle_event (): + in_editor = !in_editor + _gui.refresh(in_editor) + refresh_path() - clear_children(_path_holder) - for pobj in state["path"]: - var blue = _path - if "start" in pobj.id: - blue = _path_start - if "end" in pobj.id: - blue = _path_end - var instance = blue.instance() - _path_holder.add_child(instance) - var vecpos = Vector3(pobj.pos[0], pobj.pos[1], pobj.pos[2]); - instance.transform.origin = vecpos; - var quat = Quat(pobj.rot[0], pobj.rot[1], pobj.rot[2], pobj.rot[3]); - instance.transform.basis = Basis(quat); +func gui_start_wave_event (): + refresh_path() + _enemies.spawn() + _gui.refresh(in_editor) - clear_children(_attach_point_holder) - for pobj in state["attach"]: - var blue = _attach_point - var instance = blue.instance() - _attach_point_holder.add_child(instance) - var vecpos = Vector3(pobj.pos[0], pobj.pos[1], pobj.pos[2]); - instance.transform.origin = vecpos; - var quat = Quat(pobj.rot[0], pobj.rot[1], pobj.rot[2], pobj.rot[3]); - instance.transform.basis = Basis(quat); - - -func _save(): - var save_game = File.new() - save_game.open("user://map0.json", File.WRITE) - save_game.store_string(to_json(get_map_state())) - save_game.close() - print("saved") - -func _load(): - var save_game = File.new() - save_game.open("user://map0.json", File.READ) - var raw = save_game.get_as_text() - save_game.close() - - var state = parse_json(raw) - set_map_state(state) - print("loaded") - -func _process(delta): - if Input.is_action_just_released("save"): - _save() - if Input.is_action_just_released("load"): - _load() - -func clear_children (node): - for n in node.get_children(): - node.remove_child(n) - n.queue_free() - -func look_free (delta, m): +func refresh_path(): + if in_editor: + path_holder.show() + else: + var _res = path_holder.load_nodes() + path_holder.hide() + +func selected_event (sel_name, sel_type): + sel.name = sel_name + sel.type = sel_type + _gui.refresh(in_editor) + + if sel_type == "turrets": + var info = load_turrets.info[sel.name] + var model = load_turrets.models[info.model_name] + var instance_model = model.instance() + instance_model.name = "preview" + ptr.add_child(instance_model) + elif sel_type != "": + ptr.get_node("base").visible = true + +func look_free (m): self.transform.basis = self.transform.basis.rotated(Vector3.UP, m.x) var rrrot = self.transform.basis.get_rotation_quat() self.transform.basis = self.transform.basis.rotated(rrrot*Vector3.RIGHT, m.y) -func look_orbit(delta, m): +func look_orbit(m): var diff : Vector3 = self.transform.origin - _pivot + _pivot_dist = diff.length() var orbit : Basis = Transform.looking_at(diff, Vector3.UP).basis orbit = orbit.rotated(Vector3.UP, m.x) orbit = orbit.rotated(orbit.get_rotation_quat()*Vector3.RIGHT, -m.y) - self.transform.basis = self.transform.basis.rotated(Vector3.UP, m.x) - var rrrot = self.transform.basis.get_rotation_quat() - self.transform.basis = self.transform.basis.rotated(rrrot*Vector3.RIGHT, m.y) - var normdiff = diff.normalized() self.transform.origin = _pivot - orbit.z * _pivot_dist + + diff = self.transform.origin - _pivot + self.transform.basis = self.transform.basis.slerp( \ + Transform.looking_at(-diff, Vector3.UP).basis, _orbit_timer) + func _move_input(delta): - var dir = Vector3() - var m = _mouse + m *= delta _mouse = Vector2() - - var orbiting = false if Input.is_action_just_pressed("orbit"): - if _colliding: - _pivot = _collision_point + if placer.colliding: + _pivot = placer.collision_point var diff : Vector3 = self.transform.origin - _pivot - _pivot_rot = Transform.looking_at(diff, Vector3.UP).basis.get_rotation_quat() _pivot_dist = diff.length() - _pivot_look = Transform(Basis(), _collision_point) + _orbit_timer = 0 else: _pivot = null + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + if Input.is_action_pressed("orbit"): + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) if _pivot != null: - orbiting = true - look_orbit(delta, m) + _orbit_timer = min(1, _orbit_timer+delta * 2) + look_orbit(m) else: - look_free(delta, m) - - Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) - - if Input.is_action_pressed("look"): - look_free(delta, m) + look_free(m) + elif Input.is_action_pressed("look"): + look_free(m) Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) var input_movement_vector = Vector3() @@ -221,7 +144,7 @@ func _move_input(delta): input_movement_vector.y -= 1 input_movement_vector = input_movement_vector.normalized() - dir = self.transform.basis.get_rotation_quat() * input_movement_vector + var dir : Vector3 = self.transform.basis.get_rotation_quat() * input_movement_vector vel += dir * delta; vel *= 0.8 @@ -230,164 +153,7 @@ func _move_input(delta): if collision: vel = Vector3(0, 0, 0) func _physics_process(delta): - if Input.is_action_just_released("cycle_forward"): - sel += 1 - if sel >= len(sel_map): - sel = len(sel_map)-1 - if Input.is_action_just_released("cycle_backward"): - sel -= 1 - if sel < 0: - sel = 0 - _move_input(delta) - _pointer() - -func check_overlap_pointer(): - var ptr = self.get_parent().find_node("pointer"); - - var overlap = false - var space = get_world().direct_space_state - - var center = ptr.transform.origin + _normal*0.25 - - var shape: = BoxShape.new() - shape.extents = Vector3(0.24, 0.24, 0.24) - - var params: = PhysicsShapeQueryParameters.new() - params.set_shape(shape) - params.collision_mask = 3 - params.transform = Transform.IDENTITY - params.transform.origin = center - - var result = space.intersect_shape(params) - for body in result: - if !body.collider.get_parent().is_in_group("attach"): - overlap = true - break - - for pos in _world.get_voxels(): - var wpos = pos * 0.5 - wpos += Vector3.ONE * (0.5 / 2) - var dist = (wpos - center).length_squared() - if dist < 0.1: - overlap = true - break - - for node in _path_holder.get_children(): - var pos = node.transform.origin - var dist = (pos - center).length_squared() - if dist < 0.1: - overlap = true - break - - return overlap - -func _inst_turret (pos, rot): - var instance = _turret.instance() - _turret_holder.add_child(instance) - instance.transform.origin = pos; - instance.transform.basis = Basis(rot); - instance.refresh_normal() - var instance_model = _turret_blues[0].instance() - instance_model.name = "model" - instance.add_child(instance_model) - instance.refresh_model() - -func _inst_path_start (pos, rot): - var instance = _path_start.instance() - _path_holder.add_child(instance) - instance.transform.origin = pos + _normal * 0.25; - instance.transform.basis = Basis(rot); - -func _inst_path (pos, rot): - var instance = _path.instance() - _path_holder.add_child(instance) - instance.transform.origin = pos + _normal * 0.25; - instance.transform.basis = Basis(rot); - instance.set_name("path") - _colliding_node.transform.basis = Basis(rot); - -func _inst_path_end (pos, rot): - var instance = _path_end.instance() - _path_holder.add_child(instance) - instance.transform.origin = pos + _normal * 0.25 - instance.transform.basis = Basis(rot); - -func _inst_attach (pos, rot): - var instance = _attach_point.instance() - _attach_point_holder.add_child(instance) - instance.transform.origin = pos; - instance.transform.basis = Basis(rot); - -func place (group, inst : FuncRef): - var ptr = self.get_parent().find_node("pointer"); - if Input.is_action_just_pressed("use"): - if _colliding && group in _colliding_group: - if !check_overlap_pointer(): - inst.call_func(ptr.transform.origin, ptr.transform.basis.get_rotation_quat()) - -func delete (group): - if Input.is_action_just_pressed("cancel"): - if _colliding && group in _colliding_group: - _colliding_node.queue_free() - -func _pointer (): - var ptr = self.get_parent().find_node("pointer"); - - var space: PhysicsDirectSpaceState = get_world().direct_space_state as PhysicsDirectSpaceState - var mouse2d = get_viewport().get_mouse_position() - var from = _camera.project_ray_origin(mouse2d) - var to = (from + _camera.project_ray_normal(mouse2d) * 5) - - ptr.transform.origin = to - - var mask = 1 - if sel in [1, 2, 3]: mask = 3 - var result = space.intersect_ray(from, to, [], mask) - if result.size() > 0: - ptr.get_child(0).visible = true - - _colliding = true - _normal = result.normal; - _collision_point = result.position - - var node = result.collider.get_parent() - _colliding_node = node - _colliding_group = node.get_groups() - - if ("voxels" in _colliding_group or "path" in _colliding_group): - var cpos = result.position - _normal * (0.5 / 2) - var _cursor_position = (cpos / 0.5).floor() * 0.5 - _cursor_position += Vector3.ONE * (0.5 / 2) + _normal * (0.5 / 2) - _collision_point = _cursor_position - - if ("attach" in _colliding_group): - _collision_point = node.global_transform.origin; - _normal = (node.global_transform.basis.get_rotation_quat() * Vector3.UP).normalized(); - - ptr.transform.basis = Basis(Utils.quat_look(_normal, Vector3.UP)) - ptr.transform.origin = _collision_point - else: - _colliding = false - _colliding_group = [] - ptr.get_child(0).visible = false - - match sel: - 0: - place("attach", funcref(self, "_inst_turret")) - delete("turret") - 1: - place("voxels", funcref(self, "_inst_path_start")) - delete("path") - 2: - place("path", funcref(self, "_inst_path")) - delete("path") - 3: - place("path", funcref(self, "_inst_path_end")) - delete("path") - 4: - place("voxels", funcref(self, "_inst_attach")) - delete("attach") func _input(event): if event is InputEventMouseMotion: diff --git a/scripts/path.gd b/scripts/path.gd index bd3b40f..f8c0fb7 100644 --- a/scripts/path.gd +++ b/scripts/path.gd @@ -8,9 +8,6 @@ const dirs = [ var nodes = [] - -func _ready(): - pass # Replace with function body. func next_node (node, dir): var pos : Vector3 = node.transform.origin @@ -59,13 +56,13 @@ func load_nodes (): func hide (): for child in get_children(): - var mesh = child.find_node("MeshInstance") + var mesh = child.get_node("MeshInstance") mesh.visible = false func show (): for child in get_children(): - var mesh = child.find_node("MeshInstance") - mesh.visible = false + var mesh = child.get_node("MeshInstance") + mesh.visible = true # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): diff --git a/scripts/turret.gd b/scripts/turret.gd index cc90dd4..9dce497 100644 --- a/scripts/turret.gd +++ b/scripts/turret.gd @@ -1,28 +1,30 @@ extends Spatial -var _path -var _enemies -var _projectiles_holder +var _path : Node +var _enemies : Node +var _projectiles_holder : Node +var _enemies_holder : Node -var _base -var _gun -var _shooting_point -var _normal +var _base : Spatial +var _gun : Spatial +var _shooting_point : Vector3 +var _normal : Vector3 var aim_mode = "first" var _target = null -var _range = 10 +var projectile : PackedScene -var projectile +var info : Dictionary -var cooldown = 0.1 var cooldown_timer = 0 func _ready(): - _path = get_tree().root.get_child(0).find_node("path") - _enemies = get_tree().root.get_child(0).find_node("enemies") - _projectiles_holder = get_tree().root.get_child(0).find_node("projectiles") + var root = get_tree().root.get_child(0) + _path = root.get_node("path") + _enemies = root.get_node("enemies") + _projectiles_holder = root.get_node("projectiles") + _enemies_holder = root.find_node("enemies") projectile = load("res://scenes/projectiles/bullet.tscn") @@ -34,17 +36,20 @@ func refresh_model(): _base = get_node("model").find_node("pivot*").find_node("base*") _gun = _base.find_node("gun*") +func refresh_info(tinfo): + self.info = tinfo + func filter_in_range(set): var filtered = [] for target in set: var node = _enemies.node_from_id(target) var dist = (node.transform.origin - _shooting_point).length_squared() - if dist < _range*_range: + if dist < info.range*info.range: filtered += [target] return filtered func filter_visible(set): - var space: PhysicsDirectSpaceState = get_world().direct_space_state as PhysicsDirectSpaceState + var space: PhysicsDirectSpaceState = get_world().direct_space_state var from = _shooting_point var filtered = [] @@ -86,28 +91,76 @@ func _physics_process(delta): var direction = (enemy.transform.origin - _shooting_point).normalized() var proj_normal = direction - _normal.dot(direction) * _normal - var base_rot = Transform().looking_at(proj_normal, _normal).basis.get_rotation_quat() + var base_rot : Quat = Transform().looking_at(proj_normal, _normal).basis.get_rotation_quat() - var perp = proj_normal.cross(_normal).normalized() + var perp = -proj_normal.cross(_normal).normalized() var proj_forward = direction - perp.dot(direction) * perp - var gun_rot = Transform().looking_at(proj_forward, perp).basis.get_rotation_quat() + var gun_rot : Quat = Transform().looking_at(proj_forward, perp).basis.get_rotation_quat() gun_rot = Quat(direction, PI/2) * gun_rot + gun_rot = gun_rot.normalized() + gun_rot = base_rot.inverse() * gun_rot - _base.global_transform.basis = Basis(base_rot) - _gun.global_transform.basis = Basis(gun_rot) + var base_basis = _base.global_transform.basis.get_rotation_quat() + var base_angle = base_basis.angle_to(base_rot) + if base_angle > 0.01: + var base_amt = (info.turn_speed * delta) / base_angle + base_amt = min(1, base_amt) + _base.global_transform.basis = Basis(base_basis.slerp(Basis(base_rot), base_amt)) + + var gun_basis = _gun.transform.basis.get_rotation_quat() + var gun_angle = gun_basis.angle_to(gun_rot) + if gun_angle > 0.01: + var gun_amt = (info.turn_speed * delta) / gun_angle + gun_amt = min(1, gun_amt) + _gun.transform.basis = Basis(gun_basis.slerp(Basis(gun_rot), gun_amt)) cooldown_timer += delta - if cooldown_timer > cooldown: - cooldown_timer -= cooldown - shoot(direction) + if cooldown_timer > info.cooldown: + cooldown_timer -= info.cooldown + shoot() + +func spread (amt : int) -> Array: + var dirs = [] + var width : int = ceil(sqrt(amt)) + for i in amt: + var dir = _gun.global_transform.basis + var x = floor(i%width)-width/2+(width+1)%2*0.5 + var y = floor(i/width)-floor(sqrt(amt)-1)/2 + var spread = info.projectile.spread + dir = dir.rotated(_normal, deg2rad(x*spread)) + dir = dir.rotated(_normal.cross(dir.z).normalized(), deg2rad(y*spread)) + dirs.append(dir) + return dirs -func shoot (dir): - shoot_projectile(dir) +func shoot (): + if info.projectile.amount > 1: + for dir in spread(info.projectile.amount): + match info.projectile.type: + "bullet": shoot_bullet(dir) + "ray": shoot_ray(dir) + else: + match info.projectile.type: + "bullet": shoot_bullet(_gun.global_transform.basis) + "ray": shoot_ray(_gun.global_transform.basis) -func shoot_projectile (dir): +func shoot_bullet (dir : Basis): var instance = projectile.instance() _projectiles_holder.add_child(instance) - instance.transform = Transform().looking_at(dir, _normal) - instance.transform.origin = _shooting_point + dir*0.3; + instance.transform.basis = dir + instance.transform.origin = _shooting_point - dir.z*0.3; instance.shooter = self + instance.damage = info.damage + instance.speed = info.projectile.speed + +func shoot_ray (dir : Basis): + var space: PhysicsDirectSpaceState = get_world().direct_space_state + var from = _shooting_point + var to = _shooting_point - dir.z*info.range; + + var result = space.intersect_ray(from, to, _path.nodes, 1) + if result.size() > 0: + var parent = result.collider.get_parent() + var groups = parent.get_groups() + if "enemies" in groups: + _enemies_holder.damage(parent.name, info.damage) diff --git a/shaders/dissolve_mat.tres b/shaders/dissolve_mat.tres index c8e2103..9ba21a7 100644 --- a/shaders/dissolve_mat.tres +++ b/shaders/dissolve_mat.tres @@ -4,7 +4,7 @@ code = "shader_type spatial; render_mode cull_disabled; -uniform sampler2D texture; +uniform vec4 albedo: hint_color = vec4(1., 1., 1., 1.); uniform sampler2D blendTexture; uniform sampler2D noiseTexture; @@ -36,7 +36,6 @@ void vertex(){ void fragment() { vec3 position = world_pos; - vec4 text = texture(texture, UV); vec4 blend = texture(blendTexture, UV * blendUVScale); vec2 st = UV; @@ -57,11 +56,11 @@ void fragment() { float borderPart = upperBorder - bottomBorder; vec4 color = mix(blend, borderColor, upperBorder); - color = mix(color, text, bottomBorder); + color = mix(color, albedo, bottomBorder); ALBEDO = color.rgb; - if (!FRONT_FACING) { + if (!FRONT_FACING && false) { ALBEDO = borderColor.rgb; NORMAL = VIEW; } @@ -88,6 +87,7 @@ noise = SubResource( 5 ) [resource] resource_local_to_scene = true shader = SubResource( 1 ) +shader_param/albedo = Color( 1, 1, 1, 1 ) shader_param/offset = 0.369 shader_param/up = true shader_param/borderColor = Color( 1, 1, 1, 0 ) diff --git a/world.tscn b/world.tscn index de0c7c6..bf0a8ec 100644 --- a/world.tscn +++ b/world.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=20 format=2] [ext_resource path="res://scripts/movement.gd" type="Script" id=1] [ext_resource path="res://scripts/enemies.gd" type="Script" id=2] @@ -7,6 +7,12 @@ [ext_resource path="res://models/pointer.obj" type="ArrayMesh" id=5] [ext_resource path="res://scenes/gui.tscn" type="PackedScene" id=6] [ext_resource path="res://scripts/path.gd" type="Script" id=7] +[ext_resource path="res://scripts/load_map.gd" type="Script" id=8] +[ext_resource path="res://scripts/load_turrets.gd" type="Script" id=9] +[ext_resource path="res://scripts/load_scenes.gd" type="Script" id=10] +[ext_resource path="res://scripts/saveload.gd" type="Script" id=11] +[ext_resource path="res://scripts/resources.gd" type="Script" id=12] +[ext_resource path="res://scripts/placer.gd" type="Script" id=13] [sub_resource type="SphereShape" id=1] @@ -49,8 +55,25 @@ data = PoolVector3Array( 0, 0.5, 0.5, 0, 0.5, 0, 0.5, 0.5, 0.5, 0, 0.5, 0, 0.5, [node name="sun" type="DirectionalLight" parent="."] transform = Transform( 0.782977, -0.605334, 0.14324, 0, 0.230271, 0.973127, -0.62205, -0.761936, 0.180297, 0, 0, 0 ) +light_color = Color( 1, 0.984314, 0.94902, 1 ) light_energy = 2.533 +light_bake_mode = 0 shadow_enabled = true +directional_shadow_blend_splits = true +directional_shadow_normal_bias = 0.209 +directional_shadow_max_distance = 10.0 + +[node name="saveload" type="Node" parent="."] +script = ExtResource( 11 ) + +[node name="load_turrets" type="Node" parent="saveload"] +script = ExtResource( 9 ) + +[node name="load_scenes" type="Node" parent="saveload"] +script = ExtResource( 10 ) + +[node name="saveload_map" type="Node" parent="saveload"] +script = ExtResource( 8 ) [node name="player" type="KinematicBody" parent="."] script = ExtResource( 1 ) @@ -59,14 +82,22 @@ script = ExtResource( 1 ) shape = SubResource( 1 ) disabled = true -[node name="Camera" type="Camera" parent="player"] +[node name="camera" type="Camera" parent="player"] current = true fov = 90.9 -far = 4482.9 +near = 0.01 +far = 2000.0 + +[node name="resources" type="Node" parent="player"] +script = ExtResource( 12 ) + +[node name="placer" type="Spatial" parent="player"] +script = ExtResource( 13 ) [node name="pointer" type="Spatial" parent="."] -[node name="MeshInstance" type="MeshInstance" parent="pointer"] +[node name="base" type="MeshInstance" parent="pointer"] +visible = false mesh = ExtResource( 5 ) material/0 = null -- cgit v1.2.3-54-g00ecf