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/LICENSE b/LICENSE index cb9c905..8ff9a07 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 kawaiizenbo +Copyright (c) 2025 Persephone (KawaiiZenbo) Bubblegum-Holiday Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/Models/3-Stage/3stHelen.glb b/Models/3-Stage/3stHelen.glb new file mode 100644 index 0000000..a2bdb2f Binary files /dev/null and b/Models/3-Stage/3stHelen.glb differ diff --git a/Models/3stHelen.glb.import b/Models/3-Stage/3stHelen.glb.import similarity index 76% rename from Models/3stHelen.glb.import rename to Models/3-Stage/3stHelen.glb.import index 1daebe8..29ea8c8 100644 --- a/Models/3stHelen.glb.import +++ b/Models/3-Stage/3stHelen.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://f0fkcs7erhop" -path="res://.godot/imported/3stHelen.glb-c3541fdb7863c3136dcc986fabbb06be.scn" +path="res://.godot/imported/3stHelen.glb-09c973ef19734a7d77b0f363ef6fade1.scn" [deps] -source_file="res://Models/3stHelen.glb" -dest_files=["res://.godot/imported/3stHelen.glb-c3541fdb7863c3136dcc986fabbb06be.scn"] +source_file="res://Models/3-Stage/3stHelen.glb" +dest_files=["res://.godot/imported/3stHelen.glb-09c973ef19734a7d77b0f363ef6fade1.scn"] [params] diff --git a/Models/3stHelen_beak.png b/Models/3-Stage/3stHelen_beak.png similarity index 100% rename from Models/3stHelen_beak.png rename to Models/3-Stage/3stHelen_beak.png diff --git a/Models/3stHelen_beak.png.import b/Models/3-Stage/3stHelen_beak.png.import similarity index 56% rename from Models/3stHelen_beak.png.import rename to Models/3-Stage/3stHelen_beak.png.import index c7dc48c..8788f58 100644 --- a/Models/3stHelen_beak.png.import +++ b/Models/3-Stage/3stHelen_beak.png.import @@ -3,9 +3,10 @@ importer="texture" type="CompressedTexture2D" uid="uid://bprmuf7jpffy3" -path.s3tc="res://.godot/imported/3stHelen_beak.png-da72f62ca7ac7e5bf5593b4d1be3a7ee.s3tc.ctex" +path.s3tc="res://.godot/imported/3stHelen_beak.png-093e64b7512180691d5a4d9b4796c163.s3tc.ctex" +path.etc2="res://.godot/imported/3stHelen_beak.png-093e64b7512180691d5a4d9b4796c163.etc2.ctex" metadata={ -"imported_formats": ["s3tc_bptc"], +"imported_formats": ["s3tc_bptc", "etc2_astc"], "vram_texture": true } generator_parameters={ @@ -14,8 +15,8 @@ generator_parameters={ [deps] -source_file="res://Models/3stHelen_beak.png" -dest_files=["res://.godot/imported/3stHelen_beak.png-da72f62ca7ac7e5bf5593b4d1be3a7ee.s3tc.ctex"] +source_file="res://Models/3-Stage/3stHelen_beak.png" +dest_files=["res://.godot/imported/3stHelen_beak.png-093e64b7512180691d5a4d9b4796c163.s3tc.ctex", "res://.godot/imported/3stHelen_beak.png-093e64b7512180691d5a4d9b4796c163.etc2.ctex"] [params] diff --git a/Models/3-Stage/3stHelen_cheer dress.png b/Models/3-Stage/3stHelen_cheer dress.png new file mode 100644 index 0000000..5ecb4bf Binary files /dev/null and b/Models/3-Stage/3stHelen_cheer dress.png differ diff --git a/Models/3-Stage/3stHelen_cheer dress.png.import b/Models/3-Stage/3stHelen_cheer dress.png.import new file mode 100644 index 0000000..040e12e --- /dev/null +++ b/Models/3-Stage/3stHelen_cheer dress.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c78fctfafkuon" +path.s3tc="res://.godot/imported/3stHelen_cheer dress.png-c2a1c708bd40884f6dbb3748c5660c8c.s3tc.ctex" +path.etc2="res://.godot/imported/3stHelen_cheer dress.png-c2a1c708bd40884f6dbb3748c5660c8c.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "7cedb51b071905707d033e23c77584cb" +} + +[deps] + +source_file="res://Models/3-Stage/3stHelen_cheer dress.png" +dest_files=["res://.godot/imported/3stHelen_cheer dress.png-c2a1c708bd40884f6dbb3748c5660c8c.s3tc.ctex", "res://.godot/imported/3stHelen_cheer dress.png-c2a1c708bd40884f6dbb3748c5660c8c.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/3-Stage/3stHelen_fur.png b/Models/3-Stage/3stHelen_fur.png new file mode 100644 index 0000000..b3c53a5 Binary files /dev/null and b/Models/3-Stage/3stHelen_fur.png differ diff --git a/Models/3-Stage/3stHelen_fur.png.import b/Models/3-Stage/3stHelen_fur.png.import new file mode 100644 index 0000000..5fc31ff --- /dev/null +++ b/Models/3-Stage/3stHelen_fur.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtd42wohdk5nf" +path.s3tc="res://.godot/imported/3stHelen_fur.png-9bde7d93521e058da6cc6f8f43774856.s3tc.ctex" +path.etc2="res://.godot/imported/3stHelen_fur.png-9bde7d93521e058da6cc6f8f43774856.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "d622cd261604f2451fe93281e2085d70" +} + +[deps] + +source_file="res://Models/3-Stage/3stHelen_fur.png" +dest_files=["res://.godot/imported/3stHelen_fur.png-9bde7d93521e058da6cc6f8f43774856.s3tc.ctex", "res://.godot/imported/3stHelen_fur.png-9bde7d93521e058da6cc6f8f43774856.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/3-Stage/3stHelen_hair.png b/Models/3-Stage/3stHelen_hair.png new file mode 100644 index 0000000..56bd6e2 Binary files /dev/null and b/Models/3-Stage/3stHelen_hair.png differ diff --git a/Models/3-Stage/3stHelen_hair.png.import b/Models/3-Stage/3stHelen_hair.png.import new file mode 100644 index 0000000..d34e5f2 --- /dev/null +++ b/Models/3-Stage/3stHelen_hair.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3264mrednlbd" +path.s3tc="res://.godot/imported/3stHelen_hair.png-0b37fd8e5c162c865cb4a11d468dd921.s3tc.ctex" +path.etc2="res://.godot/imported/3stHelen_hair.png-0b37fd8e5c162c865cb4a11d468dd921.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "35bb2072abe8c8e39214dcb47ee5fc3a" +} + +[deps] + +source_file="res://Models/3-Stage/3stHelen_hair.png" +dest_files=["res://.godot/imported/3stHelen_hair.png-0b37fd8e5c162c865cb4a11d468dd921.s3tc.ctex", "res://.godot/imported/3stHelen_hair.png-0b37fd8e5c162c865cb4a11d468dd921.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/3stHelen_shoes.png b/Models/3-Stage/3stHelen_shoes.png similarity index 100% rename from Models/3stHelen_shoes.png rename to Models/3-Stage/3stHelen_shoes.png diff --git a/Models/3stHelen_shoes.png.import b/Models/3-Stage/3stHelen_shoes.png.import similarity index 56% rename from Models/3stHelen_shoes.png.import rename to Models/3-Stage/3stHelen_shoes.png.import index 7fa6728..ade3f95 100644 --- a/Models/3stHelen_shoes.png.import +++ b/Models/3-Stage/3stHelen_shoes.png.import @@ -3,9 +3,10 @@ importer="texture" type="CompressedTexture2D" uid="uid://cm8h5o5urcvym" -path.s3tc="res://.godot/imported/3stHelen_shoes.png-97c060c3fc3442bff6f75c94bc90506a.s3tc.ctex" +path.s3tc="res://.godot/imported/3stHelen_shoes.png-61154e88a8b3c30e2bfb4db457818ce0.s3tc.ctex" +path.etc2="res://.godot/imported/3stHelen_shoes.png-61154e88a8b3c30e2bfb4db457818ce0.etc2.ctex" metadata={ -"imported_formats": ["s3tc_bptc"], +"imported_formats": ["s3tc_bptc", "etc2_astc"], "vram_texture": true } generator_parameters={ @@ -14,8 +15,8 @@ generator_parameters={ [deps] -source_file="res://Models/3stHelen_shoes.png" -dest_files=["res://.godot/imported/3stHelen_shoes.png-97c060c3fc3442bff6f75c94bc90506a.s3tc.ctex"] +source_file="res://Models/3-Stage/3stHelen_shoes.png" +dest_files=["res://.godot/imported/3stHelen_shoes.png-61154e88a8b3c30e2bfb4db457818ce0.s3tc.ctex", "res://.godot/imported/3stHelen_shoes.png-61154e88a8b3c30e2bfb4db457818ce0.etc2.ctex"] [params] diff --git a/Models/3stHelen.glb b/Models/3stHelen.glb deleted file mode 100644 index 06ed7ec..0000000 Binary files a/Models/3stHelen.glb and /dev/null differ diff --git a/Models/Balcony/BalconyStage.glb b/Models/Balcony/BalconyStage.glb new file mode 100644 index 0000000..4d14ed5 Binary files /dev/null and b/Models/Balcony/BalconyStage.glb differ diff --git a/Models/Helen.fbx.import b/Models/Balcony/BalconyStage.glb.import similarity index 64% rename from Models/Helen.fbx.import rename to Models/Balcony/BalconyStage.glb.import index 11a121e..a005e55 100644 --- a/Models/Helen.fbx.import +++ b/Models/Balcony/BalconyStage.glb.import @@ -3,13 +3,13 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://5i7srffes8ut" -path="res://.godot/imported/Helen.fbx-a3dcdd674756aa7b6860353ece3f39df.scn" +uid="uid://c6n4otfble154" +path="res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.scn" [deps] -source_file="res://3-Stage/Models/Helen.fbx" -dest_files=["res://.godot/imported/Helen.fbx-a3dcdd674756aa7b6860353ece3f39df.scn"] +source_file="res://Models/Balcony/BalconyStage.glb" +dest_files=["res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.scn"] [params] @@ -28,11 +28,10 @@ meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 -animation/trimming=true +animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" _subresources={} -fbx/importer=0 -fbx/allow_geometry_helper_nodes=false -fbx/embedded_image_handling=1 +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Models/Balcony/BalconyStage_prankbg.png b/Models/Balcony/BalconyStage_prankbg.png new file mode 100644 index 0000000..10e3109 Binary files /dev/null and b/Models/Balcony/BalconyStage_prankbg.png differ diff --git a/Models/Balcony/BalconyStage_prankbg.png.import b/Models/Balcony/BalconyStage_prankbg.png.import new file mode 100644 index 0000000..f900444 --- /dev/null +++ b/Models/Balcony/BalconyStage_prankbg.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cm643d4g33g6h" +path.s3tc="res://.godot/imported/BalconyStage_prankbg.png-be741b0faaf56dcb0bfe2448a6e85e19.s3tc.ctex" +path.etc2="res://.godot/imported/BalconyStage_prankbg.png-be741b0faaf56dcb0bfe2448a6e85e19.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "437ade1d165b37a51e8dde9c8e10394d" +} + +[deps] + +source_file="res://Models/Balcony/BalconyStage_prankbg.png" +dest_files=["res://.godot/imported/BalconyStage_prankbg.png-be741b0faaf56dcb0bfe2448a6e85e19.s3tc.ctex", "res://.godot/imported/BalconyStage_prankbg.png-be741b0faaf56dcb0bfe2448a6e85e19.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/ChuckEsCorner/ChuckEsCornerStage.glb b/Models/ChuckEsCorner/ChuckEsCornerStage.glb new file mode 100644 index 0000000..4b206e4 Binary files /dev/null and b/Models/ChuckEsCorner/ChuckEsCornerStage.glb differ diff --git a/Models/ChuckEsCorner/ChuckEsCornerStage.glb.import b/Models/ChuckEsCorner/ChuckEsCornerStage.glb.import new file mode 100644 index 0000000..94fd5f3 --- /dev/null +++ b/Models/ChuckEsCorner/ChuckEsCornerStage.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bv66hlbvtekho" +path="res://.godot/imported/ChuckEsCornerStage.glb-972590d495adda7be8c93e6d0989aa24.scn" + +[deps] + +source_file="res://Models/ChuckEsCorner/ChuckEsCornerStage.glb" +dest_files=["res://.godot/imported/ChuckEsCornerStage.glb-972590d495adda7be8c93e6d0989aa24.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +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="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Models/ChuckEsCorner/ChuckEsCornerStage_Chuck_Es_Corner_1.png b/Models/ChuckEsCorner/ChuckEsCornerStage_Chuck_Es_Corner_1.png new file mode 100644 index 0000000..7cc6469 Binary files /dev/null and b/Models/ChuckEsCorner/ChuckEsCornerStage_Chuck_Es_Corner_1.png differ diff --git a/Models/ChuckEsCorner/ChuckEsCornerStage_Chuck_Es_Corner_1.png.import b/Models/ChuckEsCorner/ChuckEsCornerStage_Chuck_Es_Corner_1.png.import new file mode 100644 index 0000000..814f541 --- /dev/null +++ b/Models/ChuckEsCorner/ChuckEsCornerStage_Chuck_Es_Corner_1.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://buqvxu4n8q6qc" +path.s3tc="res://.godot/imported/ChuckEsCornerStage_Chuck_Es_Corner_1.png-df2de8b158e2601de4629961436b760a.s3tc.ctex" +path.etc2="res://.godot/imported/ChuckEsCornerStage_Chuck_Es_Corner_1.png-df2de8b158e2601de4629961436b760a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "91cacf7bfdf049e3b957402daac9df21" +} + +[deps] + +source_file="res://Models/ChuckEsCorner/ChuckEsCornerStage_Chuck_Es_Corner_1.png" +dest_files=["res://.godot/imported/ChuckEsCornerStage_Chuck_Es_Corner_1.png-df2de8b158e2601de4629961436b760a.s3tc.ctex", "res://.godot/imported/ChuckEsCornerStage_Chuck_Es_Corner_1.png-df2de8b158e2601de4629961436b760a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/ChuckEsCorner/data.bin b/Models/ChuckEsCorner/data.bin new file mode 100644 index 0000000..d8a7f6a Binary files /dev/null and b/Models/ChuckEsCorner/data.bin differ diff --git a/Models/Cyberamics/Cyber Helen.glb b/Models/Cyberamics/Cyber Helen.glb new file mode 100644 index 0000000..c58dd1f Binary files /dev/null and b/Models/Cyberamics/Cyber Helen.glb differ diff --git a/Models/Munch.fbx.import b/Models/Cyberamics/Cyber Helen.glb.import similarity index 64% rename from Models/Munch.fbx.import rename to Models/Cyberamics/Cyber Helen.glb.import index 748c19c..0bec33a 100644 --- a/Models/Munch.fbx.import +++ b/Models/Cyberamics/Cyber Helen.glb.import @@ -3,13 +3,13 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://y5jsfwdmgwkq" -path="res://.godot/imported/Munch.fbx-5aedcf1ca9583a75c301f71dc6519957.scn" +uid="uid://d34xfaignny8j" +path="res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.scn" [deps] -source_file="res://3-Stage/Models/Munch.fbx" -dest_files=["res://.godot/imported/Munch.fbx-5aedcf1ca9583a75c301f71dc6519957.scn"] +source_file="res://Models/Cyberamics/Cyber Helen.glb" +dest_files=["res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.scn"] [params] @@ -28,11 +28,10 @@ meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 -animation/trimming=true +animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" _subresources={} -fbx/importer=0 -fbx/allow_geometry_helper_nodes=false -fbx/embedded_image_handling=1 +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Models/Cyberamics/Cyber Helen_beak.png b/Models/Cyberamics/Cyber Helen_beak.png new file mode 100644 index 0000000..7b16303 Binary files /dev/null and b/Models/Cyberamics/Cyber Helen_beak.png differ diff --git a/Models/Cyberamics/Cyber Helen_beak.png.import b/Models/Cyberamics/Cyber Helen_beak.png.import new file mode 100644 index 0000000..400ab2a --- /dev/null +++ b/Models/Cyberamics/Cyber Helen_beak.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dt2k7wwpcttwx" +path.s3tc="res://.godot/imported/Cyber Helen_beak.png-dafc891d002e04d99d222183d0d236ea.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Helen_beak.png-dafc891d002e04d99d222183d0d236ea.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "660d81a1bf46d22fbda7523d081ce944" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Helen_beak.png" +dest_files=["res://.godot/imported/Cyber Helen_beak.png-dafc891d002e04d99d222183d0d236ea.s3tc.ctex", "res://.godot/imported/Cyber Helen_beak.png-dafc891d002e04d99d222183d0d236ea.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Helen_eyes.png b/Models/Cyberamics/Cyber Helen_eyes.png new file mode 100644 index 0000000..6b69d6d Binary files /dev/null and b/Models/Cyberamics/Cyber Helen_eyes.png differ diff --git a/Models/Cyberamics/Cyber Helen_eyes.png.import b/Models/Cyberamics/Cyber Helen_eyes.png.import new file mode 100644 index 0000000..7f8cc01 --- /dev/null +++ b/Models/Cyberamics/Cyber Helen_eyes.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u6c8i8hmf55l" +path.s3tc="res://.godot/imported/Cyber Helen_eyes.png-c8e727972f281835cc003dd052d0e371.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Helen_eyes.png-c8e727972f281835cc003dd052d0e371.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "f3d293a05f8484be8751f38e0651eb91" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Helen_eyes.png" +dest_files=["res://.godot/imported/Cyber Helen_eyes.png-c8e727972f281835cc003dd052d0e371.s3tc.ctex", "res://.godot/imported/Cyber Helen_eyes.png-c8e727972f281835cc003dd052d0e371.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Helen_fur.png b/Models/Cyberamics/Cyber Helen_fur.png new file mode 100644 index 0000000..b3c53a5 Binary files /dev/null and b/Models/Cyberamics/Cyber Helen_fur.png differ diff --git a/Models/Cyberamics/Cyber Helen_fur.png.import b/Models/Cyberamics/Cyber Helen_fur.png.import new file mode 100644 index 0000000..b2c4a7c --- /dev/null +++ b/Models/Cyberamics/Cyber Helen_fur.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b874br054h4u6" +path.s3tc="res://.godot/imported/Cyber Helen_fur.png-25e5870ed95edb351ef0f52eda54dda5.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Helen_fur.png-25e5870ed95edb351ef0f52eda54dda5.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "d622cd261604f2451fe93281e2085d70" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Helen_fur.png" +dest_files=["res://.godot/imported/Cyber Helen_fur.png-25e5870ed95edb351ef0f52eda54dda5.s3tc.ctex", "res://.godot/imported/Cyber Helen_fur.png-25e5870ed95edb351ef0f52eda54dda5.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Helen_hair.png b/Models/Cyberamics/Cyber Helen_hair.png new file mode 100644 index 0000000..56bd6e2 Binary files /dev/null and b/Models/Cyberamics/Cyber Helen_hair.png differ diff --git a/Models/Cyberamics/Cyber Helen_hair.png.import b/Models/Cyberamics/Cyber Helen_hair.png.import new file mode 100644 index 0000000..c80b9e7 --- /dev/null +++ b/Models/Cyberamics/Cyber Helen_hair.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv65pevudy3dk" +path.s3tc="res://.godot/imported/Cyber Helen_hair.png-7eb38b10a596be14320077537c5df16f.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Helen_hair.png-7eb38b10a596be14320077537c5df16f.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "35bb2072abe8c8e39214dcb47ee5fc3a" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Helen_hair.png" +dest_files=["res://.godot/imported/Cyber Helen_hair.png-7eb38b10a596be14320077537c5df16f.s3tc.ctex", "res://.godot/imported/Cyber Helen_hair.png-7eb38b10a596be14320077537c5df16f.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Helen_mic.png b/Models/Cyberamics/Cyber Helen_mic.png new file mode 100644 index 0000000..72ef3ea Binary files /dev/null and b/Models/Cyberamics/Cyber Helen_mic.png differ diff --git a/Models/Cyberamics/Cyber Helen_mic.png.import b/Models/Cyberamics/Cyber Helen_mic.png.import new file mode 100644 index 0000000..faf0cd6 --- /dev/null +++ b/Models/Cyberamics/Cyber Helen_mic.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b05jw1y0ukwqu" +path.s3tc="res://.godot/imported/Cyber Helen_mic.png-47fa0aeb51ad55b858b963218d0d6ecd.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Helen_mic.png-47fa0aeb51ad55b858b963218d0d6ecd.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "0c2b737299479570c7cc39c7685d4c62" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Helen_mic.png" +dest_files=["res://.godot/imported/Cyber Helen_mic.png-47fa0aeb51ad55b858b963218d0d6ecd.s3tc.ctex", "res://.godot/imported/Cyber Helen_mic.png-47fa0aeb51ad55b858b963218d0d6ecd.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Jasper.glb b/Models/Cyberamics/Cyber Jasper.glb new file mode 100644 index 0000000..e2fe313 Binary files /dev/null and b/Models/Cyberamics/Cyber Jasper.glb differ diff --git a/Models/Cyberamics/Cyber Jasper.glb.import b/Models/Cyberamics/Cyber Jasper.glb.import new file mode 100644 index 0000000..58015b9 --- /dev/null +++ b/Models/Cyberamics/Cyber Jasper.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ba7i8p8olef2s" +path="res://.godot/imported/Cyber Jasper.glb-7156eb669feb8aeef67d143d15c0b7ad.scn" + +[deps] + +source_file="res://Models/Cyberamics/Cyber Jasper.glb" +dest_files=["res://.godot/imported/Cyber Jasper.glb-7156eb669feb8aeef67d143d15c0b7ad.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +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="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Models/Cyberamics/Cyber Jasper_denim.png b/Models/Cyberamics/Cyber Jasper_denim.png new file mode 100644 index 0000000..8a6d8e7 Binary files /dev/null and b/Models/Cyberamics/Cyber Jasper_denim.png differ diff --git a/Models/Cyberamics/Cyber Jasper_denim.png.import b/Models/Cyberamics/Cyber Jasper_denim.png.import new file mode 100644 index 0000000..0837877 --- /dev/null +++ b/Models/Cyberamics/Cyber Jasper_denim.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://q20cddw2xrei" +path.s3tc="res://.godot/imported/Cyber Jasper_denim.png-d8598725528ffd5195e28e0eec9cd741.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Jasper_denim.png-d8598725528ffd5195e28e0eec9cd741.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "402d309e5ed850ba52e293c0656acf10" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Jasper_denim.png" +dest_files=["res://.godot/imported/Cyber Jasper_denim.png-d8598725528ffd5195e28e0eec9cd741.s3tc.ctex", "res://.godot/imported/Cyber Jasper_denim.png-d8598725528ffd5195e28e0eec9cd741.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Jasper_eyes.png b/Models/Cyberamics/Cyber Jasper_eyes.png new file mode 100644 index 0000000..fb32529 Binary files /dev/null and b/Models/Cyberamics/Cyber Jasper_eyes.png differ diff --git a/Models/Cyberamics/Cyber Jasper_eyes.png.import b/Models/Cyberamics/Cyber Jasper_eyes.png.import new file mode 100644 index 0000000..131a261 --- /dev/null +++ b/Models/Cyberamics/Cyber Jasper_eyes.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nwgwmia0tqak" +path.s3tc="res://.godot/imported/Cyber Jasper_eyes.png-3656e523e85be9bc7e5d4df443165869.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Jasper_eyes.png-3656e523e85be9bc7e5d4df443165869.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "d05686d9b10603e16e5810f67def9d24" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Jasper_eyes.png" +dest_files=["res://.godot/imported/Cyber Jasper_eyes.png-3656e523e85be9bc7e5d4df443165869.s3tc.ctex", "res://.godot/imported/Cyber Jasper_eyes.png-3656e523e85be9bc7e5d4df443165869.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Jasper_muzzle.png b/Models/Cyberamics/Cyber Jasper_muzzle.png new file mode 100644 index 0000000..a6c47ad Binary files /dev/null and b/Models/Cyberamics/Cyber Jasper_muzzle.png differ diff --git a/Models/Cyberamics/Cyber Jasper_muzzle.png.import b/Models/Cyberamics/Cyber Jasper_muzzle.png.import new file mode 100644 index 0000000..d957bfc --- /dev/null +++ b/Models/Cyberamics/Cyber Jasper_muzzle.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyegy5aix0jnm" +path.s3tc="res://.godot/imported/Cyber Jasper_muzzle.png-1363f785a4c6b6366aae4b87bbe29a4a.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Jasper_muzzle.png-1363f785a4c6b6366aae4b87bbe29a4a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "078b2003477a7c7835cfd9643aee65c3" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Jasper_muzzle.png" +dest_files=["res://.godot/imported/Cyber Jasper_muzzle.png-1363f785a4c6b6366aae4b87bbe29a4a.s3tc.ctex", "res://.godot/imported/Cyber Jasper_muzzle.png-1363f785a4c6b6366aae4b87bbe29a4a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Jasper_shirt_cow_print.png b/Models/Cyberamics/Cyber Jasper_shirt_cow_print.png new file mode 100644 index 0000000..56bd6e2 Binary files /dev/null and b/Models/Cyberamics/Cyber Jasper_shirt_cow_print.png differ diff --git a/Models/Cyberamics/Cyber Jasper_shirt_cow_print.png.import b/Models/Cyberamics/Cyber Jasper_shirt_cow_print.png.import new file mode 100644 index 0000000..f0fb509 --- /dev/null +++ b/Models/Cyberamics/Cyber Jasper_shirt_cow_print.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0hh0000v6h8y" +path.s3tc="res://.godot/imported/Cyber Jasper_shirt_cow_print.png-de5138976b0094419018b0936baa9497.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Jasper_shirt_cow_print.png-de5138976b0094419018b0936baa9497.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "35bb2072abe8c8e39214dcb47ee5fc3a" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Jasper_shirt_cow_print.png" +dest_files=["res://.godot/imported/Cyber Jasper_shirt_cow_print.png-de5138976b0094419018b0936baa9497.s3tc.ctex", "res://.godot/imported/Cyber Jasper_shirt_cow_print.png-de5138976b0094419018b0936baa9497.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyber Jasper_shirt_rocker.png b/Models/Cyberamics/Cyber Jasper_shirt_rocker.png new file mode 100644 index 0000000..d98871e Binary files /dev/null and b/Models/Cyberamics/Cyber Jasper_shirt_rocker.png differ diff --git a/Models/Cyberamics/Cyber Jasper_shirt_rocker.png.import b/Models/Cyberamics/Cyber Jasper_shirt_rocker.png.import new file mode 100644 index 0000000..3ed149b --- /dev/null +++ b/Models/Cyberamics/Cyber Jasper_shirt_rocker.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bcbsootxxvpjb" +path.s3tc="res://.godot/imported/Cyber Jasper_shirt_rocker.png-f0e49ba2d7398b113f1af6030157a14e.s3tc.ctex" +path.etc2="res://.godot/imported/Cyber Jasper_shirt_rocker.png-f0e49ba2d7398b113f1af6030157a14e.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "af4edca67cb9ab3accdc565f145f9c99" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyber Jasper_shirt_rocker.png" +dest_files=["res://.godot/imported/Cyber Jasper_shirt_rocker.png-f0e49ba2d7398b113f1af6030157a14e.s3tc.ctex", "res://.godot/imported/Cyber Jasper_shirt_rocker.png-f0e49ba2d7398b113f1af6030157a14e.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck.glb b/Models/Cyberamics/Cyberamic Chuck.glb new file mode 100644 index 0000000..140a7b3 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck.glb differ diff --git a/Models/Chuck.fbx.import b/Models/Cyberamics/Cyberamic Chuck.glb.import similarity index 63% rename from Models/Chuck.fbx.import rename to Models/Cyberamics/Cyberamic Chuck.glb.import index fee6fc1..faf11ce 100644 --- a/Models/Chuck.fbx.import +++ b/Models/Cyberamics/Cyberamic Chuck.glb.import @@ -3,13 +3,13 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://cs0va7jp6fjfa" -path="res://.godot/imported/Chuck.fbx-e0f76e66bd2d66a68bf43edbd8d1d948.scn" +uid="uid://c2j62syov3skq" +path="res://.godot/imported/Cyberamic Chuck.glb-7640bcf570eaf553eddfec5de3e96502.scn" [deps] -source_file="res://3-Stage/Models/Chuck.fbx" -dest_files=["res://.godot/imported/Chuck.fbx-e0f76e66bd2d66a68bf43edbd8d1d948.scn"] +source_file="res://Models/Cyberamics/Cyberamic Chuck.glb" +dest_files=["res://.godot/imported/Cyberamic Chuck.glb-7640bcf570eaf553eddfec5de3e96502.scn"] [params] @@ -28,11 +28,10 @@ meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 -animation/trimming=true +animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" _subresources={} -fbx/importer=0 -fbx/allow_geometry_helper_nodes=false -fbx/embedded_image_handling=1 +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Models/Cyberamics/Cyberamic Chuck_avenger chuck shirt.png b/Models/Cyberamics/Cyberamic Chuck_avenger chuck shirt.png new file mode 100644 index 0000000..473ca17 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_avenger chuck shirt.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_avenger chuck shirt.png.import b/Models/Cyberamics/Cyberamic Chuck_avenger chuck shirt.png.import new file mode 100644 index 0000000..516457a --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_avenger chuck shirt.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8li1pbbld1r6" +path.s3tc="res://.godot/imported/Cyberamic Chuck_avenger chuck shirt.png-ef24b9642c3c8e09e634fc0b19923210.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_avenger chuck shirt.png-ef24b9642c3c8e09e634fc0b19923210.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "d05498ddd2256dae1de9c85a416823f1" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_avenger chuck shirt.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_avenger chuck shirt.png-ef24b9642c3c8e09e634fc0b19923210.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_avenger chuck shirt.png-ef24b9642c3c8e09e634fc0b19923210.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_avenger hat.png b/Models/Cyberamics/Cyberamic Chuck_avenger hat.png new file mode 100644 index 0000000..3b25282 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_avenger hat.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_avenger hat.png.import b/Models/Cyberamics/Cyberamic Chuck_avenger hat.png.import new file mode 100644 index 0000000..28242f2 --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_avenger hat.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://im1r1enoj4l3" +path.s3tc="res://.godot/imported/Cyberamic Chuck_avenger hat.png-29377b5e8b656b2b533aeba9277b6de7.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_avenger hat.png-29377b5e8b656b2b533aeba9277b6de7.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "eda0a6f93a90b3b6fa865784593fcd9f" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_avenger hat.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_avenger hat.png-29377b5e8b656b2b533aeba9277b6de7.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_avenger hat.png-29377b5e8b656b2b533aeba9277b6de7.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_cool chuck hat.png b/Models/Cyberamics/Cyberamic Chuck_cool chuck hat.png new file mode 100644 index 0000000..8ca275a Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_cool chuck hat.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_cool chuck hat.png.import b/Models/Cyberamics/Cyberamic Chuck_cool chuck hat.png.import new file mode 100644 index 0000000..3437fa1 --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_cool chuck hat.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgfogdr7mgqrn" +path.s3tc="res://.godot/imported/Cyberamic Chuck_cool chuck hat.png-92e57bd583b5fddebeb2b5a26a27b65f.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_cool chuck hat.png-92e57bd583b5fddebeb2b5a26a27b65f.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "30dda0ec4550d8b59629241b11fcb967" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_cool chuck hat.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_cool chuck hat.png-92e57bd583b5fddebeb2b5a26a27b65f.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_cool chuck hat.png-92e57bd583b5fddebeb2b5a26a27b65f.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_cool chuck shirt.png b/Models/Cyberamics/Cyberamic Chuck_cool chuck shirt.png new file mode 100644 index 0000000..167eb4d Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_cool chuck shirt.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_cool chuck shirt.png.import b/Models/Cyberamics/Cyberamic Chuck_cool chuck shirt.png.import new file mode 100644 index 0000000..70b496e --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_cool chuck shirt.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpyxdwmo2mitw" +path.s3tc="res://.godot/imported/Cyberamic Chuck_cool chuck shirt.png-52e5a2fe3b0c7d22e5cbd78c1c7500a9.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_cool chuck shirt.png-52e5a2fe3b0c7d22e5cbd78c1c7500a9.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "47d45b1d7535be024d7328edf43a202e" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_cool chuck shirt.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_cool chuck shirt.png-52e5a2fe3b0c7d22e5cbd78c1c7500a9.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_cool chuck shirt.png-52e5a2fe3b0c7d22e5cbd78c1c7500a9.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_derby.png b/Models/Cyberamics/Cyberamic Chuck_derby.png new file mode 100644 index 0000000..1f40a12 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_derby.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_derby.png.import b/Models/Cyberamics/Cyberamic Chuck_derby.png.import new file mode 100644 index 0000000..215a507 --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_derby.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbweai1832bm3" +path.s3tc="res://.godot/imported/Cyberamic Chuck_derby.png-7bc146630594177e24ceda21a9c7859a.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_derby.png-7bc146630594177e24ceda21a9c7859a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "b7dcfc8d03f78489056415859985c5e8" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_derby.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_derby.png-7bc146630594177e24ceda21a9c7859a.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_derby.png-7bc146630594177e24ceda21a9c7859a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_eyes.png b/Models/Cyberamics/Cyberamic Chuck_eyes.png new file mode 100644 index 0000000..14dcc16 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_eyes.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_eyes.png.import b/Models/Cyberamics/Cyberamic Chuck_eyes.png.import new file mode 100644 index 0000000..2a6d6da --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_eyes.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n8fyvmnwkd5f" +path.s3tc="res://.godot/imported/Cyberamic Chuck_eyes.png-833864a46a4992a27ec42be8deaf2902.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_eyes.png-833864a46a4992a27ec42be8deaf2902.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "de6b71a0b6b2ef973e666c75df9734be" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_eyes.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_eyes.png-833864a46a4992a27ec42be8deaf2902.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_eyes.png-833864a46a4992a27ec42be8deaf2902.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_fur.png b/Models/Cyberamics/Cyberamic Chuck_fur.png new file mode 100644 index 0000000..30cd299 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_fur.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_fur.png.import b/Models/Cyberamics/Cyberamic Chuck_fur.png.import new file mode 100644 index 0000000..d39617c --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_fur.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4tq7klloya28" +path.s3tc="res://.godot/imported/Cyberamic Chuck_fur.png-5da3fabde0b41b5765b323a829d6681a.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_fur.png-5da3fabde0b41b5765b323a829d6681a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "6dc122b4f22f3c13939182e577582275" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_fur.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_fur.png-5da3fabde0b41b5765b323a829d6681a.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_fur.png-5da3fabde0b41b5765b323a829d6681a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_jaw.png b/Models/Cyberamics/Cyberamic Chuck_jaw.png new file mode 100644 index 0000000..becab0e Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_jaw.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_jaw.png.import b/Models/Cyberamics/Cyberamic Chuck_jaw.png.import new file mode 100644 index 0000000..ac445d4 --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_jaw.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6i5p7ssueq1c" +path.s3tc="res://.godot/imported/Cyberamic Chuck_jaw.png-77869e5cf0e223c7b7e77b4c6ef73abc.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_jaw.png-77869e5cf0e223c7b7e77b4c6ef73abc.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "dce09f49a6e472d9d20fd12ae0105263" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_jaw.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_jaw.png-77869e5cf0e223c7b7e77b4c6ef73abc.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_jaw.png-77869e5cf0e223c7b7e77b4c6ef73abc.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_mic.png b/Models/Cyberamics/Cyberamic Chuck_mic.png new file mode 100644 index 0000000..72ef3ea Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_mic.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_mic.png.import b/Models/Cyberamics/Cyberamic Chuck_mic.png.import new file mode 100644 index 0000000..90d4bb4 --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_mic.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btm7ni51m76xy" +path.s3tc="res://.godot/imported/Cyberamic Chuck_mic.png-a001658a24b06e235c5f95469e65dd38.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_mic.png-a001658a24b06e235c5f95469e65dd38.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "0c2b737299479570c7cc39c7685d4c62" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_mic.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_mic.png-a001658a24b06e235c5f95469e65dd38.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_mic.png-a001658a24b06e235c5f95469e65dd38.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_modern jaw.png b/Models/Cyberamics/Cyberamic Chuck_modern jaw.png new file mode 100644 index 0000000..63dcf64 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_modern jaw.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_modern jaw.png.import b/Models/Cyberamics/Cyberamic Chuck_modern jaw.png.import new file mode 100644 index 0000000..46cadc4 --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_modern jaw.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2im7s145j3ba" +path.s3tc="res://.godot/imported/Cyberamic Chuck_modern jaw.png-cbbfdab929ad63a720505602abfbed7a.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_modern jaw.png-cbbfdab929ad63a720505602abfbed7a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "40535739a152a771fa57e75e1df9b011" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_modern jaw.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_modern jaw.png-cbbfdab929ad63a720505602abfbed7a.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_modern jaw.png-cbbfdab929ad63a720505602abfbed7a.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Cyberamic Chuck_vest.png b/Models/Cyberamics/Cyberamic Chuck_vest.png new file mode 100644 index 0000000..594a1b9 Binary files /dev/null and b/Models/Cyberamics/Cyberamic Chuck_vest.png differ diff --git a/Models/Cyberamics/Cyberamic Chuck_vest.png.import b/Models/Cyberamics/Cyberamic Chuck_vest.png.import new file mode 100644 index 0000000..3a6567d --- /dev/null +++ b/Models/Cyberamics/Cyberamic Chuck_vest.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjjfoyalnst1d" +path.s3tc="res://.godot/imported/Cyberamic Chuck_vest.png-f2e092297f624fd3dd64f2cbcf170064.s3tc.ctex" +path.etc2="res://.godot/imported/Cyberamic Chuck_vest.png-f2e092297f624fd3dd64f2cbcf170064.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "cdfb9781f38ce700fb6a6329107289e5" +} + +[deps] + +source_file="res://Models/Cyberamics/Cyberamic Chuck_vest.png" +dest_files=["res://.godot/imported/Cyberamic Chuck_vest.png-f2e092297f624fd3dd64f2cbcf170064.s3tc.ctex", "res://.godot/imported/Cyberamic Chuck_vest.png-f2e092297f624fd3dd64f2cbcf170064.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Cyberamics/Warblettes.glb b/Models/Cyberamics/Warblettes.glb new file mode 100644 index 0000000..222c974 Binary files /dev/null and b/Models/Cyberamics/Warblettes.glb differ diff --git a/Models/Cyberamics/Warblettes.glb.import b/Models/Cyberamics/Warblettes.glb.import new file mode 100644 index 0000000..598bb73 --- /dev/null +++ b/Models/Cyberamics/Warblettes.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dmh5upwts8y11" +path="res://.godot/imported/Warblettes.glb-4411a6da11355afeccccd99ded899996.scn" + +[deps] + +source_file="res://Models/Cyberamics/Warblettes.glb" +dest_files=["res://.godot/imported/Warblettes.glb-4411a6da11355afeccccd99ded899996.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +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="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Models/Cyberamics/Warblettes_fur.png b/Models/Cyberamics/Warblettes_fur.png new file mode 100644 index 0000000..b903419 Binary files /dev/null and b/Models/Cyberamics/Warblettes_fur.png differ diff --git a/Models/Cyberamics/Warblettes_fur.png.import b/Models/Cyberamics/Warblettes_fur.png.import new file mode 100644 index 0000000..aa9cbfb --- /dev/null +++ b/Models/Cyberamics/Warblettes_fur.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jp06lvl1l4kf" +path.s3tc="res://.godot/imported/Warblettes_fur.png-9635d2a2f1884e838e8285a0042af334.s3tc.ctex" +path.etc2="res://.godot/imported/Warblettes_fur.png-9635d2a2f1884e838e8285a0042af334.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "e63b9c660d716af6780b5637f38da662" +} + +[deps] + +source_file="res://Models/Cyberamics/Warblettes_fur.png" +dest_files=["res://.godot/imported/Warblettes_fur.png-9635d2a2f1884e838e8285a0042af334.s3tc.ctex", "res://.godot/imported/Warblettes_fur.png-9635d2a2f1884e838e8285a0042af334.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Models/Room.glb b/Models/HelenHouse/HelenHouse-Room.glb similarity index 100% rename from Models/Room.glb rename to Models/HelenHouse/HelenHouse-Room.glb diff --git a/Models/Room.glb.import b/Models/HelenHouse/HelenHouse-Room.glb.import similarity index 74% rename from Models/Room.glb.import rename to Models/HelenHouse/HelenHouse-Room.glb.import index a2980ee..ec642f8 100644 --- a/Models/Room.glb.import +++ b/Models/HelenHouse/HelenHouse-Room.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://bhoeqcsdb0fx2" -path="res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.scn" +path="res://.godot/imported/HelenHouse-Room.glb-d039721f5e781fffec7d16cd58395499.scn" [deps] -source_file="res://Models/Room.glb" -dest_files=["res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.scn"] +source_file="res://Models/HelenHouse/HelenHouse-Room.glb" +dest_files=["res://.godot/imported/HelenHouse-Room.glb-d039721f5e781fffec7d16cd58395499.scn"] [params] diff --git a/Models/Stage.glb b/Models/HelenHouse/HelenHouse-Stage.glb similarity index 100% rename from Models/Stage.glb rename to Models/HelenHouse/HelenHouse-Stage.glb diff --git a/Models/Stage.glb.import b/Models/HelenHouse/HelenHouse-Stage.glb.import similarity index 74% rename from Models/Stage.glb.import rename to Models/HelenHouse/HelenHouse-Stage.glb.import index f5efa03..43b6dd4 100644 --- a/Models/Stage.glb.import +++ b/Models/HelenHouse/HelenHouse-Stage.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://btvomf1ayoypu" -path="res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.scn" +path="res://.godot/imported/HelenHouse-Stage.glb-3682deea9f5a1b3381bc9010b144dd14.scn" [deps] -source_file="res://Models/Stage.glb" -dest_files=["res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.scn"] +source_file="res://Models/HelenHouse/HelenHouse-Stage.glb" +dest_files=["res://.godot/imported/HelenHouse-Stage.glb-3682deea9f5a1b3381bc9010b144dd14.scn"] [params] diff --git a/Models/Jasper.fbx.import b/Models/Jasper.fbx.import deleted file mode 100644 index 820701e..0000000 --- a/Models/Jasper.fbx.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://b4xrsr1w4t017" -path="res://.godot/imported/Jasper.fbx-172cc49326619adb06baca5b9e28470b.scn" - -[deps] - -source_file="res://3-Stage/Models/Jasper.fbx" -dest_files=["res://.godot/imported/Jasper.fbx-172cc49326619adb06baca5b9e28470b.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -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=true -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="" -_subresources={} -fbx/importer=0 -fbx/allow_geometry_helper_nodes=false -fbx/embedded_image_handling=1 diff --git a/Models/Pasqually.fbx.import b/Models/Pasqually.fbx.import deleted file mode 100644 index 4eec3f9..0000000 --- a/Models/Pasqually.fbx.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://c66qevr67an0l" -path="res://.godot/imported/Pasqually.fbx-764599cdc792a8e7936bfd485f85d0d3.scn" - -[deps] - -source_file="res://3-Stage/Models/Pasqually.fbx" -dest_files=["res://.godot/imported/Pasqually.fbx-764599cdc792a8e7936bfd485f85d0d3.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -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=true -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="" -_subresources={} -fbx/importer=0 -fbx/allow_geometry_helper_nodes=false -fbx/embedded_image_handling=1 diff --git a/README.md b/README.md index 3f3d4e0..38858fc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # PneumaticPlaything -animatronic simulator \ No newline at end of file +Animatronics simulator and showtape creator +(soon to be) Featuring real stages and animatronics + +This project is not associated with CEC Entertainment LLC. or Creative Engineering Inc. diff --git a/Scenes/GUI/Controls/CameraButton.tscn b/Scenes/GUI/Controls/CameraButton.tscn new file mode 100644 index 0000000..c49bfca --- /dev/null +++ b/Scenes/GUI/Controls/CameraButton.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=2 format=3 uid="uid://bt7bxdgv6u8ev"] + +[ext_resource type="Script" uid="uid://dfoog0y2bh7tk" path="res://Scripts/CameraButton.gd" id="1_3y3s1"] + +[node name="CameraButton" type="Control"] +layout_mode = 3 +anchors_preset = 0 +offset_right = 136.0 +offset_bottom = 32.0 +script = ExtResource("1_3y3s1") + +[node name="Button" type="Button" parent="."] +layout_mode = 0 +offset_left = 4.0 +offset_right = 132.0 +offset_bottom = 32.0 +text = "Angle" + +[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] diff --git a/Scenes/GUI/Controls/CosmeticAdjustment.tscn b/Scenes/GUI/Controls/CosmeticAdjustment.tscn new file mode 100644 index 0000000..75b90ef --- /dev/null +++ b/Scenes/GUI/Controls/CosmeticAdjustment.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=2 format=3 uid="uid://dfll7xwkb2mbi"] + +[ext_resource type="Script" uid="uid://1f7v3ohsgx0g" path="res://Scripts/CosmeticAdjustment.gd" id="1_fg0vw"] + +[node name="FlowControl" type="Control"] +layout_mode = 3 +anchors_preset = 0 +offset_right = 384.0 +offset_bottom = 40.0 +script = ExtResource("1_fg0vw") + +[node name="Panel" type="Panel" parent="."] +layout_mode = 0 +offset_right = 384.0 +offset_bottom = 40.0 + +[node name="Label" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 184.0 +offset_bottom = 36.0 +text = "Cosmetic Adustment" +vertical_alignment = 1 +clip_text = true +text_overrun_behavior = 3 + +[node name="OptionButton" type="OptionButton" parent="Panel"] +layout_mode = 0 +offset_left = 188.0 +offset_top = 4.0 +offset_right = 380.0 +offset_bottom = 36.0 + +[connection signal="item_selected" from="Panel/OptionButton" to="." method="_on_option_button_item_selected"] diff --git a/Scenes/GUI/Controls/FlowControl.tscn b/Scenes/GUI/Controls/FlowControl.tscn new file mode 100644 index 0000000..c711895 --- /dev/null +++ b/Scenes/GUI/Controls/FlowControl.tscn @@ -0,0 +1,51 @@ +[gd_scene load_steps=2 format=3 uid="uid://blg1c3v4o44of"] + +[ext_resource type="Script" uid="uid://blhv0kms1sleu" path="res://Scripts/FlowControl.gd" id="1_6sy3t"] + +[node name="FlowControl" type="Control"] +layout_mode = 3 +anchors_preset = 0 +offset_right = 512.0 +offset_bottom = 40.0 +script = ExtResource("1_6sy3t") + +[node name="Panel" type="Panel" parent="."] +layout_mode = 0 +offset_right = 512.0 +offset_bottom = 40.0 + +[node name="Label" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 244.0 +offset_bottom = 36.0 +text = "Movement" +vertical_alignment = 1 +clip_text = true +text_overrun_behavior = 3 + +[node name="InStepper" type="SpinBox" parent="Panel"] +layout_mode = 0 +offset_left = 248.0 +offset_top = 4.0 +offset_right = 376.0 +offset_bottom = 36.0 +max_value = 10000.0 +step = 0.1 +value = 1.0 +prefix = "In:" + +[node name="OutStepper" type="SpinBox" parent="Panel"] +layout_mode = 0 +offset_left = 380.0 +offset_top = 4.0 +offset_right = 508.0 +offset_bottom = 36.0 +max_value = 10.0 +step = 0.1 +value = 1.0 +prefix = "Out:" + +[connection signal="value_changed" from="Panel/InStepper" to="." method="_on_in_stepper_value_changed"] +[connection signal="value_changed" from="Panel/OutStepper" to="." method="_on_out_stepper_value_changed"] diff --git a/Scenes/GUI/Controls/FlowSlider.tscn b/Scenes/GUI/Controls/FlowSlider.tscn deleted file mode 100644 index d2dfd56..0000000 --- a/Scenes/GUI/Controls/FlowSlider.tscn +++ /dev/null @@ -1,42 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://blg1c3v4o44of"] - -[ext_resource type="Script" uid="uid://blhv0kms1sleu" path="res://Scripts/FlowSlider.gd" id="1_q164o"] - -[node name="FlowSlider" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_right = -1280.0 -offset_bottom = -720.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_q164o") - -[node name="Panel" type="Panel" parent="."] -layout_mode = 0 -offset_right = 96.0 -offset_bottom = 32.0 - -[node name="Slider" type="HSlider" parent="Panel"] -layout_mode = 2 -offset_left = 4.0 -offset_right = 64.0 -offset_bottom = 32.0 -size_flags_vertical = 1 -max_value = 5.0 -step = 0.1 -value = 1.0 - -[node name="ValueLabel" type="Label" parent="Panel"] -layout_mode = 2 -offset_left = 64.0 -offset_right = 96.0 -offset_bottom = 32.0 -size_flags_horizontal = 8 -size_flags_vertical = 1 -text = "1.0" -horizontal_alignment = 1 -vertical_alignment = 1 - -[connection signal="value_changed" from="Panel/Slider" to="." method="_on_slider_value_changed"] diff --git a/Scenes/GUI/Controls/IndicatorLight.tscn b/Scenes/GUI/Controls/MovementButton.tscn similarity index 51% rename from Scenes/GUI/Controls/IndicatorLight.tscn rename to Scenes/GUI/Controls/MovementButton.tscn index 998e838..0200f4a 100644 --- a/Scenes/GUI/Controls/IndicatorLight.tscn +++ b/Scenes/GUI/Controls/MovementButton.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://cbf3x44mvo701"] -[ext_resource type="Script" uid="uid://cg157l4uo7ki8" path="res://Scripts/IndicatorLight.gd" id="1_l718a"] +[ext_resource type="Script" uid="uid://cg157l4uo7ki8" path="res://Scripts/MovementButton.gd" id="1_l718a"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1pi70"] bg_color = Color(0, 0, 0, 1) @@ -16,23 +16,26 @@ corner_radius_top_right = 12 corner_radius_bottom_right = 12 corner_radius_bottom_left = 12 -[node name="IndicatorLight" type="Control"] +[node name="MovementButton" type="Control"] layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_right = -1280.0 -offset_bottom = -720.0 -grow_horizontal = 2 -grow_vertical = 2 +anchors_preset = 0 +offset_right = 256.0 +offset_bottom = 40.0 script = ExtResource("1_l718a") -[node name="Container" type="Panel" parent="."] +[node name="Panel" type="Panel" parent="."] layout_mode = 0 -offset_right = 32.0 -offset_bottom = 32.0 +offset_right = 256.0 +offset_bottom = 40.0 -[node name="Black" type="Panel" parent="."] +[node name="IndicatorPanel" type="Panel" parent="Panel"] +layout_mode = 0 +offset_left = 220.0 +offset_top = 4.0 +offset_right = 252.0 +offset_bottom = 36.0 + +[node name="Black" type="Panel" parent="Panel/IndicatorPanel"] layout_mode = 0 offset_left = 4.0 offset_top = 4.0 @@ -40,10 +43,22 @@ offset_right = 28.0 offset_bottom = 28.0 theme_override_styles/panel = SubResource("StyleBoxFlat_1pi70") -[node name="Green" type="Panel" parent="."] +[node name="Green" type="Panel" parent="Panel/IndicatorPanel"] +visible = false layout_mode = 0 offset_left = 4.0 offset_top = 4.0 offset_right = 28.0 offset_bottom = 28.0 theme_override_styles/panel = SubResource("StyleBoxFlat_5m0fm") + +[node name="Button" type="Button" parent="Panel"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 216.0 +offset_bottom = 36.0 +text = "Movement" + +[connection signal="button_down" from="Panel/Button" to="." method="_on_button_button_down"] +[connection signal="button_up" from="Panel/Button" to="." method="_on_button_button_up"] diff --git a/Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn b/Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn new file mode 100644 index 0000000..179fd0a --- /dev/null +++ b/Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=3 uid="uid://btbdib3vwowhd"] + +[ext_resource type="Script" uid="uid://b4qincechbf63" path="res://Scripts/MovementFrameIndicator.gd" id="1_ttcva"] + +[node name="MovementFrameIndicator" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_ttcva") + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 0 +offset_right = 2.0 +offset_bottom = 32.0 +color = Color(0.0941176, 0.0941176, 0.0941176, 1) diff --git a/Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn b/Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn new file mode 100644 index 0000000..1a264f4 --- /dev/null +++ b/Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=3 uid="uid://dao6mf54xule2"] + +[ext_resource type="Script" uid="uid://b4qincechbf63" path="res://Scripts/MovementFrameIndicator.gd" id="1_2om8h"] + +[node name="MovementFrameIndicator" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_2om8h") + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 0 +offset_right = 2.0 +offset_bottom = 32.0 +color = Color(0, 1, 0, 1) diff --git a/Scenes/GUI/Controls/MovementRow.tscn b/Scenes/GUI/Controls/MovementRow.tscn new file mode 100644 index 0000000..e8354c5 --- /dev/null +++ b/Scenes/GUI/Controls/MovementRow.tscn @@ -0,0 +1,103 @@ +[gd_scene load_steps=7 format=3 uid="uid://dtkqaw5533rxy"] + +[ext_resource type="StyleBox" uid="uid://d17amc25o63p1" path="res://UI/Themes/MovementsPanelOverride.tres" id="1_d1xev"] +[ext_resource type="Script" uid="uid://tn3aaldu7mm2" path="res://Scripts/MovementRow.gd" id="1_rm5t0"] +[ext_resource type="Texture2D" uid="uid://cn5xdrxdv622h" path="res://UI/SmallX.png" id="2_e7anl"] +[ext_resource type="Texture2D" uid="uid://d007317123e27" path="res://UI/SmallLock.png" id="3_ldhn8"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rm5t0"] +bg_color = Color(0, 1, 0, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ldhn8"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.752941, 0, 1) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 + +[node name="Row" type="Panel"] +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 40.0 +grow_horizontal = 2 +script = ExtResource("1_rm5t0") + +[node name="ActiveBG" type="Panel" parent="."] +visible = false +layout_mode = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 260.0 +offset_bottom = 36.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_rm5t0") + +[node name="Button" type="Button" parent="."] +layout_mode = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 260.0 +offset_bottom = 36.0 +tooltip_text = "Click to bind a key to this movement" +text = "0 - Name (Unbound)" +alignment = 0 +text_overrun_behavior = 3 +clip_text = true + +[node name="ClearButton" type="Button" parent="."] +layout_mode = 0 +offset_left = 244.0 +offset_top = 4.0 +offset_right = 260.0 +offset_bottom = 20.0 +tooltip_text = "Clear this row" +icon = ExtResource("2_e7anl") + +[node name="LockButton" type="Button" parent="."] +layout_mode = 0 +offset_left = 244.0 +offset_top = 20.0 +offset_right = 260.0 +offset_bottom = 36.0 +tooltip_text = "Prevent recording over" +theme_override_styles/pressed = SubResource("StyleBoxFlat_ldhn8") +toggle_mode = true +icon = ExtResource("3_ldhn8") + +[node name="MovementsBG" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 264.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = ExtResource("1_d1xev") + +[node name="InvisibleMask" type="Control" parent="MovementsBG"] +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = -4.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MovementsHandle" type="Control" parent="MovementsBG/InvisibleMask"] +anchors_preset = 0 +offset_left = 120.0 +offset_right = 120.0 + +[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] +[connection signal="pressed" from="ClearButton" to="." method="_on_clear_button_pressed"] diff --git a/Scenes/GUI/EditorScreen.tscn b/Scenes/GUI/EditorScreen.tscn index 8d87dad..3d97c93 100644 --- a/Scenes/GUI/EditorScreen.tscn +++ b/Scenes/GUI/EditorScreen.tscn @@ -1,14 +1,45 @@ -[gd_scene load_steps=7 format=3 uid="uid://oiehbor0dlqx"] +[gd_scene load_steps=27 format=3 uid="uid://oiehbor0dlqx"] [ext_resource type="Script" uid="uid://dfiwoln8mdwm8" path="res://Scripts/EditorScreen.gd" id="1_sd512"] -[ext_resource type="PackedScene" uid="uid://blg1c3v4o44of" path="res://Scenes/GUI/Controls/FlowSlider.tscn" id="2_jo1ms"] -[ext_resource type="PackedScene" uid="uid://btre5j66mpchy" path="res://Scenes/Stages/HelenHouse.tscn" id="2_p1t5g"] -[ext_resource type="ButtonGroup" uid="uid://bij2tonqeslpt" path="res://Scenes/GUI/FlyoutButtonGroup.tres" id="3_p1t5g"] -[ext_resource type="PackedScene" uid="uid://cbf3x44mvo701" path="res://Scenes/GUI/Controls/IndicatorLight.tscn" id="4_wuj6m"] +[ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/Dark.tres" id="1_v0ton"] +[ext_resource type="Texture2D" uid="uid://xllpr3qc064c" path="res://UI/Play.png" id="3_g6u4d"] +[ext_resource type="Texture2D" uid="uid://dgacnkv2dc65s" path="res://UI/PlayBackwards.png" id="3_mr8sb"] +[ext_resource type="Texture2D" uid="uid://dts4eh6hyt8p3" path="res://UI/SkipBackwards.png" id="3_r4ytj"] +[ext_resource type="Texture2D" uid="uid://bpb3xn54kpxoe" path="res://UI/icon-32px.png" id="4_20noo"] +[ext_resource type="Texture2D" uid="uid://bwhgy4u37jmo1" path="res://UI/Pause.png" id="4_ba3jn"] +[ext_resource type="Texture2D" uid="uid://s3yr2wasxv03" path="res://UI/BlankCam.png" id="4_v0ton"] +[ext_resource type="Texture2D" uid="uid://dhx2v2fd0egxd" path="res://UI/FastBackwards.png" id="4_wy7jo"] +[ext_resource type="Texture2D" uid="uid://cttgtbu1xllwq" path="res://UI/Stop.png" id="8_20noo"] +[ext_resource type="Texture2D" uid="uid://dsr03w7r667fw" path="res://UI/FastForward.png" id="8_v0ton"] +[ext_resource type="Texture2D" uid="uid://bphwtliq2ahus" path="res://UI/SkipForward.png" id="9_20noo"] +[ext_resource type="Texture2D" uid="uid://ckg2ihy105ttj" path="res://UI/Record.png" id="10_wy7jo"] +[ext_resource type="ButtonGroup" uid="uid://bij2tonqeslpt" path="res://Scenes/GUI/FlyoutButtonGroup.tres" id="13_wy7jo"] [sub_resource type="ViewportTexture" id="ViewportTexture_g6u4d"] viewport_path = NodePath("SubViewport") +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wy7jo"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_v0ton"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_20noo"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mch36"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_fxi2g"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bdf35"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_j2w5p"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bv2rw"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_gx718"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_gu086"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_othvt"] + [node name="EditorScreen" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -16,1025 +47,1099 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +theme = ExtResource("1_v0ton") script = ExtResource("1_sd512") +[node name="OpenAudioFileDialog" type="FileDialog" parent="."] +title = "Open a File" +initial_position = 2 +ok_button_text = "Open" +dialog_hide_on_ok = true +file_mode = 0 +access = 2 +filters = PackedStringArray("*.wav", "*.mp3", "*.ogg") + +[node name="OpenShowtapeFileDialog" type="FileDialog" parent="."] +auto_translate_mode = 1 +title = "Open a File" +initial_position = 2 +ok_button_text = "Open" +dialog_hide_on_ok = true +file_mode = 0 +access = 2 +filters = PackedStringArray("*.ust") + +[node name="SaveShowtapeFileDialog" type="FileDialog" parent="."] +auto_translate_mode = 1 +initial_position = 2 +dialog_hide_on_ok = true +access = 2 +filters = PackedStringArray("*.ust") + +[node name="NewOverwriteConfirmationDialog" type="ConfirmationDialog" parent="."] +initial_position = 2 +size = Vector2i(472, 100) +ok_button_text = "Proceed" +dialog_text = "You have unsaved data! Are you sure you want to proceed?" +cancel_button_text = "Do Not" + +[node name="LoadOverwriteConfirmationDialog" type="ConfirmationDialog" parent="."] +auto_translate_mode = 1 +initial_position = 2 +size = Vector2i(472, 100) +ok_button_text = "Proceed" +dialog_text = "You have unsaved data! Are you sure you want to proceed?" +cancel_button_text = "Do Not" + +[node name="StageChangeOverwriteConfirmationDialog" type="ConfirmationDialog" parent="."] +auto_translate_mode = 1 +initial_position = 2 +size = Vector2i(472, 100) +ok_button_text = "Proceed" +dialog_text = "You have unsaved data! Are you sure you want to proceed?" +cancel_button_text = "Do Not" + +[node name="FileDoesntExistDialog" type="AcceptDialog" parent="."] +initial_position = 2 +dialog_text = "The specified file does not exist." + +[node name="EmptyStringDialog" type="AcceptDialog" parent="."] +auto_translate_mode = 1 +initial_position = 2 +dialog_text = "String cannot be blank." + +[node name="NoShowtapeLoadedDialog" type="AcceptDialog" parent="."] +auto_translate_mode = 1 +initial_position = 2 +dialog_text = "There is no showtape currently loaded." + +[node name="IncorrectShowtapeDialog" type="AcceptDialog" parent="."] +auto_translate_mode = 1 +initial_position = 2 +dialog_text = "This showtape is not compatible with the currently selected stage." + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] + [node name="SubViewport" type="SubViewport" parent="."] size = Vector2i(1280, 720) -size_2d_override = Vector2i(640, 360) - -[node name="HelenHouse" parent="SubViewport" instance=ExtResource("2_p1t5g")] [node name="ColorRect" type="ColorRect" parent="."] -layout_mode = 0 -offset_right = 1280.0 -offset_bottom = 720.0 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 color = Color(0.187176, 0.187176, 0.187176, 1) -[node name="CameraPreview" type="TextureRect" parent="."] -layout_mode = 0 -offset_left = 636.0 -offset_top = 48.0 -offset_right = 1276.0 -offset_bottom = 408.0 -texture = SubResource("ViewportTexture_g6u4d") -expand_mode = 2 - [node name="Label" type="Label" parent="."] -layout_mode = 0 +layout_mode = 1 +anchors_preset = -1 +anchor_right = 0.5 +anchor_bottom = 0.5 offset_left = 144.0 offset_top = 48.0 -offset_right = 632.0 -offset_bottom = 408.0 +offset_right = -8.0 +offset_bottom = 48.0 +grow_horizontal = 2 +grow_vertical = 2 text = "Welcome to Pneumatic Plaything Animatronic Simulator! You can press the buttons to the side to -control the bot, or adjust its flows. +control the bots manually, adjust their flows, +change the camera angle, or switch their cosmetics. -Open the Controls menu to see all of the keybinds. - -More features will be coming in the future, so stay tuned!" +Open the Controls menu to see all of the keybinds." horizontal_alignment = 1 vertical_alignment = 1 +[node name="CameraPlaceholder" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -4.0 +offset_top = 48.0 +offset_right = -4.0 +offset_bottom = 48.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_v0ton") +expand_mode = 1 + +[node name="CameraPreview" type="TextureRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_right = 1.0 +offset_left = -4.0 +offset_top = 48.0 +offset_right = -4.0 +grow_horizontal = 0 +texture = SubResource("ViewportTexture_g6u4d") +expand_mode = 5 +stretch_mode = 6 + [node name="MenuBar" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = -4.0 +offset_bottom = 44.0 +grow_horizontal = 2 + +[node name="StageSelector" type="OptionButton" parent="MenuBar"] layout_mode = 0 offset_left = 4.0 offset_top = 4.0 -offset_right = 1276.0 -offset_bottom = 44.0 +offset_right = 260.0 +offset_bottom = 36.0 +selected = 0 +item_count = 3 +popup/item_0/text = "Balcony Stage" +popup/item_0/id = 0 +popup/item_1/text = "Helen House" +popup/item_1/id = 1 +popup/item_2/text = "Chuck E's Corner" +popup/item_2/id = 2 + +[node name="MenuButton" type="MenuButton" parent="MenuBar"] +layout_mode = 0 +offset_left = 264.0 +offset_top = 4.0 +offset_right = 392.0 +offset_bottom = 36.0 +text = "Showtape" +flat = false +item_count = 3 +popup/item_0/text = "New" +popup/item_0/id = 0 +popup/item_1/text = "Load" +popup/item_1/id = 1 +popup/item_2/text = "Save" +popup/item_2/id = 2 + +[node name="ControlsButton" type="Button" parent="MenuBar"] +layout_mode = 0 +offset_left = 396.0 +offset_top = 4.0 +offset_right = 524.0 +offset_bottom = 36.0 +text = "Controls" + +[node name="CreditsButton" type="Button" parent="MenuBar"] +layout_mode = 0 +offset_left = 528.0 +offset_top = 4.0 +offset_right = 656.0 +offset_bottom = 36.0 +text = "Credits" [node name="Wordmark" type="Label" parent="MenuBar"] -layout_mode = 0 -offset_left = 1044.0 -offset_top = 4.0 -offset_right = 1268.0 -offset_bottom = 36.0 -text = "Pneumatic Plaything v0.2" -horizontal_alignment = 1 +layout_mode = 1 +anchors_preset = -1 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -264.0 +offset_top = -16.0 +offset_right = -40.0 +offset_bottom = 16.0 +grow_horizontal = 0 +grow_vertical = 2 +text = "Pneumatic Plaything v0.6" +horizontal_alignment = 2 vertical_alignment = 1 +[node name="EditingLabel" type="Label" parent="MenuBar"] +layout_mode = 0 +offset_left = 660.0 +offset_top = 4.0 +offset_right = 899.0 +offset_bottom = 36.0 +text = "No showtape loaded." +vertical_alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="MenuBar"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -36.0 +offset_top = 4.0 +offset_right = -4.0 +offset_bottom = 36.0 +grow_horizontal = 0 +texture = ExtResource("4_20noo") + [node name="SequencerPanel" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 52.0 +offset_right = -4.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TransportControls" type="Control" parent="SequencerPanel"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 48.0 +grow_horizontal = 2 + +[node name="TimeLabel" type="Label" parent="SequencerPanel/TransportControls"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 8.0 +offset_right = 196.0 +offset_bottom = 40.0 +text = "0:00:00:00" +vertical_alignment = 1 + +[node name="Centered" type="Control" parent="SequencerPanel/TransportControls"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -178.0 +offset_top = -24.0 +offset_right = 178.0 +offset_bottom = 24.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="StepBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] layout_mode = 0 offset_left = 4.0 -offset_top = 412.0 -offset_right = 1276.0 -offset_bottom = 716.0 +offset_top = 4.0 +offset_right = 44.0 +offset_bottom = 44.0 +tooltip_text = "Step backward 1 frame" +disabled = true +icon = ExtResource("3_r4ytj") -[node name="FlyoutButtons" type="Panel" parent="."] +[node name="FastBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] layout_mode = 0 +offset_left = 48.0 +offset_top = 4.0 +offset_right = 88.0 +offset_bottom = 44.0 +tooltip_text = "Play backwards at 2x speed" +disabled = true +icon = ExtResource("4_wy7jo") + +[node name="PlayBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] +layout_mode = 0 +offset_left = 92.0 +offset_top = 4.0 +offset_right = 132.0 +offset_bottom = 44.0 +tooltip_text = "Play backwards" +disabled = true +icon = ExtResource("3_mr8sb") + +[node name="PauseButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] +layout_mode = 0 +offset_left = 136.0 +offset_top = 4.0 +offset_right = 176.0 +offset_bottom = 44.0 +tooltip_text = "Pause" +disabled = true +icon = ExtResource("4_ba3jn") + +[node name="StopButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] +layout_mode = 0 +offset_left = 180.0 +offset_top = 4.0 +offset_right = 220.0 +offset_bottom = 44.0 +tooltip_text = "Stop playback and return to frame 0" +disabled = true +icon = ExtResource("8_20noo") + +[node name="PlayButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] +layout_mode = 0 +offset_left = 224.0 +offset_top = 4.0 +offset_right = 264.0 +offset_bottom = 44.0 +tooltip_text = "Play" +disabled = true +icon = ExtResource("3_g6u4d") + +[node name="FastForwardButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] +layout_mode = 0 +offset_left = 268.0 +offset_top = 4.0 +offset_right = 308.0 +offset_bottom = 44.0 +tooltip_text = "Play at 2x speed" +disabled = true +icon = ExtResource("8_v0ton") + +[node name="StepForwardButton" type="Button" parent="SequencerPanel/TransportControls/Centered"] +layout_mode = 0 +offset_left = 312.0 +offset_top = 4.0 +offset_right = 352.0 +offset_bottom = 44.0 +tooltip_text = "Step forward 1 frame" +disabled = true +icon = ExtResource("9_20noo") + +[node name="RecordButton" type="Button" parent="SequencerPanel/TransportControls"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -40.0 +offset_top = -20.0 +offset_right = -4.0 +offset_bottom = 20.0 +grow_horizontal = 0 +grow_vertical = 2 +tooltip_text = "Start recording" +disabled = true +toggle_mode = true +icon = ExtResource("10_wy7jo") + +[node name="TimelinePanel" type="Panel" parent="SequencerPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 48.0 +offset_right = -4.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VScrollBar" type="VScrollBar" parent="SequencerPanel/TimelinePanel"] +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 12.0 +offset_bottom = -4.0 +grow_vertical = 2 +max_value = 0.0 +step = 1.0 + +[node name="InvisibleMask" type="Control" parent="SequencerPanel/TimelinePanel"] +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 16.0 +offset_top = 4.0 +offset_right = -4.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MovementRowsContainer" type="Control" parent="SequencerPanel/TimelinePanel/InvisibleMask"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Playhead" type="VSeparator" parent="SequencerPanel/TimelinePanel/InvisibleMask"] +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = 388.0 +offset_right = 392.0 +grow_vertical = 2 + +[node name="FlyoutPanel" type="Control" parent="."] +layout_mode = 1 +anchor_bottom = 0.5 offset_left = 4.0 offset_top = 48.0 offset_right = 140.0 -offset_bottom = 408.0 +offset_bottom = 48.0 +grow_vertical = 2 -[node name="MovementsFlyoutButton" type="Button" parent="FlyoutButtons"] +[node name="FlyoutButtons" type="Panel" parent="FlyoutPanel"] +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_right = 136.0 +grow_vertical = 2 + +[node name="MovementsFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"] layout_mode = 0 offset_left = 4.0 offset_top = 4.0 offset_right = 132.0 offset_bottom = 36.0 toggle_mode = true -button_group = ExtResource("3_p1t5g") +button_group = ExtResource("13_wy7jo") text = "Movements" -[node name="FlowsFlyoutButton" type="Button" parent="FlyoutButtons"] +[node name="FlowsFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"] layout_mode = 0 offset_left = 4.0 offset_top = 40.0 offset_right = 132.0 offset_bottom = 72.0 toggle_mode = true -button_group = ExtResource("3_p1t5g") +button_group = ExtResource("13_wy7jo") text = "Flows" -[node name="CameraFlyoutButton" type="Button" parent="FlyoutButtons"] +[node name="CameraFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"] layout_mode = 0 offset_left = 4.0 offset_top = 76.0 offset_right = 132.0 offset_bottom = 108.0 toggle_mode = true -button_group = ExtResource("3_p1t5g") +button_group = ExtResource("13_wy7jo") text = "Camera" -[node name="Movements" type="Panel" parent="."] +[node name="CosmeticsFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 112.0 +offset_right = 132.0 +offset_bottom = 144.0 +toggle_mode = true +button_group = ExtResource("13_wy7jo") +text = "Cosmetics" + +[node name="Movements" type="Panel" parent="FlyoutPanel"] visible = false layout_mode = 0 -offset_left = 144.0 -offset_top = 48.0 -offset_right = 484.0 -offset_bottom = 412.0 +offset_left = 140.0 +offset_right = 416.0 +offset_bottom = 392.0 -[node name="Buttons" type="Control" parent="Movements"] -anchors_preset = 0 - -[node name="Mouth" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 4.0 -offset_right = 132.0 -offset_bottom = 36.0 -text = "Mouth" - -[node name="LeftEar" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 40.0 -offset_right = 132.0 -offset_bottom = 72.0 -text = "Left Ear" - -[node name="RightEar" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 76.0 -offset_right = 132.0 -offset_bottom = 108.0 -text = "Right Ear" - -[node name="LeftEyelid" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 112.0 -offset_right = 132.0 -offset_bottom = 144.0 -text = "Left Eyelid" - -[node name="RightEyelid" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 148.0 -offset_right = 132.0 -offset_bottom = 180.0 -text = "Right Eyelid" - -[node name="EyesLeft" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 184.0 -offset_right = 132.0 -offset_bottom = 216.0 -text = "Eyes Left" - -[node name="EyesRight" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 220.0 -offset_right = 132.0 -offset_bottom = 252.0 -text = "Eyes Right" - -[node name="HeadLeft" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 256.0 -offset_right = 132.0 -offset_bottom = 288.0 -text = "Head Left" - -[node name="HeadRight" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 292.0 -offset_right = 132.0 -offset_bottom = 324.0 -text = "Head Right" - -[node name="HeadUp" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 328.0 -offset_right = 132.0 -offset_bottom = 360.0 -text = "Head Up" - -[node name="LeftArmUp" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 4.0 -offset_right = 300.0 -offset_bottom = 36.0 -text = "Left Arm Up" - -[node name="LeftArmTwist" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 40.0 -offset_right = 300.0 -offset_bottom = 72.0 -text = "Left Arm Twist" - -[node name="LeftElbow" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 76.0 -offset_right = 300.0 -offset_bottom = 108.0 -text = "Left Elbow" - -[node name="RightArmUp" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 112.0 -offset_right = 300.0 -offset_bottom = 144.0 -text = "Right Arm Up" - -[node name="RightArmTwist" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 148.0 -offset_right = 300.0 -offset_bottom = 180.0 -text = "R. Arm Twist" - -[node name="RightElbow" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 184.0 -offset_right = 300.0 -offset_bottom = 216.0 -text = "Right Elbow" - -[node name="BodyLeft" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 220.0 -offset_right = 300.0 -offset_bottom = 252.0 -text = "Body Left" - -[node name="BodyRight" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 256.0 -offset_right = 300.0 -offset_bottom = 288.0 -text = "Body Right" - -[node name="BodyLean" type="Button" parent="Movements/Buttons"] -layout_mode = 0 -offset_left = 172.0 -offset_top = 292.0 -offset_right = 300.0 -offset_bottom = 324.0 -text = "Body Lean" - -[node name="IndicatorLights" type="Control" parent="Movements"] -anchors_preset = 0 - -[node name="Mouth" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 4.0 -offset_right = 136.0 -offset_bottom = 4.0 - -[node name="Left Ear" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 40.0 -offset_right = 136.0 -offset_bottom = 40.0 - -[node name="Right Ear" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 76.0 -offset_right = 136.0 -offset_bottom = 76.0 - -[node name="Left Eyelid" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 112.0 -offset_right = 136.0 -offset_bottom = 112.0 - -[node name="Right Eyelid" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 148.0 -offset_right = 136.0 -offset_bottom = 148.0 - -[node name="Eyes Left" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 184.0 -offset_right = 136.0 -offset_bottom = 184.0 - -[node name="Eyes Right" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 220.0 -offset_right = 136.0 -offset_bottom = 220.0 - -[node name="Head Left" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 256.0 -offset_right = 136.0 -offset_bottom = 256.0 - -[node name="Head Right" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 292.0 -offset_right = 136.0 -offset_bottom = 292.0 - -[node name="Head Up" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 136.0 -offset_top = 328.0 -offset_right = 136.0 -offset_bottom = 328.0 - -[node name="Left Arm Up" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 4.0 -offset_right = 304.0 -offset_bottom = 4.0 - -[node name="Left Arm Twist" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 40.0 -offset_right = 304.0 -offset_bottom = 40.0 - -[node name="Left Elbow" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 76.0 -offset_right = 304.0 -offset_bottom = 76.0 - -[node name="Right Arm Up" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 112.0 -offset_right = 304.0 -offset_bottom = 112.0 - -[node name="Right Arm Twist" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 148.0 -offset_right = 304.0 -offset_bottom = 148.0 - -[node name="Right Elbow" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 184.0 -offset_right = 304.0 -offset_bottom = 184.0 - -[node name="Body Left" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 220.0 -offset_right = 304.0 -offset_bottom = 220.0 - -[node name="Body Right" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 256.0 -offset_right = 304.0 -offset_bottom = 256.0 - -[node name="Body Lean" parent="Movements/IndicatorLights" instance=ExtResource("4_wuj6m")] -layout_mode = 1 -offset_left = 304.0 -offset_top = 292.0 -offset_right = 304.0 -offset_bottom = 292.0 - -[node name="FlowControls" type="Panel" parent="."] -visible = false -layout_mode = 0 -offset_left = 144.0 -offset_top = 48.0 -offset_right = 812.0 -offset_bottom = 440.0 - -[node name="Labels" type="Control" parent="FlowControls"] -anchors_preset = 0 -offset_top = -40.0 -offset_bottom = -40.0 - -[node name="MovementsLabel1" type="Label" parent="FlowControls/Labels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 40.0 -offset_right = 132.0 -offset_bottom = 72.0 -text = "Movement" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="MovementsLabel2" type="Label" parent="FlowControls/Labels"] -layout_mode = 0 -offset_left = 336.0 -offset_top = 40.0 -offset_right = 464.0 -offset_bottom = 72.0 -text = "Movement" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="InFlowsLabel1" type="Label" parent="FlowControls/Labels"] -layout_mode = 0 -offset_left = 136.0 -offset_top = 40.0 -offset_right = 232.0 -offset_bottom = 72.0 -text = "In Flow" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="InFlowsLabel2" type="Label" parent="FlowControls/Labels"] -layout_mode = 0 -offset_left = 468.0 -offset_top = 40.0 -offset_right = 564.0 -offset_bottom = 72.0 -text = "In Flow" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="OutFlowsLabel1" type="Label" parent="FlowControls/Labels"] -layout_mode = 0 -offset_left = 236.0 -offset_top = 40.0 -offset_right = 332.0 -offset_bottom = 72.0 -text = "Out Flow" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="OutFlowsLabel2" type="Label" parent="FlowControls/Labels"] -layout_mode = 0 -offset_left = 568.0 -offset_top = 40.0 -offset_right = 664.0 -offset_bottom = 72.0 -text = "Out Flow" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="InFlows" type="Control" parent="FlowControls"] -anchors_preset = 0 -offset_top = -40.0 -offset_bottom = -40.0 - -[node name="MouthFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 72.0 -offset_right = 135.5 -offset_bottom = 72.0 -value = 3.0 - -[node name="LeftEarFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 108.0 -offset_right = 135.5 -offset_bottom = 108.0 -value = 3.5 - -[node name="RightEarFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 144.0 -offset_right = 135.5 -offset_bottom = 144.0 -value = 3.5 - -[node name="LeftEyelidFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 180.0 -offset_right = 135.5 -offset_bottom = 180.0 -value = 1.5 - -[node name="RightEyelidFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 216.0 -offset_right = 135.5 -offset_bottom = 216.0 -value = 1.5 - -[node name="EyesLeftFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 252.0 -offset_right = 135.5 -offset_bottom = 252.0 -value = 2.0 - -[node name="EyesRightFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 288.0 -offset_right = 135.5 -offset_bottom = 288.0 -value = 2.0 - -[node name="HeadLeftFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 324.0 -offset_right = 135.5 -offset_bottom = 324.0 -value = 1.5 - -[node name="HeadRightFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 360.0 -offset_right = 135.5 -offset_bottom = 360.0 -value = 1.5 - -[node name="HeadUpFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 135.5 -offset_top = 396.0 -offset_right = 135.5 -offset_bottom = 396.0 - -[node name="LeftArmUpFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 72.0 -offset_right = 467.5 -offset_bottom = 72.0 -value = 0.8 - -[node name="LeftArmTwistFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 108.0 -offset_right = 467.5 -offset_bottom = 108.0 -value = 0.8 - -[node name="LeftElbowFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 144.0 -offset_right = 467.5 -offset_bottom = 144.0 - -[node name="RightArmUpFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 180.0 -offset_right = 467.5 -offset_bottom = 180.0 -value = 0.8 - -[node name="RightArmTwistFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 216.0 -offset_right = 467.5 -offset_bottom = 216.0 -value = 0.8 - -[node name="RightElbowFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 252.0 -offset_right = 467.5 -offset_bottom = 252.0 - -[node name="BodyLeftFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 288.0 -offset_right = 467.5 -offset_bottom = 288.0 -value = 0.7 - -[node name="BodyRightFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 324.0 -offset_right = 467.5 -offset_bottom = 324.0 -value = 0.7 - -[node name="BodyLeanFlow" parent="FlowControls/InFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 467.5 -offset_top = 360.0 -offset_right = 467.5 -offset_bottom = 360.0 - -[node name="OutFlows" type="Control" parent="FlowControls"] -anchors_preset = 0 -offset_top = -40.0 -offset_bottom = -40.0 - -[node name="MouthFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 72.0 -offset_right = 235.5 -offset_bottom = 72.0 -value = 2.0 - -[node name="LeftEarFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 108.0 -offset_right = 235.5 -offset_bottom = 108.0 -value = 1.5 - -[node name="RightEarFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 144.0 -offset_right = 235.5 -offset_bottom = 144.0 -value = 1.5 - -[node name="LeftEyelidFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 180.0 -offset_right = 235.5 -offset_bottom = 180.0 -value = 2.0 - -[node name="RightEyelidFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 216.0 -offset_right = 235.5 -offset_bottom = 216.0 -value = 2.0 - -[node name="EyesLeftFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 252.0 -offset_right = 235.5 -offset_bottom = 252.0 -value = 2.0 - -[node name="EyesRightFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 288.0 -offset_right = 235.5 -offset_bottom = 288.0 -value = 2.0 - -[node name="HeadLeftFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 324.0 -offset_right = 235.5 -offset_bottom = 324.0 -value = 1.5 - -[node name="HeadRightFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 360.0 -offset_right = 235.5 -offset_bottom = 360.0 -value = 1.5 - -[node name="HeadUpFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 235.5 -offset_top = 396.0 -offset_right = 235.5 -offset_bottom = 396.0 - -[node name="LeftArmUpFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 72.0 -offset_right = 567.5 -offset_bottom = 72.0 -value = 0.6 - -[node name="LeftArmTwistFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 108.0 -offset_right = 567.5 -offset_bottom = 108.0 -value = 0.8 - -[node name="LeftElbowFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 144.0 -offset_right = 567.5 -offset_bottom = 144.0 - -[node name="RightArmUpFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 180.0 -offset_right = 567.5 -offset_bottom = 180.0 -value = 0.6 - -[node name="RightArmTwistFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 216.0 -offset_right = 567.5 -offset_bottom = 216.0 -value = 0.8 - -[node name="RightElbowFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 252.0 -offset_right = 567.5 -offset_bottom = 252.0 - -[node name="BodyLeftFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 288.0 -offset_right = 567.5 -offset_bottom = 288.0 -value = 0.7 - -[node name="BodyRightFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 324.0 -offset_right = 567.5 -offset_bottom = 324.0 -value = 0.7 - -[node name="BodyLeanFlow" parent="FlowControls/OutFlows" instance=ExtResource("2_jo1ms")] -layout_mode = 1 -offset_left = 567.5 -offset_top = 360.0 -offset_right = 567.5 -offset_bottom = 360.0 -value = 0.8 - -[node name="MovementLabels" type="Control" parent="FlowControls"] +[node name="InvisibleMask" type="Control" parent="FlyoutPanel/Movements"] +clip_contents = true layout_mode = 3 anchors_preset = 0 - -[node name="Mouth" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 offset_left = 4.0 -offset_top = 32.0 -offset_right = 132.0 -offset_bottom = 64.0 -text = "Mouth" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="LeftEar" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 68.0 -offset_right = 132.0 -offset_bottom = 100.0 -text = "Left Ear" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="RightEar" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 104.0 -offset_right = 132.0 -offset_bottom = 136.0 -text = "Right Ear" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="LeftEyelid" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 140.0 -offset_right = 132.0 -offset_bottom = 172.0 -text = "Left Eyelid" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="RightEyelid" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 176.0 -offset_right = 132.0 -offset_bottom = 208.0 -text = "Right Eyelid" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="EyesLeft" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 212.0 -offset_right = 132.0 -offset_bottom = 244.0 -text = "Eyes Left" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="EyesRight" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 248.0 -offset_right = 132.0 -offset_bottom = 280.0 -text = "Eyes Right" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="HeadLeft" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 284.0 -offset_right = 132.0 -offset_bottom = 316.0 -text = "Head Left" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="HeadRight" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 320.0 -offset_right = 132.0 -offset_bottom = 352.0 -text = "Head Right" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="HeadUp" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 356.0 -offset_right = 132.0 +offset_top = 4.0 +offset_right = 260.0 offset_bottom = 388.0 -text = "Head Up" + +[node name="MovementHandle" type="Control" parent="FlyoutPanel/Movements/InvisibleMask"] +anchors_preset = 0 + +[node name="VScrollBar" type="VScrollBar" parent="FlyoutPanel/Movements"] +layout_mode = 0 +offset_left = 264.0 +offset_top = 4.0 +offset_right = 272.0 +offset_bottom = 388.0 +max_value = 0.0 +step = 1.0 + +[node name="FlowControls" type="Panel" parent="FlyoutPanel"] +visible = false +layout_mode = 0 +offset_left = 140.0 +offset_right = 672.0 +offset_bottom = 392.0 + +[node name="InvisibleMask" type="Control" parent="FlyoutPanel/FlowControls"] +clip_contents = true +anchors_preset = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 516.0 +offset_bottom = 388.0 + +[node name="FlowHandle" type="Control" parent="FlyoutPanel/FlowControls/InvisibleMask"] +anchors_preset = 0 + +[node name="VScrollBar" type="VScrollBar" parent="FlyoutPanel/FlowControls"] +layout_mode = 0 +offset_left = 520.0 +offset_top = 4.0 +offset_right = 528.0 +offset_bottom = 388.0 +max_value = 0.0 +step = 1.0 + +[node name="Camera" type="Panel" parent="FlyoutPanel"] +visible = false +layout_mode = 0 +offset_left = 140.0 +offset_right = 276.0 +offset_bottom = 4.0 + +[node name="Cosmetics" type="Panel" parent="FlyoutPanel"] +visible = false +layout_mode = 0 +offset_left = 140.0 +offset_right = 544.0 +offset_bottom = 392.0 + +[node name="InvisibleMask" type="Control" parent="FlyoutPanel/Cosmetics"] +clip_contents = true +anchors_preset = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 388.0 +offset_bottom = 388.0 + +[node name="CosmeticsHandle" type="Control" parent="FlyoutPanel/Cosmetics/InvisibleMask"] +anchors_preset = 0 + +[node name="VScrollBar" type="VScrollBar" parent="FlyoutPanel/Cosmetics"] +layout_mode = 0 +offset_left = 392.0 +offset_top = 4.0 +offset_right = 400.0 +offset_bottom = 388.0 +max_value = 0.0 +step = 1.0 + +[node name="ControlsScreen" type="Control" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="InputEater" type="Button" parent="ControlsScreen"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wy7jo") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_v0ton") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_20noo") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_mch36") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_fxi2g") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_bdf35") +theme_override_styles/hover = SubResource("StyleBoxEmpty_j2w5p") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_bv2rw") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_gx718") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_gu086") +theme_override_styles/normal = SubResource("StyleBoxEmpty_othvt") + +[node name="DialogPanel" type="Panel" parent="ControlsScreen"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -256.0 +offset_top = -192.0 +offset_right = 256.0 +offset_bottom = 192.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label" type="Label" parent="ControlsScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Fullscreen camera view: ESC +Fullscreen program: F11 or Alt+Enter +Play/Pause: Space +Play Reverse: Shift + Space +Fast Forward: Shift + Right Arrow +Fast Reverse: Shift + Left +Step Forward: Right Arrow +Step Backward: Left Arrow +Stop: Home +Change Camera Angle: Tab" horizontal_alignment = 1 vertical_alignment = 1 -[node name="LeftArmUp" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 336.0 -offset_top = 32.0 -offset_right = 464.0 -offset_bottom = 64.0 -text = "Left Arm Up" +[node name="CreditsScreen" type="Control" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="InputEater" type="Button" parent="CreditsScreen"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wy7jo") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_v0ton") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_20noo") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_mch36") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_fxi2g") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_bdf35") +theme_override_styles/hover = SubResource("StyleBoxEmpty_j2w5p") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_bv2rw") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_gx718") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_gu086") +theme_override_styles/normal = SubResource("StyleBoxEmpty_othvt") + +[node name="DialogPanel" type="Panel" parent="CreditsScreen"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -256.0 +offset_top = -192.0 +offset_right = 256.0 +offset_bottom = 192.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label" type="Label" parent="CreditsScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Pneumatic Plaything Animatronic Simulator + +Project Oversight: Persephone (KawaiiZenbo) + +Interface Design: Persephone +Simulator Backend: Persephone +3-Stage Models: Persephone +PTT Cybers Models: Persephone +Chuck E's Corner Stage: Luigigamin212 +Balcony Stage Model: ToastHQ + +This project is not associated with CEC Entertainment LLC. +or Creative Engineering Inc." horizontal_alignment = 1 vertical_alignment = 1 -[node name="LeftArmTwist" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 336.0 -offset_top = 68.0 -offset_right = 464.0 -offset_bottom = 100.0 -text = "Left Arm Twist" +[node name="ShowtapeNewScreen" type="Control" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="InputEater" type="Button" parent="ShowtapeNewScreen"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wy7jo") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_v0ton") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_20noo") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_mch36") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_fxi2g") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_bdf35") +theme_override_styles/hover = SubResource("StyleBoxEmpty_j2w5p") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_bv2rw") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_gx718") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_gu086") +theme_override_styles/normal = SubResource("StyleBoxEmpty_othvt") + +[node name="DialogPanel" type="Panel" parent="ShowtapeNewScreen"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -256.0 +offset_top = -128.0 +offset_right = 256.0 +offset_bottom = 128.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DialogLabel" type="Label" parent="ShowtapeNewScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -96.0 +offset_top = 4.0 +offset_right = 96.0 +offset_bottom = 36.0 +grow_horizontal = 2 +text = "Create New Showtape" horizontal_alignment = 1 vertical_alignment = 1 -[node name="LeftElbow" type="Label" parent="FlowControls/MovementLabels"] +[node name="AudioTypeLabel" type="Label" parent="ShowtapeNewScreen/DialogPanel"] layout_mode = 0 -offset_left = 336.0 -offset_top = 104.0 -offset_right = 464.0 -offset_bottom = 136.0 -text = "Left Elbow" +offset_left = 8.0 +offset_top = 40.0 +offset_right = 264.0 +offset_bottom = 72.0 +text = "Audio File (WAV, MP3, or OGG)" +vertical_alignment = 1 + +[node name="AudioFilePath" type="TextEdit" parent="ShowtapeNewScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 76.0 +offset_right = -104.0 +offset_bottom = 112.0 +grow_horizontal = 2 +grow_vertical = 2 +placeholder_text = "File Path" + +[node name="AudioBrowseButton" type="Button" parent="ShowtapeNewScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -100.0 +offset_top = 76.0 +offset_right = -4.0 +offset_bottom = 112.0 +tooltip_text = "Browse for a file." +text = "Browse" + +[node name="ShowNameLabel" type="Label" parent="ShowtapeNewScreen/DialogPanel"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 116.0 +offset_right = 264.0 +offset_bottom = 148.0 +text = "Showtape Name" +vertical_alignment = 1 + +[node name="ShowNameTextBox" type="TextEdit" parent="ShowtapeNewScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 152.0 +offset_right = -4.0 +offset_bottom = 188.0 +grow_horizontal = 2 +grow_vertical = 2 +placeholder_text = "Show Name" + +[node name="CancelButton" type="Button" parent="ShowtapeNewScreen/DialogPanel"] +layout_mode = 0 +offset_left = 309.0 +offset_top = 216.0 +offset_right = 405.0 +offset_bottom = 248.0 +text = "Cancel +" + +[node name="CreateButton" type="Button" parent="ShowtapeNewScreen/DialogPanel"] +layout_mode = 0 +offset_left = 408.0 +offset_top = 216.0 +offset_right = 504.0 +offset_bottom = 248.0 +text = "Create" + +[node name="ShowtapeLoadScreen" type="Control" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="InputEater" type="Button" parent="ShowtapeLoadScreen"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wy7jo") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_v0ton") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_20noo") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_mch36") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_fxi2g") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_bdf35") +theme_override_styles/hover = SubResource("StyleBoxEmpty_j2w5p") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_bv2rw") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_gx718") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_gu086") +theme_override_styles/normal = SubResource("StyleBoxEmpty_othvt") + +[node name="DialogPanel" type="Panel" parent="ShowtapeLoadScreen"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -256.0 +offset_top = -128.0 +offset_right = 256.0 +offset_bottom = 128.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DialogLabel" type="Label" parent="ShowtapeLoadScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -96.0 +offset_top = 4.0 +offset_right = 96.0 +offset_bottom = 36.0 +grow_horizontal = 2 +text = "Load Showtape" horizontal_alignment = 1 vertical_alignment = 1 -[node name="RightArmUp" type="Label" parent="FlowControls/MovementLabels"] +[node name="InFileLabel" type="Label" parent="ShowtapeLoadScreen/DialogPanel"] layout_mode = 0 -offset_left = 336.0 -offset_top = 140.0 -offset_right = 464.0 -offset_bottom = 172.0 -text = "Right Arm Up" +offset_left = 8.0 +offset_top = 73.0 +offset_right = 264.0 +offset_bottom = 105.0 +text = "File to load" +vertical_alignment = 1 + +[node name="InFilePath" type="TextEdit" parent="ShowtapeLoadScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 109.0 +offset_right = -104.0 +offset_bottom = 145.0 +grow_horizontal = 2 +grow_vertical = 2 +placeholder_text = "File Path" + +[node name="InBrowseButton" type="Button" parent="ShowtapeLoadScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -100.0 +offset_top = 109.0 +offset_right = -4.0 +offset_bottom = 145.0 +tooltip_text = "Browse for a file." +text = "Browse" + +[node name="ShowWaitMessage" type="Label" parent="ShowtapeLoadScreen/DialogPanel"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 148.0 +offset_right = 374.0 +offset_bottom = 197.0 +text = "If shows are taking a long time to load, +consider compressing the audio to MP3 or OGG" +vertical_alignment = 1 + +[node name="CancelButton" type="Button" parent="ShowtapeLoadScreen/DialogPanel"] +layout_mode = 0 +offset_left = 309.0 +offset_top = 216.0 +offset_right = 405.0 +offset_bottom = 248.0 +text = "Cancel +" + +[node name="OpenButton" type="Button" parent="ShowtapeLoadScreen/DialogPanel"] +layout_mode = 0 +offset_left = 408.0 +offset_top = 216.0 +offset_right = 504.0 +offset_bottom = 248.0 +text = "Open" + +[node name="ShowtapeSaveScreen" type="Control" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="InputEater" type="Button" parent="ShowtapeSaveScreen"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wy7jo") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_v0ton") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_20noo") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_mch36") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_fxi2g") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_bdf35") +theme_override_styles/hover = SubResource("StyleBoxEmpty_j2w5p") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_bv2rw") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_gx718") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_gu086") +theme_override_styles/normal = SubResource("StyleBoxEmpty_othvt") + +[node name="DialogPanel" type="Panel" parent="ShowtapeSaveScreen"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -256.0 +offset_top = -128.0 +offset_right = 256.0 +offset_bottom = 128.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DialogLabel" type="Label" parent="ShowtapeSaveScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -96.0 +offset_top = 4.0 +offset_right = 96.0 +offset_bottom = 36.0 +grow_horizontal = 2 +text = "Save Showtape" horizontal_alignment = 1 vertical_alignment = 1 -[node name="RightArmTwist" type="Label" parent="FlowControls/MovementLabels"] +[node name="OutFileLabel" type="Label" parent="ShowtapeSaveScreen/DialogPanel"] layout_mode = 0 -offset_left = 336.0 -offset_top = 176.0 -offset_right = 464.0 -offset_bottom = 208.0 -text = "R. Arm Twist" -horizontal_alignment = 1 +offset_left = 8.0 +offset_top = 73.0 +offset_right = 264.0 +offset_bottom = 105.0 +text = "File to save as" vertical_alignment = 1 -[node name="RightElbow" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 336.0 -offset_top = 212.0 -offset_right = 464.0 -offset_bottom = 244.0 -text = "Right Elbow" -horizontal_alignment = 1 -vertical_alignment = 1 +[node name="OutFilePath" type="TextEdit" parent="ShowtapeSaveScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 109.0 +offset_right = -104.0 +offset_bottom = 145.0 +grow_horizontal = 2 +grow_vertical = 2 +placeholder_text = "File Path" -[node name="BodyLeft" type="Label" parent="FlowControls/MovementLabels"] -layout_mode = 0 -offset_left = 336.0 -offset_top = 248.0 -offset_right = 464.0 -offset_bottom = 280.0 -text = "Body Left" -horizontal_alignment = 1 -vertical_alignment = 1 +[node name="OutBrowseButton" type="Button" parent="ShowtapeSaveScreen/DialogPanel"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -100.0 +offset_top = 109.0 +offset_right = -4.0 +offset_bottom = 145.0 +tooltip_text = "Browse for a file." +text = "Browse" -[node name="BodyRight" type="Label" parent="FlowControls/MovementLabels"] +[node name="CancelButton" type="Button" parent="ShowtapeSaveScreen/DialogPanel"] layout_mode = 0 -offset_left = 336.0 -offset_top = 284.0 -offset_right = 464.0 -offset_bottom = 316.0 -text = "Body Right" -horizontal_alignment = 1 -vertical_alignment = 1 +offset_left = 309.0 +offset_top = 216.0 +offset_right = 405.0 +offset_bottom = 248.0 +text = "Cancel +" -[node name="BodyLean" type="Label" parent="FlowControls/MovementLabels"] +[node name="CreateButton" type="Button" parent="ShowtapeSaveScreen/DialogPanel"] layout_mode = 0 -offset_left = 336.0 -offset_top = 320.0 -offset_right = 464.0 -offset_bottom = 352.0 -text = "Body Lean" -horizontal_alignment = 1 -vertical_alignment = 1 +offset_left = 408.0 +offset_top = 216.0 +offset_right = 504.0 +offset_bottom = 248.0 +text = "Save" [node name="CameraFullScreen" type="TextureRect" parent="."] visible = false -layout_mode = 0 -offset_right = 1280.0 -offset_bottom = 720.0 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 texture = SubResource("ViewportTexture_g6u4d") expand_mode = 2 -[connection signal="toggled" from="FlyoutButtons/MovementsFlyoutButton" to="." method="_on_movements_flyout_button_toggled"] -[connection signal="toggled" from="FlyoutButtons/FlowsFlyoutButton" to="." method="_on_flows_flyout_button_toggled"] -[connection signal="button_down" from="Movements/Buttons/Mouth" to="." method="_on_mouth_button_down"] -[connection signal="button_up" from="Movements/Buttons/Mouth" to="." method="_on_mouth_button_up"] -[connection signal="button_down" from="Movements/Buttons/LeftEar" to="." method="_on_left_ear_button_down"] -[connection signal="button_up" from="Movements/Buttons/LeftEar" to="." method="_on_left_ear_button_up"] -[connection signal="button_down" from="Movements/Buttons/RightEar" to="." method="_on_right_ear_button_down"] -[connection signal="button_up" from="Movements/Buttons/RightEar" to="." method="_on_right_ear_button_up"] -[connection signal="button_down" from="Movements/Buttons/LeftEyelid" to="." method="_on_left_eyelid_button_down"] -[connection signal="button_up" from="Movements/Buttons/LeftEyelid" to="." method="_on_left_eyelid_button_up"] -[connection signal="button_down" from="Movements/Buttons/RightEyelid" to="." method="_on_right_eyelid_button_down"] -[connection signal="button_up" from="Movements/Buttons/RightEyelid" to="." method="_on_right_eyelid_button_up"] -[connection signal="button_down" from="Movements/Buttons/EyesLeft" to="." method="_on_eyes_left_button_down"] -[connection signal="button_up" from="Movements/Buttons/EyesLeft" to="." method="_on_eyes_left_button_up"] -[connection signal="button_down" from="Movements/Buttons/EyesRight" to="." method="_on_eyes_right_button_down"] -[connection signal="button_up" from="Movements/Buttons/EyesRight" to="." method="_on_eyes_right_button_up"] -[connection signal="button_down" from="Movements/Buttons/HeadLeft" to="." method="_on_head_left_button_down"] -[connection signal="button_up" from="Movements/Buttons/HeadLeft" to="." method="_on_head_left_button_up"] -[connection signal="button_down" from="Movements/Buttons/HeadRight" to="." method="_on_head_right_button_down"] -[connection signal="button_up" from="Movements/Buttons/HeadRight" to="." method="_on_head_right_button_up"] -[connection signal="button_down" from="Movements/Buttons/HeadUp" to="." method="_on_head_up_button_down"] -[connection signal="button_up" from="Movements/Buttons/HeadUp" to="." method="_on_head_up_button_up"] -[connection signal="button_down" from="Movements/Buttons/LeftArmUp" to="." method="_on_left_arm_up_button_down"] -[connection signal="button_up" from="Movements/Buttons/LeftArmUp" to="." method="_on_left_arm_up_button_up"] -[connection signal="button_down" from="Movements/Buttons/LeftArmTwist" to="." method="_on_left_arm_twist_button_down"] -[connection signal="button_up" from="Movements/Buttons/LeftArmTwist" to="." method="_on_left_arm_twist_button_up"] -[connection signal="button_down" from="Movements/Buttons/LeftElbow" to="." method="_on_left_elbow_button_down"] -[connection signal="button_up" from="Movements/Buttons/LeftElbow" to="." method="_on_left_elbow_button_up"] -[connection signal="button_down" from="Movements/Buttons/RightArmUp" to="." method="_on_right_arm_up_button_down"] -[connection signal="button_up" from="Movements/Buttons/RightArmUp" to="." method="_on_right_arm_up_button_up"] -[connection signal="button_down" from="Movements/Buttons/RightArmTwist" to="." method="_on_right_arm_twist_button_down"] -[connection signal="button_up" from="Movements/Buttons/RightArmTwist" to="." method="_on_right_arm_twist_button_up"] -[connection signal="button_down" from="Movements/Buttons/RightElbow" to="." method="_on_right_elbow_button_down"] -[connection signal="button_up" from="Movements/Buttons/RightElbow" to="." method="_on_right_elbow_button_up"] -[connection signal="button_down" from="Movements/Buttons/BodyLeft" to="." method="_on_body_left_button_down"] -[connection signal="button_up" from="Movements/Buttons/BodyLeft" to="." method="_on_body_left_button_up"] -[connection signal="button_down" from="Movements/Buttons/BodyRight" to="." method="_on_body_right_button_down"] -[connection signal="button_up" from="Movements/Buttons/BodyRight" to="." method="_on_body_right_button_up"] -[connection signal="button_down" from="Movements/Buttons/BodyLean" to="." method="_on_body_lean_button_down"] -[connection signal="button_up" from="Movements/Buttons/BodyLean" to="." method="_on_body_lean_button_up"] +[connection signal="file_selected" from="OpenAudioFileDialog" to="." method="_on_open_audio_file_dialog_file_selected"] +[connection signal="file_selected" from="OpenShowtapeFileDialog" to="." method="_on_open_showtape_file_dialog_file_selected"] +[connection signal="file_selected" from="SaveShowtapeFileDialog" to="." method="_on_save_showtape_file_dialog_file_selected"] +[connection signal="confirmed" from="NewOverwriteConfirmationDialog" to="." method="_on_new_overwrite_confirmation_dialog_confirmed"] +[connection signal="confirmed" from="LoadOverwriteConfirmationDialog" to="." method="_on_load_overwrite_confirmation_dialog_confirmed"] +[connection signal="confirmed" from="StageChangeOverwriteConfirmationDialog" to="." method="_on_stage_change_overwrite_confirmation_dialog_confirmed"] +[connection signal="item_selected" from="MenuBar/StageSelector" to="." method="_on_stage_selector_item_selected"] +[connection signal="pressed" from="MenuBar/ControlsButton" to="." method="_on_controls_button_pressed"] +[connection signal="pressed" from="MenuBar/CreditsButton" to="." method="_on_credits_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepBackwardsButton" to="." method="_on_step_backwards_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/FastBackwardsButton" to="." method="_on_fast_backwards_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/PlayBackwardsButton" to="." method="_on_play_backwards_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/PauseButton" to="." method="_on_pause_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StopButton" to="." method="_on_stop_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/PlayButton" to="." method="_on_play_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/FastForwardButton" to="." method="_on_fast_forward_button_pressed"] +[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepForwardButton" to="." method="_on_step_forward_button_pressed"] +[connection signal="toggled" from="SequencerPanel/TransportControls/RecordButton" to="." method="_on_record_button_toggled"] +[connection signal="value_changed" from="SequencerPanel/TimelinePanel/VScrollBar" to="." method="_on_v_scroll_bar_value_changed"] +[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/MovementsFlyoutButton" to="." method="_on_movements_flyout_button_toggled"] +[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/FlowsFlyoutButton" to="." method="_on_flows_flyout_button_toggled"] +[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/CameraFlyoutButton" to="." method="_on_camera_flyout_button_toggled"] +[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/CosmeticsFlyoutButton" to="." method="_on_cosmetics_flyout_button_toggled"] +[connection signal="value_changed" from="FlyoutPanel/Movements/VScrollBar" to="." method="_on_movement_v_scroll_bar_value_changed"] +[connection signal="value_changed" from="FlyoutPanel/FlowControls/VScrollBar" to="." method="_on_flow_v_scroll_bar_value_changed"] +[connection signal="value_changed" from="FlyoutPanel/Cosmetics/VScrollBar" to="." method="_on_cosmetics_v_scroll_bar_value_changed"] +[connection signal="pressed" from="ControlsScreen/InputEater" to="." method="_on_input_eater_pressed"] +[connection signal="pressed" from="CreditsScreen/InputEater" to="." method="_on_input_eater_pressed"] +[connection signal="pressed" from="ShowtapeNewScreen/InputEater" to="." method="_on_input_eater_pressed"] +[connection signal="pressed" from="ShowtapeNewScreen/DialogPanel/AudioBrowseButton" to="." method="_on_showtape_new_audio_browse_button_pressed"] +[connection signal="pressed" from="ShowtapeNewScreen/DialogPanel/CancelButton" to="." method="_on_showtape_new_cancel_button_pressed"] +[connection signal="pressed" from="ShowtapeNewScreen/DialogPanel/CreateButton" to="." method="_on_showtape_new_create_button_pressed"] +[connection signal="pressed" from="ShowtapeLoadScreen/InputEater" to="." method="_on_input_eater_pressed"] +[connection signal="pressed" from="ShowtapeLoadScreen/DialogPanel/InBrowseButton" to="." method="_on_showtape_load_in_browse_button_pressed"] +[connection signal="pressed" from="ShowtapeLoadScreen/DialogPanel/CancelButton" to="." method="_on_showtape_load_cancel_button_pressed"] +[connection signal="pressed" from="ShowtapeLoadScreen/DialogPanel/OpenButton" to="." method="_on_showtape_load_open_button_pressed"] +[connection signal="pressed" from="ShowtapeSaveScreen/InputEater" to="." method="_on_input_eater_pressed"] +[connection signal="pressed" from="ShowtapeSaveScreen/DialogPanel/OutBrowseButton" to="." method="_on_showtape_save_out_browse_button_pressed"] +[connection signal="pressed" from="ShowtapeSaveScreen/DialogPanel/CancelButton" to="." method="_on_showtape_save_cancel_button_pressed"] +[connection signal="pressed" from="ShowtapeSaveScreen/DialogPanel/CreateButton" to="." method="_on_showtape_save_create_button_pressed"] diff --git a/Scenes/Stages/Balcony.tscn b/Scenes/Stages/Balcony.tscn new file mode 100644 index 0000000..704418c --- /dev/null +++ b/Scenes/Stages/Balcony.tscn @@ -0,0 +1,319 @@ +[gd_scene load_steps=9 format=3 uid="uid://d2g6chunc572s"] + +[ext_resource type="PackedScene" uid="uid://d34xfaignny8j" path="res://Models/Cyberamics/Cyber Helen.glb" id="1_w3m2i"] +[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/AnimatronicController.gd" id="2_t4ere"] +[ext_resource type="PackedScene" uid="uid://c2j62syov3skq" path="res://Models/Cyberamics/Cyberamic Chuck.glb" id="3_45mf1"] +[ext_resource type="PackedScene" uid="uid://ba7i8p8olef2s" path="res://Models/Cyberamics/Cyber Jasper.glb" id="4_t4ere"] +[ext_resource type="PackedScene" uid="uid://c6n4otfble154" path="res://Models/Balcony/BalconyStage.glb" id="5_45mf1"] +[ext_resource type="PackedScene" uid="uid://dmh5upwts8y11" path="res://Models/Cyberamics/Warblettes.glb" id="5_ocq6y"] +[ext_resource type="Script" uid="uid://d1p4ite8ts2wi" path="res://Scripts/LightController.gd" id="6_j8jbd"] + +[sub_resource type="Environment" id="Environment_w3m2i"] +ambient_light_source = 1 + +[node name="Balcony" type="Node3D"] + +[node name="Jasper" parent="." instance=ExtResource("4_t4ere")] +transform = Transform3D(0.866025, 0, 0.5, 0, 1, 0, -0.5, 0, 0.866025, -2.2, 3, -0.5) +script = ExtResource("2_t4ere") + +[node name="Chuck" parent="." instance=ExtResource("3_45mf1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -0.5) +script = ExtResource("2_t4ere") + +[node name="Helen" parent="." instance=ExtResource("1_w3m2i")] +transform = Transform3D(0.866025, 0, -0.5, 0, 1, 0, 0.5, 0, 0.866025, 2.2, 3, -0.5) +script = ExtResource("2_t4ere") + +[node name="Warblettes" parent="." instance=ExtResource("5_ocq6y")] +transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -7.5, 3.6, -1) +script = ExtResource("2_t4ere") + +[node name="Spots" type="Node3D" parent="."] +script = ExtResource("6_j8jbd") + +[node name="Chuck" type="SpotLight3D" parent="Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 0, 5.5, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Helen" type="SpotLight3D" parent="Spots"] +transform = Transform3D(0.866025, 0.120961, -0.485148, 0, 0.970296, 0.241922, 0.5, -0.209511, 0.840301, -1, 5.5, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Jasper" type="SpotLight3D" parent="Spots"] +transform = Transform3D(0.866025, -0.120961, 0.485148, 0, 0.970296, 0.241922, -0.5, -0.209511, 0.840301, 1, 5.5, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Munch" type="SpotLight3D" parent="Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, -4.5, 5.5, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Pasqually" type="SpotLight3D" parent="Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 4.5, 5.5, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Warblettes" type="SpotLight3D" parent="Spots"] +transform = Transform3D(1, 0, 0, 0, 0.991445, 0.130526, 0, -0.130526, 0.991445, -7.5, 5.5, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 10.0 + +[node name="Color Spots" type="Node3D" parent="."] +script = ExtResource("6_j8jbd") + +[node name="Chuck" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 0, 5.5, 5) +visible = false +light_color = Color(0.734652, 0.426335, 0.999996, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Chuck 2" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 0, 5.5, 5) +visible = false +light_color = Color(1, 0, 0, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Helen" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(0.866025, 0.120961, -0.485148, 0, 0.970296, 0.241922, 0.5, -0.209511, 0.840301, -1, 5.5, 5) +visible = false +light_color = Color(0.734652, 0.426335, 0.999996, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Jasper" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(0.866025, -0.120961, 0.485148, 0, 0.970296, 0.241922, -0.5, -0.209511, 0.840301, 1, 5.5, 5) +visible = false +light_color = Color(0.734652, 0.426335, 0.999996, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Munch" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, -4.5, 5.5, 5) +visible = false +light_color = Color(0.734652, 0.426335, 0.999996, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Pasqually" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 4.5, 5.5, 5) +visible = false +light_color = Color(0.734652, 0.426335, 0.999996, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 7.5 + +[node name="Warblettes" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(1, 0, 0, 0, 0.991445, 0.130526, 0, -0.130526, 0.991445, -7.5, 5.5, 5) +visible = false +light_color = Color(0.734652, 0.426335, 0.999996, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 10.0 + +[node name="Valence" type="Node3D" parent="."] +script = ExtResource("6_j8jbd") + +[node name="L" type="SpotLight3D" parent="Valence"] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, -2.25, 5.5, 0.25) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +spot_attenuation = -1.0 +spot_angle = 15.0 + +[node name="L Center" type="SpotLight3D" parent="Valence"] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, -1.2, 5.5, 0.5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +spot_attenuation = -1.0 +spot_angle = 15.0 + +[node name="Center" type="SpotLight3D" parent="Valence"] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 0, 5.5, 0.75) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +spot_attenuation = -1.0 +spot_angle = 15.0 + +[node name="R Center" type="SpotLight3D" parent="Valence"] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 1.2, 5.5, 0.5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +spot_attenuation = -1.0 +spot_angle = 15.0 + +[node name="R" type="SpotLight3D" parent="Valence"] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 2.25, 5.5, 0.25) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +spot_attenuation = -1.0 +spot_angle = 15.0 + +[node name="Backdrop" type="Node3D" parent="."] +script = ExtResource("6_j8jbd") + +[node name="L Blue" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(0.866025, 0.433013, 0.25, -7.18775e-09, 0.5, -0.866025, -0.5, 0.75, 0.433013, -2.5, 3, -1.1) +visible = false +light_color = Color(0, 0, 1, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="L Amber" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(0.866025, 0.433013, 0.25, -7.18775e-09, 0.5, -0.866025, -0.5, 0.75, 0.433013, -2, 3, -1.1) +visible = false +light_color = Color(1, 0.74902, 0, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="L Red" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(0.866025, 0.433013, 0.25, -7.18775e-09, 0.5, -0.866025, -0.5, 0.75, 0.433013, -1.5, 3, -1.1) +visible = false +light_color = Color(1, 0, 0, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="C Blue" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(1, 0, 0, 0, 0.5, -0.866025, 0, 0.866025, 0.5, -0.5, 3, -1.1) +visible = false +light_color = Color(0, 0, 1, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="C Amber" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(1, 0, 0, 0, 0.5, -0.866025, 0, 0.866025, 0.5, 0, 3, -1.1) +visible = false +light_color = Color(1, 0.74902, 0, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="C Red" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(1, 0, 0, 0, 0.5, -0.866025, 0, 0.866025, 0.5, 0.5, 3, -1.1) +visible = false +light_color = Color(1, 0, 0, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="R Blue" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(0.866025, -0.433013, -0.25, 1.82764e-08, 0.5, -0.866025, 0.5, 0.75, 0.433013, 1.5, 3, -1.1) +visible = false +light_color = Color(0, 0, 1, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="R Amber" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(0.866025, -0.433013, -0.25, 1.82764e-08, 0.5, -0.866025, 0.5, 0.75, 0.433013, 2, 3, -1.1) +visible = false +light_color = Color(1, 0.74902, 0, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="R Red" type="SpotLight3D" parent="Backdrop"] +transform = Transform3D(0.866025, -0.433013, -0.25, 1.82764e-08, 0.5, -0.866025, 0.5, 0.75, 0.433013, 2.5, 3, -1.1) +visible = false +light_color = Color(1, 0, 0, 1) +spot_attenuation = 2.0 +spot_angle = 30.0 +spot_angle_attenuation = 0.15 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_w3m2i") + +[node name="Room Lights" type="Node3D" parent="."] + +[node name="OmniLight3D" type="OmniLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 4.5, 3) +light_color = Color(1, 0.960784, 0.85098, 1) + +[node name="OmniLight3D2" type="OmniLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 4.5, 3) +light_color = Color(1, 0.960784, 0.85098, 1) + +[node name="OmniLight3D3" type="OmniLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.5, 3) +light_color = Color(1, 0.960784, 0.85098, 1) + +[node name="OmniLight3D4" type="OmniLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 4.5, 3) +light_color = Color(1, 0.960784, 0.85098, 1) + +[node name="OmniLight3D5" type="OmniLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8, 4.5, 3) +light_color = Color(1, 0.960784, 0.85098, 1) + +[node name="BalconyStage" parent="." instance=ExtResource("5_45mf1")] +transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0, 0) + +[node name="Angle 1" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 0, 4.75, 3) +current = true +fov = 60.0 + +[node name="Angle 2" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, -4.5, 4.75, 3) +fov = 60.0 + +[node name="Angle 3" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 4.5, 4.75, 3) +fov = 60.0 + +[node name="Angle 4" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 5, 3) +fov = 60.0 + +[node name="Angle 5" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.996195, 0.0871557, 0, -0.0871557, 0.996195, 0, 4.75, 6) +fov = 60.0 + +[node name="Angle 6" type="Camera3D" parent="."] +transform = Transform3D(0.965926, -0.0225576, 0.257834, 0, 0.996195, 0.0871557, -0.258819, -0.084186, 0.96225, 2, 4.75, 7) +fov = 60.0 diff --git a/Scenes/Stages/ChuckEsCorner.tscn b/Scenes/Stages/ChuckEsCorner.tscn new file mode 100644 index 0000000..9f1dbf9 --- /dev/null +++ b/Scenes/Stages/ChuckEsCorner.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=7 format=3 uid="uid://dw3eplmapm5gc"] + +[ext_resource type="PackedScene" uid="uid://c2j62syov3skq" path="res://Models/Cyberamics/Cyberamic Chuck.glb" id="1_t27ru"] +[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/AnimatronicController.gd" id="2_8qvk7"] +[ext_resource type="PackedScene" uid="uid://bv66hlbvtekho" path="res://Models/ChuckEsCorner/ChuckEsCornerStage.glb" id="3_8qvk7"] +[ext_resource type="PackedScene" uid="uid://dmh5upwts8y11" path="res://Models/Cyberamics/Warblettes.glb" id="3_t27ru"] +[ext_resource type="Script" uid="uid://d1p4ite8ts2wi" path="res://Scripts/LightController.gd" id="4_8suoo"] + +[sub_resource type="Environment" id="Environment_4uxdq"] +ambient_light_source = 1 + +[node name="ChuckEsCorner" type="Node3D"] + +[node name="Chuck" parent="." instance=ExtResource("1_t27ru")] +transform = Transform3D(-1.5, 0, -1.31134e-07, 0, 1.5, 0, 1.31134e-07, 0, -1.5, -2, 2, 0.312) +script = ExtResource("2_8qvk7") + +[node name="Warblettes" parent="." instance=ExtResource("3_t27ru")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 4, 0.5) +script = ExtResource("2_8qvk7") + +[node name="Spots" type="Node3D" parent="."] +script = ExtResource("4_8suoo") + +[node name="Chuck" type="SpotLight3D" parent="Spots"] +transform = Transform3D(-0.972974, -0.0597654, 0.223048, 2.26267e-08, 0.965926, 0.258819, -0.230916, 0.251824, -0.939821, -1.57812, 4.57895, -1.25599) +visible = false +light_color = Color(1, 0.9625, 0.85, 1) +light_energy = 2.0 +spot_range = 6.53799 +spot_angle = 30.5982 +spot_angle_attenuation = 0.1 + +[node name="Warblettes" type="SpotLight3D" parent="Spots"] +transform = Transform3D(-0.963761, 0.0690445, -0.257677, 1.9697e-08, 0.965926, 0.258819, 0.266767, 0.24944, -0.930922, -0.309492, 5.86862, -0.75) +visible = false +light_color = Color(1, 0.9625, 0.85, 1) +light_energy = 2.0 +spot_range = 12.8142 +spot_angle = 28.4779 +spot_angle_attenuation = 0.1 + +[node name="Floods" type="Node3D" parent="."] +script = ExtResource("4_8suoo") + +[node name="Red" type="SpotLight3D" parent="Floods"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 1.8, 0.9) +visible = false +light_color = Color(1, 0, 0, 1) +light_energy = 15.0 +spot_attenuation = 2.0 +spot_angle_attenuation = 0.15 + +[node name="Green" type="SpotLight3D" parent="Floods"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -2, 1.8, 0.9) +visible = false +light_color = Color(0, 1, 0, 1) +light_energy = 15.0 +spot_attenuation = 2.0 +spot_angle_attenuation = 0.15 + +[node name="Blue" type="SpotLight3D" parent="Floods"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -4, 1.8, 0.9) +visible = false +light_color = Color(0, 0, 1, 1) +light_energy = 15.0 +spot_attenuation = 2.0 +spot_angle_attenuation = 0.15 + +[node name="Color Spots" type="Node3D" parent="."] +script = ExtResource("4_8suoo") + +[node name="Chuck" type="SpotLight3D" parent="Color Spots"] +transform = Transform3D(-0.995147, -0.00124532, 0.0983965, 0.0311161, 0.944632, 0.326653, -0.0933553, 0.328129, -0.940009, -1.57812, 4.57895, -1.25599) +visible = false +light_color = Color(0, 0.538333, 0.85, 1) +light_energy = 3.0 +spot_range = 6.53799 +spot_angle = 33.4444 +spot_angle_attenuation = 0.1 + +[node name="Angle 1" type="Camera3D" parent="."] +transform = Transform3D(-0.984612, -0.00554278, 0.174664, 0.0289131, 0.980555, 0.194105, -0.172344, 0.196168, -0.965306, -0.658302, 4.93729, -4) +current = true +fov = 60.0 + +[node name="Angle 2" type="Camera3D" parent="."] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2, 3.44355, -2.64184) +fov = 60.0 + +[node name="Angle 3" type="Camera3D" parent="."] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.25, 4.95492, -1.77582) +fov = 60.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_4uxdq") + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 3.5, -2) +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.5 + +[node name="OmniLight3D2" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 3.5, -2) +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.5 + +[node name="ChuckEsCornerStage" parent="." instance=ExtResource("3_8qvk7")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 1) diff --git a/Scenes/Stages/HelenHouse.tscn b/Scenes/Stages/HelenHouse.tscn index 0e46785..8a69767 100644 --- a/Scenes/Stages/HelenHouse.tscn +++ b/Scenes/Stages/HelenHouse.tscn @@ -1,40 +1,49 @@ -[gd_scene load_steps=6 format=3 uid="uid://btre5j66mpchy"] +[gd_scene load_steps=7 format=3 uid="uid://btre5j66mpchy"] -[ext_resource type="PackedScene" uid="uid://f0fkcs7erhop" path="res://Models/3stHelen.glb" id="2_e7oou"] -[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/HelenController.gd" id="3_e2vvs"] -[ext_resource type="PackedScene" uid="uid://bhoeqcsdb0fx2" path="res://Models/Room.glb" id="4_pv43k"] -[ext_resource type="PackedScene" uid="uid://btvomf1ayoypu" path="res://Models/Stage.glb" id="5_afett"] +[ext_resource type="PackedScene" uid="uid://f0fkcs7erhop" path="res://Models/3-Stage/3stHelen.glb" id="1_s1mol"] +[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/AnimatronicController.gd" id="2_odcb6"] +[ext_resource type="PackedScene" uid="uid://bhoeqcsdb0fx2" path="res://Models/HelenHouse/HelenHouse-Room.glb" id="3_e7oou"] +[ext_resource type="PackedScene" uid="uid://btvomf1ayoypu" path="res://Models/HelenHouse/HelenHouse-Stage.glb" id="4_e2vvs"] +[ext_resource type="Script" uid="uid://d1p4ite8ts2wi" path="res://Scripts/LightController.gd" id="5_odcb6"] [sub_resource type="Environment" id="Environment_axk5g"] ambient_light_source = 1 [node name="HelenHouse" type="Node3D"] -[node name="3stHelen" parent="." instance=ExtResource("2_e7oou")] +[node name="Helen" parent="." instance=ExtResource("1_s1mol")] transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0.25, 0) -script = ExtResource("3_e2vvs") +script = ExtResource("2_odcb6") -[node name="Room" parent="." instance=ExtResource("4_pv43k")] +[node name="Spots" type="Node3D" parent="."] +script = ExtResource("5_odcb6") + +[node name="Helen" type="SpotLight3D" parent="Spots"] +transform = Transform3D(-1, 3.69465e-08, -7.92319e-08, 0, 0.906308, 0.422618, 8.74228e-08, 0.422618, -0.906308, 0, 2.5, -2) +visible = false +light_color = Color(1, 0.9625, 0.85, 1) +light_energy = 5.0 +spot_attenuation = 2.0 +spot_angle = 10.0 +spot_angle_attenuation = 0.15 + +[node name="Room" parent="." instance=ExtResource("3_e7oou")] transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0) -[node name="Stage" parent="." instance=ExtResource("5_afett")] +[node name="Stage" parent="." instance=ExtResource("4_e2vvs")] transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0) -[node name="Camera3D" type="Camera3D" parent="."] -transform = Transform3D(-1, 1.31601e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -3) +[node name="Angle 1" type="Camera3D" parent="."] +transform = Transform3D(-1, 1.31602e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -3) +fov = 60.0 + +[node name="Angle 2" type="Camera3D" parent="."] +transform = Transform3D(-1, 1.31602e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -1) fov = 60.0 [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_axk5g") -[node name="SpotLight3D" type="SpotLight3D" parent="."] -transform = Transform3D(-0.972974, -0.0597654, 0.223048, 2.26267e-08, 0.965926, 0.258819, -0.230916, 0.251824, -0.939821, 0.217544, 1.75308, -1.04223) -light_color = Color(1, 0.9625, 0.85, 1) -light_energy = 2.0 -spot_range = 1.3068 -spot_angle = 27.449 -spot_angle_attenuation = 0.1 - [node name="OmniLight3D" type="OmniLight3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2.5, -3) light_color = Color(1, 0.960784, 0.85098, 1) diff --git a/Scripts/AnimatronicController.gd b/Scripts/AnimatronicController.gd new file mode 100644 index 0000000..5dc202b --- /dev/null +++ b/Scripts/AnimatronicController.gd @@ -0,0 +1,93 @@ +extends Node3D + +var animation_player : AnimationPlayer +var animation_tree : AnimationTree +var blend_tree : AnimationNodeBlendTree + +var movement_states : Dictionary + +func _ready(): + animation_player = $AnimationPlayer + + animation_tree = AnimationTree.new() + animation_tree.anim_player = animation_player.get_path() + add_child(animation_tree) + + animation_tree.tree_root = AnimationNodeBlendTree.new() + animation_tree.active = true + blend_tree = animation_tree.tree_root as AnimationNodeBlendTree + + animation_player.speed_scale = 0 + + var animations = animation_player.get_animation_list() + + for animation in animations: + movement_states[animation] = [false, 0.0, 0.0, 0.0] + + var prev_name = "Anim_" + animations[0] + var old_time_name = "Time_" + animations[0] + var old_seek_name = "Seek_" + animations[0] + + var prev_anim_node := AnimationNodeAnimation.new() + prev_anim_node.animation = animations[0] + blend_tree.add_node(prev_name, prev_anim_node) + + var old_time_node := AnimationNodeTimeScale.new() + blend_tree.add_node(old_time_name,old_time_node) + + var _old_seek_node := AnimationNodeTimeSeek.new() + blend_tree.add_node(old_seek_name,_old_seek_node) + + blend_tree.connect_node(old_time_name,0,prev_name) + blend_tree.connect_node(old_seek_name,0,old_time_name) + prev_name = old_seek_name + + for i in range(1, animations.size()): + var anim_name = "Anim_" + animations[i] + var add_name = "Add_" + animations[i] + var time_name = "Time_" + animations[i] + var seek_name = "Seek_" + animations[i] + + var new_anim_node := AnimationNodeAnimation.new() + new_anim_node.animation = animations[i] + blend_tree.add_node(anim_name, new_anim_node) + + var time_node := AnimationNodeTimeScale.new() + blend_tree.add_node(time_name,time_node) + + var seek_node := AnimationNodeTimeSeek.new() + blend_tree.add_node(seek_name,seek_node) + + var add_node := AnimationNodeAdd2.new() + blend_tree.add_node(add_name, add_node) + + blend_tree.connect_node(time_name, 0, anim_name) + blend_tree.connect_node(seek_name, 0, time_name) + blend_tree.connect_node(add_name, 0, prev_name) + blend_tree.connect_node(add_name, 1, seek_name) + prev_name = add_name + + blend_tree.connect_node("output", 0, prev_name) + + for i in range(0, animations.size()): + animation_tree.set("parameters/Add_" + str(animations[i]) + "/add_amount", 1.0) + animation_tree.set("parameters/Seek_" + str(animations[i]) + "/seek_request", 0) + animation_tree.set("parameters/Time_" + str(animations[i]) + "/scale", 0) + +func _physics_process(delta: float) -> void: + for key in movement_states: + var anim_path = "parameters/Seek_" + key + "/seek_request" + var state = movement_states[key] + if (state[0]): + state[1] = clamp(float(state[1]) + (delta * state[2]), 0, 1) + else: + state[1] = clamp(float(state[1]) - (delta * state[3]), 0, 1) + animation_tree.set(anim_path, state[1]) + +func _movement_in(movement, rate): + movement_states[movement][0] = true + movement_states[movement][2] = rate + +func _movement_out(movement, rate): + movement_states[movement][0] = false + movement_states[movement][3] = rate diff --git a/Scripts/HelenController.gd.uid b/Scripts/AnimatronicController.gd.uid similarity index 100% rename from Scripts/HelenController.gd.uid rename to Scripts/AnimatronicController.gd.uid diff --git a/Scripts/CameraButton.gd b/Scripts/CameraButton.gd new file mode 100644 index 0000000..ef99c04 --- /dev/null +++ b/Scripts/CameraButton.gd @@ -0,0 +1,10 @@ +extends Control + +@export var camera : String +@export var base_scene_path : String + +func _ready() -> void: + $Button.text = camera + +func _on_button_pressed() -> void: + get_node(base_scene_path + camera).current = true; diff --git a/Scripts/CameraButton.gd.uid b/Scripts/CameraButton.gd.uid new file mode 100644 index 0000000..18a4fd1 --- /dev/null +++ b/Scripts/CameraButton.gd.uid @@ -0,0 +1 @@ +uid://dfoog0y2bh7tk diff --git a/Scripts/CosmeticAdjustment.gd b/Scripts/CosmeticAdjustment.gd new file mode 100644 index 0000000..75fd198 --- /dev/null +++ b/Scripts/CosmeticAdjustment.gd @@ -0,0 +1,18 @@ +extends Control + +@export var vis_name: String +@export var scene_handle: String +@export var options: Dictionary + +func _ready() -> void: + $Panel/Label.text = vis_name + for option in options: + $Panel/OptionButton.add_item(option) + $Panel/OptionButton.select(0) + for adjusted in options[$Panel/OptionButton.get_item_text(0)]: + get_node(scene_handle+adjusted).visible = options[$Panel/OptionButton.get_item_text(0)][adjusted] + + +func _on_option_button_item_selected(index: int) -> void: + for adjusted in options[$Panel/OptionButton.get_item_text(index)]: + get_node(scene_handle+adjusted).visible = options[$Panel/OptionButton.get_item_text(index)][adjusted] diff --git a/Scripts/CosmeticAdjustment.gd.uid b/Scripts/CosmeticAdjustment.gd.uid new file mode 100644 index 0000000..832bd83 --- /dev/null +++ b/Scripts/CosmeticAdjustment.gd.uid @@ -0,0 +1 @@ +uid://1f7v3ohsgx0g diff --git a/Scripts/EditorScreen.gd b/Scripts/EditorScreen.gd index 3209ad4..f34bf79 100644 --- a/Scripts/EditorScreen.gd +++ b/Scripts/EditorScreen.gd @@ -1,161 +1,947 @@ extends Control -signal movement_in(movement, rate) -signal movement_out(movement, rate) +var playing : bool = false +var recording : bool = false +var index : int = 0 +var playback_rate : int = 1 +var transport_enabled : bool = false +var erase_validated : bool = false +var cam_index : int = 0 +var fullscreen : bool = false + +var showtape_loaded : bool = false +var show_name : String + +var current_stage : String + +var stages_info = { + "Helen House": + { + "bits": 20, + "scene": "res://Scenes/Stages/HelenHouse.tscn", + "scene_ref_base": "SubViewport/HelenHouse/", + "camera_count": 2, + + "ust_type": "Rockafire Explosion/3-Stage", + + "bit_mapping": + { + 23: { "bot": "Helen", "movement": "Mouth", "flow_in": 3.0, "flow_out": 2.0 }, + 24: { "bot": "Helen", "movement": "Left Ear", "flow_in": 3.5, "flow_out": 1.5 }, + 25: { "bot": "Helen", "movement": "Right Ear", "flow_in": 3.5, "flow_out": 1.5 }, + 26: { "bot": "Helen", "movement": "Left Eyelid", "flow_in": 1.5, "flow_out": 2.0 }, + 27: { "bot": "Helen", "movement": "Right Eyelid", "flow_in": 1.5, "flow_out": 2.0 }, + 28: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 3.5, "flow_out": 1.5 }, + 29: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 3.5, "flow_out": 1.5 }, + 30: { "bot": "Helen", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 }, + 31: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 }, + 32: { "bot": "Helen", "movement": "Head Up", "flow_in": 1.0, "flow_out": 1.0 }, + 33: { "bot": "Helen", "movement": "Left Arm Up", "flow_in": 0.8, "flow_out": 0.6 }, + 34: { "bot": "Helen", "movement": "Left Arm Twist", "flow_in": 0.8, "flow_out": 0.8 }, + 35: { "bot": "Helen", "movement": "Left Elbow", "flow_in": 1.0, "flow_out": 1.0 }, + 36: { "bot": "Helen", "movement": "Right Arm Up", "flow_in": 0.8, "flow_out": 0.6 }, + 37: { "bot": "Helen", "movement": "Right Arm Twist", "flow_in": 0.8, "flow_out": 0.8 }, + 38: { "bot": "Helen", "movement": "Right Elbow", "flow_in": 1.0, "flow_out": 1.0 }, + 39: { "bot": "Helen", "movement": "Body Left", "flow_in": 0.7, "flow_out": 0.7 }, + 40: { "bot": "Helen", "movement": "Body Right", "flow_in": 0.7, "flow_out": 0.7 }, + 41: { "bot": "Helen", "movement": "Body Lean", "flow_in": 1.0, "flow_out": 0.8 }, + 125: { "bot": "Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" }, + }, + + "cosmetics": + { + "Helen Hair": + { + "Black and White": + { + "Helen/Helen/Skeleton3D/BWHair": true, + "Helen/Helen/Skeleton3D/YellowHair": false, + }, + "Yellow": + { + "Helen/Helen/Skeleton3D/BWHair": false, + "Helen/Helen/Skeleton3D/YellowHair": true, + }, + }, + "Helen Dress": + { + "Tux": + { + "Helen/Helen/Skeleton3D/Collar": true, + "Helen/Helen/Skeleton3D/Torso": true, + "Helen/Helen/Skeleton3D/Skirt": true, + "Helen/Helen/Skeleton3D/CheerDress": false, + }, + "Cheerleader": + { + "Helen/Helen/Skeleton3D/Collar": false, + "Helen/Helen/Skeleton3D/Torso": false, + "Helen/Helen/Skeleton3D/Skirt": false, + "Helen/Helen/Skeleton3D/CheerDress": true, + } + } + } + }, + "Chuck E's Corner": + { + "bits": 16, + "scene": "res://Scenes/Stages/ChuckEsCorner.tscn", + "scene_ref_base": "SubViewport/ChuckEsCorner/", + "camera_count": 3, + + "ust_type": "Cyberamics", + + "bit_mapping": + { + 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, + 2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 0.8, "flow_out": 1.0 }, + 3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.0, "flow_out": 1.0 }, + 4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 }, + 5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 }, + 6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 }, + 7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 }, + 8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 }, + 41: { "bot": "Warblettes", "movement": "Mouth", "flow_in": 4.0, "flow_out": 3.0 }, + 44: { "bot": "Warblettes", "movement": "Body Rock", "flow_in": 1.0, "flow_out": 1.0 }, + 50: { "bot": "Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" }, + 55: { "bot": "Floods", "movement": "Blue", "flow_in": "None", "flow_out": "None" }, + 78: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" }, + 79: { "bot": "Color Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" }, + 82: { "bot": "Floods", "movement": "Red", "flow_in": "None", "flow_out": "None" }, + 86: { "bot": "Floods", "movement": "Green", "flow_in": "None", "flow_out": "None" }, + }, + + "cosmetics": + { + "Chuck E. Hat": + { + "Derby": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false, + "Chuck/Chuck/Skeleton3D/Derby": true, + }, + "Cool Chuck": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": true, + "Chuck/Chuck/Skeleton3D/Derby": false, + }, + "Avenger": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": true, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false, + "Chuck/Chuck/Skeleton3D/Derby": false, + }, + "None": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false, + "Chuck/Chuck/Skeleton3D/Derby": false, + } + }, + + "Chuck E. Shirt": + { + "Red Vest": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false, + "Chuck/Chuck/Skeleton3D/Black Bowtie": true, + "Chuck/Chuck/Skeleton3D/Buttons": true, + "Chuck/Chuck/Skeleton3D/Vest Trim": true, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false, + "Chuck/Chuck/Skeleton3D/Rocker Vest": true, + }, + "Yellow Checker Vest": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false, + "Chuck/Chuck/Skeleton3D/Black Bowtie": true, + "Chuck/Chuck/Skeleton3D/Buttons": true, + "Chuck/Chuck/Skeleton3D/Vest Trim": true, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": true, + "Chuck/Chuck/Skeleton3D/Rocker Vest": false, + }, + "Cool Chuck Shirt": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": true, + "Chuck/Chuck/Skeleton3D/Black Bowtie": false, + "Chuck/Chuck/Skeleton3D/Buttons": false, + "Chuck/Chuck/Skeleton3D/Vest Trim": false, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false, + "Chuck/Chuck/Skeleton3D/Rocker Vest": false, + }, + "Avenger Shirt": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": true, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false, + "Chuck/Chuck/Skeleton3D/Black Bowtie": false, + "Chuck/Chuck/Skeleton3D/Buttons": false, + "Chuck/Chuck/Skeleton3D/Vest Trim": false, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false, + "Chuck/Chuck/Skeleton3D/Rocker Vest": false, + } + }, + + "Chuck E. Mask": + { + "PTT": + { + "Chuck/Chuck/Skeleton3D/PTT Ears": true, + "Chuck/Chuck/Skeleton3D/PTT Ears Inside": true, + "Chuck/Chuck/Skeleton3D/PTT Jaw": true, + "Chuck/Chuck/Skeleton3D/PTT Muzzle": true, + "Chuck/Chuck/Skeleton3D/Modern Ears": false, + "Chuck/Chuck/Skeleton3D/Modern Ears Inside": false, + "Chuck/Chuck/Skeleton3D/Modern Jaw": false, + "Chuck/Chuck/Skeleton3D/Modern Muzzle": false, + }, + "Modern": + { + "Chuck/Chuck/Skeleton3D/PTT Ears": false, + "Chuck/Chuck/Skeleton3D/PTT Ears Inside": false, + "Chuck/Chuck/Skeleton3D/PTT Jaw": false, + "Chuck/Chuck/Skeleton3D/PTT Muzzle": false, + "Chuck/Chuck/Skeleton3D/Modern Ears": true, + "Chuck/Chuck/Skeleton3D/Modern Ears Inside": true, + "Chuck/Chuck/Skeleton3D/Modern Jaw": true, + "Chuck/Chuck/Skeleton3D/Modern Muzzle": true, + }, + }, + + "Chuck E. Eyelids": + { + "Blue": + { + "Chuck/Chuck/Skeleton3D/Blue Eyelids": true, + "Chuck/Chuck/Skeleton3D/Grey Eyelids": false, + }, + "Grey": + { + "Chuck/Chuck/Skeleton3D/Blue Eyelids": false, + "Chuck/Chuck/Skeleton3D/Grey Eyelids": true, + }, + } + } + }, + "Balcony Stage": + { + "bits": 53, + "scene": "res://Scenes/Stages/Balcony.tscn", + "scene_ref_base": "SubViewport/Balcony/", + "camera_count": 6, + + "ust_type": "Cyberamics", + + "bit_mapping": + { + 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, + 2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 0.8, "flow_out": 1.0 }, + 3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.0, "flow_out": 1.0 }, + 4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 }, + 5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 }, + 6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 }, + 7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 }, + 8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 }, + 9: { "bot": "Helen", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, + 10: { "bot": "Helen", "movement": "Head Left", "flow_in": 0.8, "flow_out": 1.0 }, + 11: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.0, "flow_out": 1.0 }, + 12: { "bot": "Helen", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 }, + 13: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 }, + 14: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 }, + 15: { "bot": "Helen", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 }, + 16: { "bot": "Helen", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 }, + 25: { "bot": "Jasper", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, + 26: { "bot": "Jasper", "movement": "Head Left", "flow_in": 1.0, "flow_out": 1.0 }, + 27: { "bot": "Jasper", "movement": "Head Right", "flow_in": 1.0, "flow_out": 1.0 }, + 28: { "bot": "Jasper", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 }, + 29: { "bot": "Jasper", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 }, + 30: { "bot": "Jasper", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 }, + 31: { "bot": "Jasper", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 }, + 32: { "bot": "Jasper", "movement": "Strum", "flow_in": 2.0, "flow_out": 1.0 }, + 41: { "bot": "Warblettes", "movement": "Mouth", "flow_in": 4.0, "flow_out": 3.0 }, + 44: { "bot": "Warblettes", "movement": "Body Rock", "flow_in": 1.0, "flow_out": 1.0 }, + 50: { "bot": "Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" }, + 51: { "bot": "Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" }, + 52: { "bot": "Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" }, + 53: { "bot": "Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" }, + 54: { "bot": "Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" }, + 55: { "bot": "Backdrop", "movement": "C Blue", "flow_in": "None", "flow_out": "None" }, + 65: { "bot": "Backdrop", "movement": "L Blue", "flow_in": "None", "flow_out": "None" }, + 66: { "bot": "Valence", "movement": "R Center", "flow_in": "None", "flow_out": "None" }, + 68: { "bot": "Backdrop", "movement": "L Red", "flow_in": "None", "flow_out": "None" }, + 69: { "bot": "Valence", "movement": "R", "flow_in": "None", "flow_out": "None" }, + 70: { "bot": "Backdrop", "movement": "L Amber", "flow_in": "None", "flow_out": "None" }, + 71: { "bot": "Valence", "movement": "L Center", "flow_in": "None", "flow_out": "None" }, + 72: { "bot": "Valence", "movement": "L", "flow_in": "None", "flow_out": "None" }, + 73: { "bot": "Valence", "movement": "Center", "flow_in": "None", "flow_out": "None" }, + 74: { "bot": "Color Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" }, + 75: { "bot": "Color Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" }, + 76: { "bot": "Color Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" }, + 77: { "bot": "Color Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" }, + 78: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" }, + 79: { "bot": "Color Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" }, + 80: { "bot": "Color Spots", "movement": "Chuck 2", "flow_in": "None", "flow_out": "None" }, + 81: { "bot": "Backdrop", "movement": "R Amber", "flow_in": "None", "flow_out": "None" }, + 82: { "bot": "Backdrop", "movement": "C Red", "flow_in": "None", "flow_out": "None" }, + 83: { "bot": "Backdrop", "movement": "R Blue", "flow_in": "None", "flow_out": "None" }, + 84: { "bot": "Color Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" }, + 85: { "bot": "Backdrop", "movement": "R Red", "flow_in": "None", "flow_out": "None" }, + 86: { "bot": "Backdrop", "movement": "C Amber", "flow_in": "None", "flow_out": "None" }, + }, + + "cosmetics": + { + "Chuck E. Hat": + { + "Derby": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false, + "Chuck/Chuck/Skeleton3D/Derby": true, + }, + "Cool Chuck": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": true, + "Chuck/Chuck/Skeleton3D/Derby": false, + }, + "Avenger": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": true, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false, + "Chuck/Chuck/Skeleton3D/Derby": false, + }, + "None": + { + "Chuck/Chuck/Skeleton3D/Avenger Hat": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false, + "Chuck/Chuck/Skeleton3D/Derby": false, + } + }, + + "Chuck E. Shirt": + { + "Yellow Checker Vest": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false, + "Chuck/Chuck/Skeleton3D/Black Bowtie": true, + "Chuck/Chuck/Skeleton3D/Buttons": true, + "Chuck/Chuck/Skeleton3D/Vest Trim": true, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": true, + "Chuck/Chuck/Skeleton3D/Rocker Vest": false, + }, + "Red Vest": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false, + "Chuck/Chuck/Skeleton3D/Black Bowtie": true, + "Chuck/Chuck/Skeleton3D/Buttons": true, + "Chuck/Chuck/Skeleton3D/Vest Trim": true, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false, + "Chuck/Chuck/Skeleton3D/Rocker Vest": true, + }, + "Cool Chuck Shirt": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": false, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": true, + "Chuck/Chuck/Skeleton3D/Black Bowtie": false, + "Chuck/Chuck/Skeleton3D/Buttons": false, + "Chuck/Chuck/Skeleton3D/Vest Trim": false, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false, + "Chuck/Chuck/Skeleton3D/Rocker Vest": false, + }, + "Avenger Shirt": + { + "Chuck/Chuck/Skeleton3D/Avenger Shirt": true, + "Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false, + "Chuck/Chuck/Skeleton3D/Black Bowtie": false, + "Chuck/Chuck/Skeleton3D/Buttons": false, + "Chuck/Chuck/Skeleton3D/Vest Trim": false, + "Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false, + "Chuck/Chuck/Skeleton3D/Rocker Vest": false, + } + }, + + "Chuck E. Mask": + { + "PTT": + { + "Chuck/Chuck/Skeleton3D/PTT Ears": true, + "Chuck/Chuck/Skeleton3D/PTT Ears Inside": true, + "Chuck/Chuck/Skeleton3D/PTT Jaw": true, + "Chuck/Chuck/Skeleton3D/PTT Muzzle": true, + "Chuck/Chuck/Skeleton3D/Modern Ears": false, + "Chuck/Chuck/Skeleton3D/Modern Ears Inside": false, + "Chuck/Chuck/Skeleton3D/Modern Jaw": false, + "Chuck/Chuck/Skeleton3D/Modern Muzzle": false, + }, + "Modern": + { + "Chuck/Chuck/Skeleton3D/PTT Ears": false, + "Chuck/Chuck/Skeleton3D/PTT Ears Inside": false, + "Chuck/Chuck/Skeleton3D/PTT Jaw": false, + "Chuck/Chuck/Skeleton3D/PTT Muzzle": false, + "Chuck/Chuck/Skeleton3D/Modern Ears": true, + "Chuck/Chuck/Skeleton3D/Modern Ears Inside": true, + "Chuck/Chuck/Skeleton3D/Modern Jaw": true, + "Chuck/Chuck/Skeleton3D/Modern Muzzle": true, + }, + }, + + "Chuck E. Eyelids": + { + "Blue": + { + "Chuck/Chuck/Skeleton3D/Blue Eyelids": true, + "Chuck/Chuck/Skeleton3D/Grey Eyelids": false, + }, + "Grey": + { + "Chuck/Chuck/Skeleton3D/Blue Eyelids": false, + "Chuck/Chuck/Skeleton3D/Grey Eyelids": true, + }, + }, + + "Helen Eyelids": + { + "Blue": + { + "Helen/Helen/Skeleton3D/Blue Eyelids": true, + "Helen/Helen/Skeleton3D/Pink Eyelids": false, + }, + "Pink": + { + "Helen/Helen/Skeleton3D/Blue Eyelids": false, + "Helen/Helen/Skeleton3D/Pink Eyelids": true, + }, + }, + + "Helen Dress": + { + "Half Body CU": + { + "Helen/Helen/Skeleton3D/Half Body Skirt": true, + "Helen/Helen/Skeleton3D/Skirt": false, + "Helen/Helen/Skeleton3D/Black Shirt": true, + "Helen/Helen/Skeleton3D/Collar": true, + }, + "Full Body CU": + { + "Helen/Helen/Skeleton3D/Half Body Skirt": false, + "Helen/Helen/Skeleton3D/Skirt": true, + "Helen/Helen/Skeleton3D/Black Shirt": true, + "Helen/Helen/Skeleton3D/Collar": true, + }, + }, + + "Helen Hair": + { + "Large CU": + { + "Helen/Helen/Skeleton3D/BWHair Large": true, + "Helen/Helen/Skeleton3D/BWHair": false, + }, + "Normal CU": + { + "Helen/Helen/Skeleton3D/BWHair Large": false, + "Helen/Helen/Skeleton3D/BWHair": true, + }, + }, + + "Helen Mask": + { + "Modern": + { + "Helen/Helen/Skeleton3D/Modern Head": true, + "Helen/Helen/Skeleton3D/Modern Mask": true, + "Helen/Helen/Skeleton3D/Road Stage Jaw": false, + "Helen/Helen/Skeleton3D/Road Stage Beak": false, + "Helen/Helen/Skeleton3D/Modern Jaw": true, + "Helen/Helen/Skeleton3D/Modern Beak": true, + }, + "Road Stage": + { + "Helen/Helen/Skeleton3D/Modern Head": true, + "Helen/Helen/Skeleton3D/Modern Mask": true, + "Helen/Helen/Skeleton3D/Road Stage Jaw": true, + "Helen/Helen/Skeleton3D/Road Stage Beak": true, + "Helen/Helen/Skeleton3D/Modern Jaw": false, + "Helen/Helen/Skeleton3D/Modern Beak": false, + }, + }, + } + } +} + +signal step(amount: int) +signal start_recording() +signal end_recording() +signal return_to_zero() +signal erase_all() + +func reload_stage() -> void: + $SequencerPanel/TimelinePanel/VScrollBar.value = 0 + $FlyoutPanel/Movements/VScrollBar.value = 0 + $FlyoutPanel/FlowControls/VScrollBar.value = 0 + $CameraPreview.visible = false + for row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children(): + row.queue_free() + for flow in $FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.get_children(): + flow.queue_free() + for movement in $FlyoutPanel/Movements/InvisibleMask/MovementHandle.get_children(): + movement.queue_free() + for camera in $FlyoutPanel/Camera.get_children(): + camera.queue_free() + for cosmetic_adjustment in $FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.get_children(): + cosmetic_adjustment.queue_free() + if ($SubViewport.get_child_count() > 0): + $SubViewport.get_child(0).queue_free() + cam_index = 0 + var stage = load(stages_info[current_stage]["scene"]).instantiate() + $SubViewport.add_child(stage) + + var cam_offset = 4 + for i in range(1, stages_info[current_stage]["camera_count"]+1): + var camera_button = load("res://Scenes/GUI/Controls/CameraButton.tscn").instantiate() + camera_button.camera = "Angle " + str(i) + camera_button.base_scene_path = "../../../" + stages_info[current_stage]["scene_ref_base"] + camera_button.position.y = cam_offset + cam_offset += 36 + $FlyoutPanel/Camera.add_child(camera_button) + $FlyoutPanel/Camera.size.y = cam_offset + + var cosmetics_offset = 0 + var cosmetics_count = -1 + for cosmetic in stages_info[current_stage]["cosmetics"]: + var cosmetic_adjustment = load("res://Scenes/GUI/Controls/CosmeticAdjustment.tscn").instantiate() + cosmetic_adjustment.vis_name = cosmetic + cosmetic_adjustment.options = stages_info[current_stage]["cosmetics"][cosmetic] + cosmetic_adjustment.scene_handle = "../../../../../" + stages_info[current_stage]["scene_ref_base"] + cosmetic_adjustment.position.y = cosmetics_offset + cosmetics_offset += 44 + cosmetics_count += 1 + $FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.add_child(cosmetic_adjustment) + $FlyoutPanel/Cosmetics/VScrollBar.max_value = cosmetics_count + + var rows_offset = 0 + var flows_offset = 0 + var flow_count = 0 + for bit_number in stages_info[current_stage]["bit_mapping"]: + var bot = stages_info[current_stage]["bit_mapping"][bit_number]["bot"] + var movement = stages_info[current_stage]["bit_mapping"][bit_number]["movement"] + + var in_flow = stages_info[current_stage]["bit_mapping"][bit_number]["flow_in"] + var out_flow = stages_info[current_stage]["bit_mapping"][bit_number]["flow_out"] + if (in_flow is not String): + var flow_control = load("res://Scenes/GUI/Controls/FlowControl.tscn").instantiate() + flow_control.position.y = flows_offset + flow_control.name = str(bit_number) + bot + movement + current_stage + flow_control.vis_name = bot + " " + movement + flow_control.in_value = in_flow + flow_control.out_value = out_flow + $FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.add_child(flow_control) + flows_offset += 44 + flow_count += 1 + + var row = load("res://Scenes/GUI/Controls/MovementRow.tscn").instantiate() + row.name = str(bit_number) + " Bit" + row.position.y = rows_offset + row.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"] + row.animatronic = bot + row.current_stage = current_stage + if (in_flow is String): row.flow_path = "None" + row.movement_bit = bit_number + row.movement_name = movement + $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.add_child(row, true) + + var movement_button = load("res://Scenes/GUI/Controls/MovementButton.tscn").instantiate() + movement_button.position.y = rows_offset + movement_button.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"] + movement_button.animatronic = bot + movement_button.movement_bit = bit_number + movement_button.current_stage = current_stage + if (in_flow is String): movement_button.flow_path = "None" + movement_button.movement_name = movement + $FlyoutPanel/Movements/InvisibleMask/MovementHandle.add_child(movement_button) + rows_offset += 44 + $SequencerPanel/TimelinePanel/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1 + $FlyoutPanel/Movements/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1 + $FlyoutPanel/FlowControls/VScrollBar.max_value = flow_count - 1 + $CameraPreview.visible = true + +func _on_stage_change_overwrite_confirmation_dialog_confirmed() -> void: + erase_all.emit() + current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected) + reload_stage() + +func update_time_label() -> void: + var frames = index % 60 + var seconds = floori(index/60.0) % 60 + var minutes = floori(index/3600.0) % 60 + var hours = floori(index/216000.0) + $SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames] + +func set_transport_enabled(enabled: bool): + $SequencerPanel/TransportControls/Centered/StepBackwardsButton.disabled = !enabled + $SequencerPanel/TransportControls/Centered/FastBackwardsButton.disabled = !enabled + $SequencerPanel/TransportControls/Centered/PlayBackwardsButton.disabled = !enabled + $SequencerPanel/TransportControls/Centered/PauseButton.disabled = !enabled + $SequencerPanel/TransportControls/Centered/StopButton.disabled = !enabled + $SequencerPanel/TransportControls/Centered/PlayButton.disabled = !enabled + $SequencerPanel/TransportControls/Centered/FastForwardButton.disabled = !enabled + $SequencerPanel/TransportControls/Centered/StepForwardButton.disabled = !enabled + $SequencerPanel/TransportControls/RecordButton.disabled = !enabled + transport_enabled = enabled func _ready() -> void: - var animatronic = $"SubViewport/HelenHouse/3stHelen" - movement_in.connect(animatronic._movement_in) - movement_out.connect(animatronic._movement_out) - movement_in.connect(self._movement_in) - movement_out.connect(self._movement_out) + get_tree().get_root().size_changed.connect(_on_size_changed) + erase_all.connect(_erase_all) + $MenuBar/MenuButton.get_popup().id_pressed.connect(_showtape_menu_button_pressed) + OS.request_permissions() + current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected) + reload_stage() + +func _on_stage_selector_item_selected(_index: int) -> void: + if (showtape_loaded): $StageChangeOverwriteConfirmationDialog.show() + else: + current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected) + reload_stage() + +func _showtape_menu_button_pressed(id: int) -> void: + match (id): + 0: #new + if (showtape_loaded): $NewOverwriteConfirmationDialog.show() + else: $ShowtapeNewScreen.visible = true + 1: #load + if (showtape_loaded): $LoadOverwriteConfirmationDialog.show() + else: $ShowtapeLoadScreen.visible = true + 2: #save + if (showtape_loaded): $ShowtapeSaveScreen.visible = true + else: $NoShowtapeLoadedDialog.show() + + +func _on_showtape_new_audio_browse_button_pressed() -> void: + $OpenAudioFileDialog.show() + +func _on_open_audio_file_dialog_file_selected(path: String) -> void: + $ShowtapeNewScreen/DialogPanel/AudioFilePath.text = path + +func _on_showtape_new_cancel_button_pressed() -> void: + $ShowtapeNewScreen/DialogPanel/AudioFilePath.text = "" + $ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text = "" + $ShowtapeNewScreen.visible = false + +func _on_showtape_new_create_button_pressed() -> void: + if (!FileAccess.file_exists($ShowtapeNewScreen/DialogPanel/AudioFilePath.text.strip_edges())): + $FileDoesntExistDialog.show() + return + if ($ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text.strip_edges() == ""): + $EmptyStringDialog.show() + return + show_name = $ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text.strip_edges() + $AudioStreamPlayer.stream = load_audio($ShowtapeNewScreen/DialogPanel/AudioFilePath.text.strip_edges()) + set_transport_enabled(true) + showtape_loaded = true + $MenuBar/EditingLabel.text = "Editing: " + show_name + $ShowtapeNewScreen/DialogPanel/AudioFilePath.text = "" + $ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text = "" + $ShowtapeNewScreen.visible = false + +func _on_new_overwrite_confirmation_dialog_confirmed() -> void: + erase_all.emit() + $ShowtapeNewScreen.visible = true + +func _on_open_showtape_file_dialog_file_selected(path: String) -> void: + $ShowtapeLoadScreen/DialogPanel/InFilePath.text = path + +func _on_showtape_load_in_browse_button_pressed() -> void: + $OpenShowtapeFileDialog.show() + +func _on_showtape_load_cancel_button_pressed() -> void: + $ShowtapeLoadScreen/DialogPanel/InFilePath.text = "" + $ShowtapeLoadScreen.visible = false + +func _on_showtape_load_open_button_pressed() -> void: + if (!FileAccess.file_exists($ShowtapeLoadScreen/DialogPanel/InFilePath.text.strip_edges())): + $FileDoesntExistDialog.show() + return + var file = FileAccess.open($ShowtapeLoadScreen/DialogPanel/InFilePath.text.strip_edges(), FileAccess.READ) + var content = file.get_as_text() + var header = content.split(";")[0].split(",") + if (header[1] != "2"): + $IncorrectShowtapeDialog.dialog_text = "This showtape is not the correct version!" + $IncorrectShowtapeDialog.show() + return + if (header[3] != stages_info[current_stage]["ust_type"]): + $IncorrectShowtapeDialog.dialog_text = "This showtape is not compatible with the currently selected stage.\nShowtape stage type: " + header[3] + $IncorrectShowtapeDialog.show() + return + show_name = header[2] + plot_data(content.split(";")[1]) + $AudioStreamPlayer.stream = load_audio_from_buffer(Marshalls.base64_to_raw(content.split(";")[2])) + set_transport_enabled(true) + showtape_loaded = true + $MenuBar/EditingLabel.text = "Editing: " + show_name + $ShowtapeLoadScreen/DialogPanel/InFilePath.text = "" + $ShowtapeLoadScreen.visible = false + +func _on_load_overwrite_confirmation_dialog_confirmed() -> void: + erase_all.emit() + $ShowtapeLoadScreen.visible = true + + +func _on_showtape_save_out_browse_button_pressed() -> void: + $SaveShowtapeFileDialog.show() + +func _on_showtape_save_create_button_pressed() -> void: + var header = "UST,2,"+show_name.replace(",", "_").replace(";", "_")+","+stages_info[current_stage]["ust_type"]+";" + var data_out_string = save_data() + var file = FileAccess.open($ShowtapeSaveScreen/DialogPanel/OutFilePath.text, FileAccess.WRITE) + file.store_string(header+data_out_string+";"+Marshalls.raw_to_base64($AudioStreamPlayer.stream.data)) + file.close() + $ShowtapeSaveScreen/DialogPanel/OutFilePath.text = "" + $ShowtapeSaveScreen.visible = false + +func _on_showtape_save_cancel_button_pressed() -> void: + $ShowtapeSaveScreen/DialogPanel/OutFilePath.text = "" + $ShowtapeSaveScreen.visible = false + +func _on_save_showtape_file_dialog_file_selected(path: String) -> void: + $ShowtapeSaveScreen/DialogPanel/OutFilePath.text = path func _input(event: InputEvent) -> void: if event.is_action_pressed("toggle_editor_screen"): $CameraPreview.visible = !$CameraPreview.visible; $CameraFullScreen.visible = !$CameraFullScreen.visible; + if event.is_action_pressed("fullscreen"): + if (!fullscreen): + fullscreen = true + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) + else: + fullscreen = false + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) + if (event.is_action_pressed("cycle_camera_angle")): + cam_index += 1 + get_node(stages_info[current_stage]["scene_ref_base"] + "Angle " + str((cam_index % stages_info[current_stage]["camera_count"])+1)).current = true + if (transport_enabled): + if event.is_action_pressed("sequencer_play_pause"): + if (playing): _on_pause_button_pressed() + else: _on_play_button_pressed() + elif event.is_action_pressed("sequencer_play_reverse"): + _on_play_backwards_button_pressed() + elif event.is_action_pressed("sequencer_fast_reverse"): + _on_fast_backwards_button_pressed() + elif event.is_action_pressed("sequencer_fast_forward"): + _on_fast_forward_button_pressed() + elif event.is_action_pressed("sequencer_step_backward"): + _on_step_backwards_button_pressed() + elif event.is_action_pressed("sequencer_step_forward"): + _on_step_forward_button_pressed() + elif event.is_action_pressed("sequencer_home"): + _on_stop_button_pressed() + +func _physics_process(_delta: float) -> void: + if (playing): + step.emit(playback_rate) + index += playback_rate + if (index <= 0): _on_stop_button_pressed() + update_time_label() + +func load_audio(path: String) -> AudioStream: + var sound + match (path.split(".")[-1]): + "mp3": + sound = AudioStreamMP3.load_from_file(path) + "wav": + sound = AudioStreamWAV.load_from_file(path) + "ogg": + sound = AudioStreamOggVorbis.load_from_file(path) + return sound + +func load_audio_from_buffer(data: PackedByteArray) -> AudioStream: + var sound + match (data[0]): + 73: + sound = AudioStreamMP3.load_from_buffer(data) + 82: + sound = AudioStreamWAV.load_from_buffer(data) + 79: + sound = AudioStreamOggVorbis.load_from_buffer(data) + return sound + +func _on_size_changed() -> void: + $SubViewport.size = $ColorRect.size + +func _on_controls_button_pressed() -> void: + $ControlsScreen.visible = true + +func _on_credits_button_pressed() -> void: + $CreditsScreen.visible = true + +func _on_input_eater_pressed() -> void: + $ControlsScreen.visible = false + $CreditsScreen.visible = false + $ShowtapeNewScreen.visible = false + $ShowtapeLoadScreen.visible = false + $ShowtapeSaveScreen.visible = false + +func _on_v_scroll_bar_value_changed(value: float) -> void: + $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.position.y = value * -44 + +func _on_flow_v_scroll_bar_value_changed(value: float) -> void: + $FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.position.y = value * -44 + +func _on_movement_v_scroll_bar_value_changed(value: float) -> void: + $FlyoutPanel/Movements/InvisibleMask/MovementHandle.position.y = value * -44 + +func _on_cosmetics_v_scroll_bar_value_changed(value: float) -> void: + $FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.position.y = value * -44 + +func _erase_all() -> void: + playing = false + $AudioStreamPlayer.stop() + $AudioStreamPlayer.seek(0) + $SequencerPanel/TransportControls/RecordButton.button_pressed = false + index = 0 + update_time_label() + show_name = "" + $AudioStreamPlayer.stream = null + set_transport_enabled(false) + showtape_loaded = false + $MenuBar/EditingLabel.text = "No showtape loaded." func _on_movements_flyout_button_toggled(toggled_on: bool) -> void: - $Movements.visible = toggled_on + $FlyoutPanel/Movements.visible = toggled_on func _on_flows_flyout_button_toggled(toggled_on: bool) -> void: - $FlowControls.visible = toggled_on + $FlyoutPanel/FlowControls.visible = toggled_on -func _movement_in(movement, rate): - get_node("Movements/IndicatorLights/" + movement).turn_on(); +func _on_camera_flyout_button_toggled(toggled_on: bool) -> void: + $FlyoutPanel/Camera.visible = toggled_on -func _movement_out(movement, rate): - get_node("Movements/IndicatorLights/" + movement).turn_off(); +func _on_cosmetics_flyout_button_toggled(toggled_on: bool) -> void: + $FlyoutPanel/Cosmetics.visible = toggled_on -func _on_mouth_button_down() -> void: - movement_in.emit("Mouth", $FlowControls/InFlows/MouthFlow.value) +func _on_play_button_pressed() -> void: + playback_rate = 1 + $AudioStreamPlayer.pitch_scale = 1 + $AudioStreamPlayer.play(float(index)/60.0) + playing = true -func _on_mouth_button_up() -> void: - movement_out.emit("Mouth", $FlowControls/OutFlows/MouthFlow.value) +func _on_pause_button_pressed() -> void: + $AudioStreamPlayer.stop() + playing = false +func _on_play_backwards_button_pressed() -> void: + playback_rate = -1 + $AudioStreamPlayer.stop() # cant play backwards :( + playing = true + $SequencerPanel/TransportControls/RecordButton.button_pressed = false -func _on_left_ear_button_down() -> void: - movement_in.emit("Left Ear", $FlowControls/InFlows/LeftEarFlow.value) +func _on_fast_backwards_button_pressed() -> void: + playback_rate = -2 + $AudioStreamPlayer.stop() # cant play backwards :( + playing = true + $SequencerPanel/TransportControls/RecordButton.button_pressed = false -func _on_left_ear_button_up() -> void: - movement_out.emit("Left Ear", $FlowControls/OutFlows/LeftEarFlow.value) +func _on_step_backwards_button_pressed() -> void: + playing = false + $AudioStreamPlayer.stop() + $SequencerPanel/TransportControls/RecordButton.button_pressed = false + if (index != 0): + step.emit(-1) + index -= 1 + update_time_label() +func _on_fast_forward_button_pressed() -> void: + playback_rate = 2 + $AudioStreamPlayer.pitch_scale = 2 + $AudioStreamPlayer.play(float(index)/60.0) + playing = true + $SequencerPanel/TransportControls/RecordButton.button_pressed = false -func _on_right_ear_button_down() -> void: - movement_in.emit("Right Ear", $FlowControls/InFlows/RightEarFlow.value) +func _on_step_forward_button_pressed() -> void: + playing = false + $AudioStreamPlayer.stop() + $SequencerPanel/TransportControls/RecordButton.button_pressed = false + step.emit(1) + index += 1 + update_time_label() -func _on_right_ear_button_up() -> void: - movement_out.emit("Right Ear", $FlowControls/OutFlows/RightEarFlow.value) +func _on_record_button_toggled(toggled_on: bool) -> void: + if (playing): + # starting recording while playing causes issues + _on_stop_button_pressed() + recording = toggled_on + if (toggled_on): start_recording.emit() + else: end_recording.emit() +func _on_stop_button_pressed() -> void: + playing = false + $AudioStreamPlayer.stop() + $AudioStreamPlayer.seek(0) + $SequencerPanel/TransportControls/RecordButton.button_pressed = false + index = 0 + return_to_zero.emit() + update_time_label() -func _on_left_eyelid_button_down() -> void: - movement_in.emit("Left Eyelid", $FlowControls/InFlows/LeftEyelidFlow.value) +func save_data() -> String: + var write_out : String = "" + var temp_data = {} + var longest_channel = 0 + for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children(): + temp_data[movement_row.movement_bit] = movement_row.movements + if (movement_row.movements.size() > longest_channel): longest_channel = movement_row.movements.size() + for i in range(longest_channel+1): + var total_frame_index = 1 + var fstring = "" + for j in range(64): + var f_quartet = 0 + for k in range(4): + if (index_get_safe(i, index_s_get_safe(total_frame_index, temp_data))): + f_quartet += int(pow(2, k)) + total_frame_index += 1 + fstring = ("%01X" % f_quartet) + fstring + write_out += fstring + "," + return write_out -func _on_left_eyelid_button_up() -> void: - movement_out.emit("Left Eyelid", $FlowControls/OutFlows/LeftEyelidFlow.value) +func plot_data(data: String): + start_recording.emit() + var evil_glass = [] + for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children(): + evil_glass.append(movement_row.movement_bit) + for frame_string in data.split(","): + if (frame_string == ""): continue + var check_frame_split = frame_string.split() + check_frame_split.reverse() + for i in stages_info[current_stage]["bit_mapping"]: + var er = false + if ((check_frame_split[(i - 1) / 4].hex_to_int() & int(pow(2, ((i - 1) % 4)))) == int(pow(2, ((i - 1) % 4)))): + er = true + $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_child(evil_glass.find(i)).forced_etchable = true + $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_child(evil_glass.find(i)).etching = er + step.emit(1) + for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children(): + movement_row.forced_etchable = false + movement_row.etching = false + end_recording.emit() + return_to_zero.emit() +func index_get_safe(cindex: int, data: Array[bool]) -> bool: + if (cindex > data.size()-1): return false + if (cindex < 0): return false + var out = data.get(cindex) + if (out == null): return false + return out -func _on_right_eyelid_button_down() -> void: - movement_in.emit("Right Eyelid", $FlowControls/InFlows/RightEyelidFlow.value) - -func _on_right_eyelid_button_up() -> void: - movement_out.emit("Right Eyelid", $FlowControls/OutFlows/RightEyelidFlow.value) - - -func _on_eyes_left_button_down() -> void: - movement_in.emit("Eyes Left", $FlowControls/InFlows/EyesLeftFlow.value) - -func _on_eyes_left_button_up() -> void: - movement_out.emit("Eyes Left", $FlowControls/OutFlows/EyesLeftFlow.value) - - -func _on_eyes_right_button_down() -> void: - movement_in.emit("Eyes Right", $FlowControls/InFlows/EyesRightFlow.value) - -func _on_eyes_right_button_up() -> void: - movement_out.emit("Eyes Right", $FlowControls/OutFlows/EyesRightFlow.value) - - -func _on_head_left_button_down() -> void: - movement_in.emit("Head Left", $FlowControls/InFlows/HeadLeftFlow.value) - -func _on_head_left_button_up() -> void: - movement_out.emit("Head Left", $FlowControls/OutFlows/HeadLeftFlow.value) - - -func _on_head_right_button_down() -> void: - movement_in.emit("Head Right", $FlowControls/InFlows/HeadRightFlow.value) - -func _on_head_right_button_up() -> void: - movement_out.emit("Head Right", $FlowControls/OutFlows/HeadRightFlow.value) - - -func _on_head_up_button_down() -> void: - movement_in.emit("Head Up", $FlowControls/InFlows/HeadUpFlow.value) - -func _on_head_up_button_up() -> void: - movement_out.emit("Head Up", $FlowControls/OutFlows/HeadUpFlow.value) - - -func _on_left_arm_up_button_down() -> void: - movement_in.emit("Left Arm Up", $FlowControls/InFlows/LeftArmUpFlow.value) - -func _on_left_arm_up_button_up() -> void: - movement_out.emit("Left Arm Up", $FlowControls/OutFlows/LeftArmUpFlow.value) - - -func _on_left_arm_twist_button_down() -> void: - movement_in.emit("Left Arm Twist", $FlowControls/InFlows/LeftArmTwistFlow.value) - -func _on_left_arm_twist_button_up() -> void: - movement_out.emit("Left Arm Twist", $FlowControls/OutFlows/LeftArmTwistFlow.value) - - -func _on_left_elbow_button_down() -> void: - movement_in.emit("Left Elbow", $FlowControls/InFlows/LeftElbowFlow.value) - -func _on_left_elbow_button_up() -> void: - movement_out.emit("Left Elbow", $FlowControls/OutFlows/LeftElbowFlow.value) - - -func _on_right_arm_up_button_down() -> void: - movement_in.emit("Right Arm Up", $FlowControls/InFlows/RightArmUpFlow.value) - -func _on_right_arm_up_button_up() -> void: - movement_out.emit("Right Arm Up", $FlowControls/OutFlows/RightArmUpFlow.value) - - -func _on_right_arm_twist_button_down() -> void: - movement_in.emit("Right Arm Twist", $FlowControls/InFlows/RightArmTwistFlow.value) - -func _on_right_arm_twist_button_up() -> void: - movement_out.emit("Right Arm Twist", $FlowControls/OutFlows/RightArmTwistFlow.value) - - -func _on_right_elbow_button_down() -> void: - movement_in.emit("Right Elbow", $FlowControls/InFlows/RightElbowFlow.value) - -func _on_right_elbow_button_up() -> void: - movement_out.emit("Right Elbow", $FlowControls/OutFlows/RightElbowFlow.value) - - -func _on_body_left_button_down() -> void: - movement_in.emit("Body Left", $FlowControls/InFlows/BodyLeftFlow.value) - -func _on_body_left_button_up() -> void: - movement_out.emit("Body Left", $FlowControls/OutFlows/BodyLeftFlow.value) - - -func _on_body_right_button_down() -> void: - movement_in.emit("Body Right", $FlowControls/InFlows/BodyRightFlow.value) - -func _on_body_right_button_up() -> void: - movement_out.emit("Body Right", $FlowControls/OutFlows/BodyRightFlow.value) - - -func _on_body_lean_button_down() -> void: - movement_in.emit("Body Lean", $FlowControls/InFlows/BodyLeanFlow.value) - -func _on_body_lean_button_up() -> void: - movement_out.emit("Body Lean", $FlowControls/OutFlows/BodyLeanFlow.value) +func index_s_get_safe(cindex: int, data: Dictionary) -> Array[bool]: + if (cindex > data.size()-1): return [ false ] + if (cindex < 0): return [ false ] + var out = data.get(cindex) + if (out == null): return [ false ] + return out diff --git a/Scripts/FlowControl.gd b/Scripts/FlowControl.gd new file mode 100644 index 0000000..66de06e --- /dev/null +++ b/Scripts/FlowControl.gd @@ -0,0 +1,21 @@ +extends Control + +@export var in_value : float = 1.0 +@export var out_value : float = 1.0 +@export var vis_name : String = "" + +signal in_value_updated(new_value: float) +signal out_value_updated(new_value: float) + +func _ready() -> void: + $Panel/Label.text = self.vis_name + $Panel/InStepper.value = self.in_value + $Panel/OutStepper.value = self.out_value + +func _on_in_stepper_value_changed(value: float) -> void: + self.in_value = value + in_value_updated.emit(value) + +func _on_out_stepper_value_changed(value: float) -> void: + self.out_value = value + out_value_updated.emit(value) diff --git a/Scripts/FlowSlider.gd.uid b/Scripts/FlowControl.gd.uid similarity index 100% rename from Scripts/FlowSlider.gd.uid rename to Scripts/FlowControl.gd.uid diff --git a/Scripts/FlowSlider.gd b/Scripts/FlowSlider.gd deleted file mode 100644 index 0c85b45..0000000 --- a/Scripts/FlowSlider.gd +++ /dev/null @@ -1,10 +0,0 @@ -extends Control - -@export var value : float = 1.0 - -func _ready() -> void: - $Panel/Slider.value = self.value - -func _on_slider_value_changed(value: float) -> void: - self.value = $Panel/Slider.value - $Panel/ValueLabel.text = str(self.value) diff --git a/Scripts/HelenController.gd b/Scripts/HelenController.gd deleted file mode 100644 index 0818448..0000000 --- a/Scripts/HelenController.gd +++ /dev/null @@ -1,14 +0,0 @@ -extends Node3D - -var animation_player - -func _ready(): - animation_player = $AnimationPlayer - -func _movement_in(movement, rate): - animation_player.speed_scale = rate - animation_player.play(movement) - -func _movement_out(movement, rate): - animation_player.speed_scale = rate - animation_player.play_backwards(movement) diff --git a/Scripts/IndicatorLight.gd b/Scripts/IndicatorLight.gd deleted file mode 100644 index bbf57ae..0000000 --- a/Scripts/IndicatorLight.gd +++ /dev/null @@ -1,22 +0,0 @@ -extends Control - -@export var on: bool = false - -func _ready() -> void: - $Green.visible = self.on - -func turn_on() -> void: - self.on = true - $Green.visible = self.on - -func turn_off() -> void: - self.on = false - $Green.visible = self.on - -func toggle() -> void: - self.on = !self.on - $Green.visible = self.on - -func set_state(value: bool) -> void: - self.on = value - $Green.visible = self.on diff --git a/Scripts/LightController.gd b/Scripts/LightController.gd new file mode 100644 index 0000000..b5dc91d --- /dev/null +++ b/Scripts/LightController.gd @@ -0,0 +1,7 @@ +extends Node3D + +func _movement_in(movement, _rate): + get_node(movement).visible = true + +func _movement_out(movement, _rate): + get_node(movement).visible = false diff --git a/Scripts/LightController.gd.uid b/Scripts/LightController.gd.uid new file mode 100644 index 0000000..2a8204c --- /dev/null +++ b/Scripts/LightController.gd.uid @@ -0,0 +1 @@ +uid://d1p4ite8ts2wi diff --git a/Scripts/MovementButton.gd b/Scripts/MovementButton.gd new file mode 100644 index 0000000..2e7e1c5 --- /dev/null +++ b/Scripts/MovementButton.gd @@ -0,0 +1,41 @@ +extends Control + +signal movement_in(movement, rate) +signal movement_out(movement, rate) + +@export var animatronic : String +@export var movement_bit : int +@export var current_stage : String +@export var base_scene_path : String +@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/" +@export var movement_name : String + +var in_flow : float = 1.0 +var out_flow : float = 1.0 + +func _ready() -> void: + $Panel/Button.text = animatronic + " " + movement_name + if (animatronic != "None"): + var animatronic_node = get_node(base_scene_path + animatronic) + movement_in.connect(animatronic_node._movement_in) + movement_out.connect(animatronic_node._movement_out) + if (flow_path != "None"): + var flow_control = get_node(flow_path + str(movement_bit) + animatronic + movement_name + current_stage) + flow_control.in_value_updated.connect(self._update_in_flow) + flow_control.out_value_updated.connect(self._update_out_flow) + in_flow = flow_control.in_value + out_flow = flow_control.out_value + +func _update_in_flow(new_value: float) -> void: + in_flow = new_value + +func _update_out_flow(new_value: float) -> void: + out_flow = new_value + +func _on_button_button_down() -> void: + movement_in.emit(movement_name, in_flow) + $Panel/IndicatorPanel/Green.visible = true + +func _on_button_button_up() -> void: + movement_out.emit(movement_name, out_flow) + $Panel/IndicatorPanel/Green.visible = false diff --git a/Scripts/IndicatorLight.gd.uid b/Scripts/MovementButton.gd.uid similarity index 100% rename from Scripts/IndicatorLight.gd.uid rename to Scripts/MovementButton.gd.uid diff --git a/Scripts/MovementFrameIndicator.gd b/Scripts/MovementFrameIndicator.gd new file mode 100644 index 0000000..67590fe --- /dev/null +++ b/Scripts/MovementFrameIndicator.gd @@ -0,0 +1,6 @@ +extends Control + +@export var x_offset : int = 0 + +func _ready() -> void: + self.size.x += x_offset diff --git a/Scripts/MovementFrameIndicator.gd.uid b/Scripts/MovementFrameIndicator.gd.uid new file mode 100644 index 0000000..ce8fc88 --- /dev/null +++ b/Scripts/MovementFrameIndicator.gd.uid @@ -0,0 +1 @@ +uid://b4qincechbf63 diff --git a/Scripts/MovementRow.gd b/Scripts/MovementRow.gd new file mode 100644 index 0000000..b02c8c3 --- /dev/null +++ b/Scripts/MovementRow.gd @@ -0,0 +1,176 @@ +extends Panel + +@export var movement_bit : int = 0 +@export var movement_name : String = "Name" +@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/" +@export var base_scene_path : String +@export var current_stage : String +@export var animatronic : String +@export var movements : Array[bool] +@export var etching: bool = false +@export var forced_etchable: bool = false + +var in_flow : float = 1.0 +var out_flow : float = 1.0 + +var key_binding : InputEventKey = InputEventKey.new() +var current_index : int = 0 +var binding : bool = false +var held_on_previous_frame : bool = false +var playback_held_on_previous_frame : bool = false +var recording : bool = false +var playing : bool = true +var current_block_indicator + +signal movement_in(movement, rate) +signal movement_out(movement, rate) + +func set_at_current() -> void: + if (current_index > self.movements.size()-1): self.movements.append(true) + else: self.movements.set(current_index, true) + if (check_at_index(current_index-1)): current_block_indicator.get_node("ColorRect").size.x += 2 + else: + current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn").instantiate() + current_block_indicator.position.x = current_index * 2 + $MovementsBG/InvisibleMask/MovementsHandle.add_child(current_block_indicator) + +func unset_at_current() -> void: + if (current_index > self.movements.size()-1): self.movements.append(false) + else: self.movements.set(current_index, false) + if (!check_at_index(current_index-1)): current_block_indicator.get_node("ColorRect").size.x += 2 + else: + current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate() + current_block_indicator.position.x = current_index * 2 + $MovementsBG/InvisibleMask/MovementsHandle.add_child(current_block_indicator) + +func check_at_current() -> bool: + if (current_index > self.movements.size()-1): return false + var out = self.movements.get(current_index) + if (out == null): return false + return out + +func check_at_index(cindex: int) -> bool: + if (cindex > self.movements.size()-1): return false + if (cindex < 0): return false + var out = self.movements.get(cindex) + if (out == null): return false + return out + +func check_if_erasing() -> bool: + if (forced_etchable): return true + return (!$LockButton.button_pressed) && key_binding.keycode != 0 + +func _step(amount: int): + if (recording && check_if_erasing()): + if (etching): set_at_current() + else: unset_at_current() + if (playing): + if (check_at_current()): + if (!playback_held_on_previous_frame): + movement_in.emit(movement_name, in_flow) + playback_held_on_previous_frame = true; + else: + if (playback_held_on_previous_frame): + movement_out.emit(movement_name, out_flow) + playback_held_on_previous_frame = false; + current_index += amount + $MovementsBG/InvisibleMask/MovementsHandle.position.x += -2*amount + +func _return_to_zero(): + current_index = 0 + $MovementsBG/InvisibleMask/MovementsHandle.position.x = 120 + movement_out.emit(movement_name, out_flow) + +func _erase_all() -> void: + _return_to_zero() + _on_clear_button_pressed() + +func _start_recording(): + recording = true + +func _end_recording(): + recording = false + +func _start_playback(): + playing = true + +func _end_playback(): + playing = false + +func update_text() -> void: + if (animatronic == "None"): $Button.text = "%d - Unused (%s)" % [movement_bit, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"] + else: $Button.text = "%d - %s %s (%s)" % [movement_bit, animatronic, movement_name, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"] + +func _update_in_flow(new_value: float) -> void: + in_flow = new_value + +func _update_out_flow(new_value: float) -> void: + out_flow = new_value + +func _ready() -> void: + if (flow_path != "None"): + var flow_control = get_node(flow_path + str(movement_bit) + animatronic + movement_name + current_stage) + flow_control.in_value_updated.connect(self._update_in_flow) + flow_control.out_value_updated.connect(self._update_out_flow) + in_flow = flow_control.in_value + out_flow = flow_control.out_value + if (animatronic != "None"): + var animatronic_node = get_node(base_scene_path + animatronic) + movement_in.connect(animatronic_node._movement_in) + movement_out.connect(animatronic_node._movement_out) + movement_in.connect(self._movement_in) + movement_out.connect(self._movement_out) + var editor = get_node("../../../../../") + editor.step.connect(_step) + editor.start_recording.connect(_start_recording) + editor.end_recording.connect(_end_recording) + editor.return_to_zero.connect(_return_to_zero) + editor.erase_all.connect(_erase_all) + current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate() + update_text() + +func _process(_delta: float) -> void: + if (binding || key_binding.keycode == 0): return + if (Input.is_key_pressed(key_binding.keycode)): + if (!held_on_previous_frame): + movement_in.emit(movement_name, in_flow) + held_on_previous_frame = true; + else: + if (held_on_previous_frame): + movement_out.emit(movement_name, out_flow) + held_on_previous_frame = false; + +func _movement_in(_movement, _rate): + $ActiveBG.visible = true + if (recording): etching = true + +func _movement_out(_movement, _rate): + $ActiveBG.visible = false + etching = false + +func _on_button_pressed() -> void: + if (binding): + update_text() + binding = false + return + if (key_binding.keycode == 0): + $Button.text = "Press a key to bind." + binding = true + else: + key_binding.keycode = KEY_NONE + update_text() + +func _input(event: InputEvent) -> void: + if (event is InputEventKey && binding): + if (event.keycode != KEY_ESCAPE): + key_binding = event + binding = false + update_text() + return + +func _on_clear_button_pressed() -> void: + if ($LockButton.button_pressed): return + movements = [] + for indicator in $MovementsBG/InvisibleMask/MovementsHandle.get_children(): + indicator.queue_free() + current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate() diff --git a/Scripts/MovementRow.gd.uid b/Scripts/MovementRow.gd.uid new file mode 100644 index 0000000..14caf71 --- /dev/null +++ b/Scripts/MovementRow.gd.uid @@ -0,0 +1 @@ +uid://tn3aaldu7mm2 diff --git a/Stages.md b/Stages.md new file mode 100644 index 0000000..8acdca4 --- /dev/null +++ b/Stages.md @@ -0,0 +1,79 @@ +# Stages + +## Currently in game + + - Helen House (homemade stage) + - Chuck E's Corner (homemade stage) + +## In Development + + - Balcony Stage + - Prototype Road Stage + +## Planned + +### Cyberamics + + - Portrait Stage + - Shelf Stage (Portrait stage with Balcony mechs) + - C Stage + - Rocker Stage + - Road Stage + - 2-Stage + - 1-Stage + - Turntable 1-Stage + - Cyberamic 3-Stage + + +### 3-Stage + + - 3-Stage + - CU 1-Stage + - Hollywood 3-Stage + + +### Studio C + + - Studio C Alpha + - Studio C Alpha 3-Stage + - Studio C Jukebox/"Prototype" + - Studio C Beta (3 Screens) + - Studio C Beta (1 Screen) + - Studio C Cappa (Mirror Backdrop) + - Studio C Cappa (Spiral Backdrop) + - Studio C Cappa (Beta Backdrop) + - Star Stage + - Studio C Beta (2012 Update) + - Circles of Light + +### Other + + - Winchester Portrait Stage + - Kooser Portrait Stage + - Store specific variants (Lake Forest, Staten Island, Jeddah, Huntsville) + + +## Far future (unlikely without model contributions) + + - Rock-afire Explosion + - Mini Stage (RAE) + - Magic Stage (RAE) + - Hannah Banana Stage + - Playroom 3-Stage + - Winter 3-Stage + - Awesome Adventure Machine + - Concept Unification Prototype + - Guest Stars (Portrait/Balcony stages) + - Cabaret (Dolli Dimples, Artie Antlers, B.B. Bubbles, Dr. Quack) + - Lounge (The King, King Kat, Helen Henny, Beach Bowsers, The Beagles) + - Latex masks for 3-Stage + + +## Never + + - 2015 Dance Floor + - 2017 Dance Floor + - 2019 Dance Floor + - 2021 Dance Floor + Video Wall + - Dance Floor + Circles of Light + - Anything to do with The Mopsey Sisters diff --git a/UI/BlankCam.png b/UI/BlankCam.png index ee39acd..822a25f 100644 Binary files a/UI/BlankCam.png and b/UI/BlankCam.png differ diff --git a/UI/FastBackwards.png b/UI/FastBackwards.png new file mode 100644 index 0000000..9bfcd28 Binary files /dev/null and b/UI/FastBackwards.png differ diff --git a/UI/FastBackwards.png.import b/UI/FastBackwards.png.import new file mode 100644 index 0000000..a9eb6b8 --- /dev/null +++ b/UI/FastBackwards.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhx2v2fd0egxd" +path="res://.godot/imported/FastBackwards.png-f55ba91d8d237cb6919d5f2a056db594.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/FastBackwards.png" +dest_files=["res://.godot/imported/FastBackwards.png-f55ba91d8d237cb6919d5f2a056db594.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/FastForward.png b/UI/FastForward.png new file mode 100644 index 0000000..93f5dff Binary files /dev/null and b/UI/FastForward.png differ diff --git a/UI/FastForward.png.import b/UI/FastForward.png.import new file mode 100644 index 0000000..f24b413 --- /dev/null +++ b/UI/FastForward.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsr03w7r667fw" +path="res://.godot/imported/FastForward.png-acbfeb2710bea5385ca8ad13fa6699e8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/FastForward.png" +dest_files=["res://.godot/imported/FastForward.png-acbfeb2710bea5385ca8ad13fa6699e8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/Pause.png b/UI/Pause.png new file mode 100644 index 0000000..2892111 Binary files /dev/null and b/UI/Pause.png differ diff --git a/UI/Pause.png.import b/UI/Pause.png.import new file mode 100644 index 0000000..1d6d8e3 --- /dev/null +++ b/UI/Pause.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwhgy4u37jmo1" +path="res://.godot/imported/Pause.png-90c47ed988bd7d26b746eb81a6aaeedf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/Pause.png" +dest_files=["res://.godot/imported/Pause.png-90c47ed988bd7d26b746eb81a6aaeedf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/Play.png b/UI/Play.png new file mode 100644 index 0000000..378ce01 Binary files /dev/null and b/UI/Play.png differ diff --git a/icon.png.import b/UI/Play.png.import similarity index 70% rename from icon.png.import rename to UI/Play.png.import index 3064ba9..e17e752 100644 --- a/icon.png.import +++ b/UI/Play.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dhjuhhilgmxq3" -path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" +uid="uid://xllpr3qc064c" +path="res://.godot/imported/Play.png-eec0d54380d32c59b84e7db5fa226d5e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://icon.png" -dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] +source_file="res://UI/Play.png" +dest_files=["res://.godot/imported/Play.png-eec0d54380d32c59b84e7db5fa226d5e.ctex"] [params] diff --git a/UI/PlayBackwards.png b/UI/PlayBackwards.png new file mode 100644 index 0000000..37f25b2 Binary files /dev/null and b/UI/PlayBackwards.png differ diff --git a/UI/PlayBackwards.png.import b/UI/PlayBackwards.png.import new file mode 100644 index 0000000..2e32746 --- /dev/null +++ b/UI/PlayBackwards.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgacnkv2dc65s" +path="res://.godot/imported/PlayBackwards.png-52f3d5b871717feab369f20308dd695c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/PlayBackwards.png" +dest_files=["res://.godot/imported/PlayBackwards.png-52f3d5b871717feab369f20308dd695c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/PneumaticPlaything.icon/Assets/cylinder.svg b/UI/PneumaticPlaything.icon/Assets/cylinder.svg new file mode 100644 index 0000000..d6749de --- /dev/null +++ b/UI/PneumaticPlaything.icon/Assets/cylinder.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + diff --git a/UI/PneumaticPlaything.icon/Assets/cylinder.svg.import b/UI/PneumaticPlaything.icon/Assets/cylinder.svg.import new file mode 100644 index 0000000..5c56810 --- /dev/null +++ b/UI/PneumaticPlaything.icon/Assets/cylinder.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1eluxvmnj7l7" +path="res://.godot/imported/cylinder.svg-7c12310ad8fca6e1f959909a64d6d065.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/PneumaticPlaything.icon/Assets/cylinder.svg" +dest_files=["res://.godot/imported/cylinder.svg-7c12310ad8fca6e1f959909a64d6d065.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/UI/PneumaticPlaything.icon/Assets/green_lines.svg b/UI/PneumaticPlaything.icon/Assets/green_lines.svg new file mode 100644 index 0000000..ce9309e --- /dev/null +++ b/UI/PneumaticPlaything.icon/Assets/green_lines.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + diff --git a/UI/PneumaticPlaything.icon/Assets/green_lines.svg.import b/UI/PneumaticPlaything.icon/Assets/green_lines.svg.import new file mode 100644 index 0000000..6881607 --- /dev/null +++ b/UI/PneumaticPlaything.icon/Assets/green_lines.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkg2eh0tfbji4" +path="res://.godot/imported/green_lines.svg-af1cb631137e1105ee7be8775d8a5016.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/PneumaticPlaything.icon/Assets/green_lines.svg" +dest_files=["res://.godot/imported/green_lines.svg-af1cb631137e1105ee7be8775d8a5016.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/UI/PneumaticPlaything.icon/icon.json b/UI/PneumaticPlaything.icon/icon.json new file mode 100644 index 0000000..1b2358d --- /dev/null +++ b/UI/PneumaticPlaything.icon/icon.json @@ -0,0 +1,68 @@ +{ + "fill" : { + "automatic-gradient" : "srgb:0.12984,0.12985,0.12984,1.00000" + }, + "groups" : [ + { + "layers" : [ + { + "blend-mode" : "normal", + "fill" : { + "automatic-gradient" : "srgb:1.00000,1.00000,1.00000,1.00000" + }, + "glass" : true, + "image-name" : "cylinder.svg", + "name" : "cylinder", + "position" : { + "scale" : 3, + "translation-in-points" : [ + 0, + 0 + ] + } + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.5 + } + }, + { + "layers" : [ + { + "fill" : { + "automatic-gradient" : "srgb:0.00000,0.97680,0.00000,1.00000" + }, + "image-name" : "green_lines.svg", + "name" : "green_lines", + "opacity" : 1, + "position" : { + "scale" : 3.4, + "translation-in-points" : [ + 0, + 0 + ] + } + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.5 + } + } + ], + "supported-platforms" : { + "circles" : [ + "watchOS" + ], + "squares" : "shared" + } +} \ No newline at end of file diff --git a/UI/Record.png b/UI/Record.png new file mode 100644 index 0000000..4ffe48f Binary files /dev/null and b/UI/Record.png differ diff --git a/UI/Record.png.import b/UI/Record.png.import new file mode 100644 index 0000000..2d19281 --- /dev/null +++ b/UI/Record.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckg2ihy105ttj" +path="res://.godot/imported/Record.png-52d5a1455899304e32054af5c940c434.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/Record.png" +dest_files=["res://.godot/imported/Record.png-52d5a1455899304e32054af5c940c434.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/SkipBackwards.png b/UI/SkipBackwards.png new file mode 100644 index 0000000..f3e1d5a Binary files /dev/null and b/UI/SkipBackwards.png differ diff --git a/UI/SkipBackwards.png.import b/UI/SkipBackwards.png.import new file mode 100644 index 0000000..0e46ac4 --- /dev/null +++ b/UI/SkipBackwards.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dts4eh6hyt8p3" +path="res://.godot/imported/SkipBackwards.png-dfebc48054bc60d9671fc8d69c696237.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/SkipBackwards.png" +dest_files=["res://.godot/imported/SkipBackwards.png-dfebc48054bc60d9671fc8d69c696237.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/SkipForward.png b/UI/SkipForward.png new file mode 100644 index 0000000..29c5dec Binary files /dev/null and b/UI/SkipForward.png differ diff --git a/UI/SkipForward.png.import b/UI/SkipForward.png.import new file mode 100644 index 0000000..eef54cb --- /dev/null +++ b/UI/SkipForward.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bphwtliq2ahus" +path="res://.godot/imported/SkipForward.png-ca36b20fa5c982368f6b620245865f56.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/SkipForward.png" +dest_files=["res://.godot/imported/SkipForward.png-ca36b20fa5c982368f6b620245865f56.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/SmallLock.png b/UI/SmallLock.png new file mode 100644 index 0000000..b5bc9f0 Binary files /dev/null and b/UI/SmallLock.png differ diff --git a/UI/SmallLock.png.import b/UI/SmallLock.png.import new file mode 100644 index 0000000..ea363c7 --- /dev/null +++ b/UI/SmallLock.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d007317123e27" +path="res://.godot/imported/SmallLock.png-0c9e5ce04a7421f0922124b2fb1d8696.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/SmallLock.png" +dest_files=["res://.godot/imported/SmallLock.png-0c9e5ce04a7421f0922124b2fb1d8696.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/SmallX.png b/UI/SmallX.png new file mode 100644 index 0000000..157eba5 Binary files /dev/null and b/UI/SmallX.png differ diff --git a/UI/SmallX.png.import b/UI/SmallX.png.import new file mode 100644 index 0000000..7b9fa19 --- /dev/null +++ b/UI/SmallX.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cn5xdrxdv622h" +path="res://.godot/imported/SmallX.png-fca237bd1b13d37241a1ac9e982c446b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/SmallX.png" +dest_files=["res://.godot/imported/SmallX.png-fca237bd1b13d37241a1ac9e982c446b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/Stop.png b/UI/Stop.png new file mode 100644 index 0000000..a008b37 Binary files /dev/null and b/UI/Stop.png differ diff --git a/UI/Stop.png.import b/UI/Stop.png.import new file mode 100644 index 0000000..9659f7c --- /dev/null +++ b/UI/Stop.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cttgtbu1xllwq" +path="res://.godot/imported/Stop.png-28cf49bd72d354d073c38f19027d6ddb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/Stop.png" +dest_files=["res://.godot/imported/Stop.png-28cf49bd72d354d073c38f19027d6ddb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/Themes/Dark.tres b/UI/Themes/Dark.tres new file mode 100644 index 0000000..cb4f782 --- /dev/null +++ b/UI/Themes/Dark.tres @@ -0,0 +1,16 @@ +[gd_resource type="Theme" load_steps=2 format=3 uid="uid://dbgs4id7y5d1c"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6oevq"] +bg_color = Color(0.133333, 0.133333, 0.133333, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.0941176, 0.0941176, 0.0941176, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 + +[resource] +Panel/styles/panel = SubResource("StyleBoxFlat_6oevq") diff --git a/UI/Themes/MovementsPanelOverride.tres b/UI/Themes/MovementsPanelOverride.tres new file mode 100644 index 0000000..3055b66 --- /dev/null +++ b/UI/Themes/MovementsPanelOverride.tres @@ -0,0 +1,6 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://d17amc25o63p1"] + +[resource] +bg_color = Color(0.0941176, 0.0941176, 0.0941176, 1) +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 diff --git a/UI/icon-32px.png b/UI/icon-32px.png new file mode 100644 index 0000000..16574f1 Binary files /dev/null and b/UI/icon-32px.png differ diff --git a/UI/icon-32px.png.import b/UI/icon-32px.png.import new file mode 100644 index 0000000..6250137 --- /dev/null +++ b/UI/icon-32px.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpb3xn54kpxoe" +path="res://.godot/imported/icon-32px.png-601da436f7467fcd6c395054742650f3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/icon-32px.png" +dest_files=["res://.godot/imported/icon-32px.png-601da436f7467fcd6c395054742650f3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/icon-round.png b/UI/icon-round.png new file mode 100644 index 0000000..fdbbf6c Binary files /dev/null and b/UI/icon-round.png differ diff --git a/UI/icon-round.png.import b/UI/icon-round.png.import new file mode 100644 index 0000000..5f55748 --- /dev/null +++ b/UI/icon-round.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yqg6bh2fiumf" +path="res://.godot/imported/icon-round.png-d13b0f9c2aed0f892b01044430866017.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/icon-round.png" +dest_files=["res://.godot/imported/icon-round.png-d13b0f9c2aed0f892b01044430866017.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/icon.icns b/UI/icon.icns new file mode 100644 index 0000000..cf6eb7e Binary files /dev/null and b/UI/icon.icns differ diff --git a/UI/icon.ico b/UI/icon.ico new file mode 100644 index 0000000..59409c5 Binary files /dev/null and b/UI/icon.ico differ diff --git a/UI/icon.png b/UI/icon.png new file mode 100644 index 0000000..fc311ca Binary files /dev/null and b/UI/icon.png differ diff --git a/UI/icon.png.import b/UI/icon.png.import new file mode 100644 index 0000000..10cbd4d --- /dev/null +++ b/UI/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnvfrr028730a" +path="res://.godot/imported/icon.png-d44ad423496976af115f803f6386bc82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/icon.png" +dest_files=["res://.godot/imported/icon.png-d44ad423496976af115f803f6386bc82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/icon.png b/icon.png deleted file mode 100644 index bf8c711..0000000 Binary files a/icon.png and /dev/null differ diff --git a/project.godot b/project.godot index 1572dca..4b8bb8c 100644 --- a/project.godot +++ b/project.godot @@ -11,27 +11,392 @@ config_version=5 [application] config/name="Pneumatic Plaything" -config/version="v0.1" +config/version="v0.6" run/main_scene="uid://oiehbor0dlqx" config/features=PackedStringArray("4.4", "GL Compatibility") boot_splash/show_image=false -config/icon="uid://dhjuhhilgmxq3" +config/icon="uid://cnvfrr028730a" +config/macos_native_icon="res://UI/icon.icns" +config/windows_native_icon="res://UI/icon.ico" [display] window/size/viewport_width=1280 window/size/viewport_height=720 +[filesystem] + +import/blender/enabled=false + [input] +ui_accept={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +ui_select={ +"deadzone": 0.5, +"events": [] +} +ui_cancel={ +"deadzone": 0.5, +"events": [] +} +ui_focus_next={ +"deadzone": 0.5, +"events": [] +} +ui_focus_prev={ +"deadzone": 0.5, +"events": [] +} +ui_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +] +} +ui_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +] +} +ui_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +] +} +ui_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +] +} +ui_page_up={ +"deadzone": 0.5, +"events": [] +} +ui_page_down={ +"deadzone": 0.5, +"events": [] +} +ui_home={ +"deadzone": 0.5, +"events": [] +} +ui_end={ +"deadzone": 0.5, +"events": [] +} +ui_cut={ +"deadzone": 0.5, +"events": [] +} +ui_copy={ +"deadzone": 0.5, +"events": [] +} +ui_paste={ +"deadzone": 0.5, +"events": [] +} +ui_undo={ +"deadzone": 0.5, +"events": [] +} +ui_redo={ +"deadzone": 0.5, +"events": [] +} +ui_text_completion_query={ +"deadzone": 0.5, +"events": [] +} +ui_text_completion_accept={ +"deadzone": 0.5, +"events": [] +} +ui_text_completion_replace={ +"deadzone": 0.5, +"events": [] +} +ui_text_newline={ +"deadzone": 0.5, +"events": [] +} +ui_text_newline_blank={ +"deadzone": 0.5, +"events": [] +} +ui_text_newline_above={ +"deadzone": 0.5, +"events": [] +} +ui_text_indent={ +"deadzone": 0.5, +"events": [] +} +ui_text_dedent={ +"deadzone": 0.5, +"events": [] +} +ui_text_backspace_word={ +"deadzone": 0.5, +"events": [] +} +ui_text_backspace_word.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_backspace_all_to_left.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_delete_word={ +"deadzone": 0.5, +"events": [] +} +ui_text_delete_word.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_delete_all_to_right.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_left={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_left={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_left.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_right={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_right={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_right.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_up={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_down={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_line_start={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_line_start.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_line_end={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_line_end.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_page_up={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_page_down={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_start={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_start.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_end={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_end.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_below={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_below.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_above={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_above.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_scroll_up={ +"deadzone": 0.5, +"events": [] +} +ui_text_scroll_up.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_scroll_down={ +"deadzone": 0.5, +"events": [] +} +ui_text_scroll_down.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_select_all={ +"deadzone": 0.5, +"events": [] +} +ui_text_select_word_under_caret={ +"deadzone": 0.5, +"events": [] +} +ui_text_select_word_under_caret.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_add_selection_for_next_occurrence={ +"deadzone": 0.5, +"events": [] +} +ui_text_skip_selection_for_next_occurrence={ +"deadzone": 0.5, +"events": [] +} +ui_text_clear_carets_and_selection={ +"deadzone": 0.5, +"events": [] +} +ui_text_toggle_insert_mode={ +"deadzone": 0.5, +"events": [] +} +ui_menu={ +"deadzone": 0.5, +"events": [] +} +ui_unicode_start={ +"deadzone": 0.5, +"events": [] +} +ui_graph_duplicate={ +"deadzone": 0.5, +"events": [] +} +ui_graph_delete={ +"deadzone": 0.5, +"events": [] +} +ui_filedialog_up_one_level={ +"deadzone": 0.5, +"events": [] +} +ui_filedialog_refresh={ +"deadzone": 0.5, +"events": [] +} +ui_filedialog_show_hidden={ +"deadzone": 0.5, +"events": [] +} +ui_swap_input_direction={ +"deadzone": 0.5, +"events": [] +} toggle_editor_screen={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null) ] } +sequencer_play_pause={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) +] +} +sequencer_play_reverse={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null) +] +} +sequencer_fast_forward={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +sequencer_fast_reverse={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +sequencer_step_forward={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null) +] +} +sequencer_step_backward={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null) +] +} +cycle_camera_angle={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":false,"script":null) +] +} +sequencer_home={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194317,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +] +} +fullscreen={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194342,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":true,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [rendering] renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" +textures/vram_compression/import_etc2_astc=true +limits/opengl/max_renderable_lights=128 +limits/opengl/max_lights_per_object=128