diff --git a/Models/3-Stage/3stHelen.glb b/Models/3-Stage/3stHelen.glb index a3e3958..a2bdb2f 100644 Binary files a/Models/3-Stage/3stHelen.glb and b/Models/3-Stage/3stHelen.glb 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/Balcony/BalconyStage.glb.import b/Models/Balcony/BalconyStage.glb.import new file mode 100644 index 0000000..a005e55 --- /dev/null +++ b/Models/Balcony/BalconyStage.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c6n4otfble154" +path="res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.scn" + +[deps] + +source_file="res://Models/Balcony/BalconyStage.glb" +dest_files=["res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.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/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/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/Cyberamics/Cyber Helen.glb.import b/Models/Cyberamics/Cyber Helen.glb.import new file mode 100644 index 0000000..0bec33a --- /dev/null +++ b/Models/Cyberamics/Cyber Helen.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://d34xfaignny8j" +path="res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.scn" + +[deps] + +source_file="res://Models/Cyberamics/Cyber Helen.glb" +dest_files=["res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.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 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/Scenes/GUI/EditorScreen.tscn b/Scenes/GUI/EditorScreen.tscn index 9b1788a..3d97c93 100644 --- a/Scenes/GUI/EditorScreen.tscn +++ b/Scenes/GUI/EditorScreen.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=26 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="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"] @@ -131,33 +132,6 @@ grow_horizontal = 2 grow_vertical = 2 color = Color(0.187176, 0.187176, 0.187176, 1) -[node name="CameraPlaceholder" type="TextureRect" parent="."] -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 -offset_bottom = 408.0 -grow_horizontal = 0 -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="Label" type="Label" parent="."] layout_mode = 1 anchors_preset = -1 @@ -179,6 +153,35 @@ 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 @@ -196,11 +199,13 @@ offset_top = 4.0 offset_right = 260.0 offset_bottom = 36.0 selected = 0 -item_count = 2 -popup/item_0/text = "Helen House" +item_count = 3 +popup/item_0/text = "Balcony Stage" popup/item_0/id = 0 -popup/item_1/text = "Chuck E's Corner" +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 @@ -241,13 +246,13 @@ anchor_left = 1.0 anchor_top = 0.5 anchor_right = 1.0 anchor_bottom = 0.5 -offset_left = -232.0 +offset_left = -264.0 offset_top = -16.0 -offset_right = -8.0 +offset_right = -40.0 offset_bottom = 16.0 grow_horizontal = 0 grow_vertical = 2 -text = "Pneumatic Plaything v0.5" +text = "Pneumatic Plaything v0.6" horizontal_alignment = 2 vertical_alignment = 1 @@ -260,6 +265,18 @@ 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 @@ -719,6 +736,7 @@ 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." 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 index 522597a..9f1dbf9 100644 --- a/Scenes/Stages/ChuckEsCorner.tscn +++ b/Scenes/Stages/ChuckEsCorner.tscn @@ -71,12 +71,12 @@ spot_angle_attenuation = 0.15 script = ExtResource("4_8suoo") [node name="Chuck" type="SpotLight3D" parent="Color 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) +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 = 30.5982 +spot_angle = 33.4444 spot_angle_attenuation = 0.1 [node name="Angle 1" type="Camera3D" parent="."] diff --git a/Scripts/EditorScreen.gd b/Scripts/EditorScreen.gd index 1b58821..f34bf79 100644 --- a/Scripts/EditorScreen.gd +++ b/Scripts/EditorScreen.gd @@ -104,11 +104,11 @@ var stages_info = { 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" }, - 56: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" }, - 71: { "bot": "Floods", "movement": "Red", "flow_in": "None", "flow_out": "None" }, - 72: { "bot": "Floods", "movement": "Green", "flow_in": "None", "flow_out": "None" }, - 73: { "bot": "Floods", "movement": "Blue", "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": @@ -225,6 +225,255 @@ var stages_info = { }, } } + }, + "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, + }, + }, + } } } @@ -234,24 +483,24 @@ signal end_recording() signal return_to_zero() signal erase_all() -func reload_stage(stage_previously_loaded: bool) -> void: - if (stage_previously_loaded): - $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() +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 + cam_index = 0 var stage = load(stages_info[current_stage]["scene"]).instantiate() $SubViewport.add_child(stage) @@ -290,7 +539,8 @@ func reload_stage(stage_previously_loaded: bool) -> void: 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 = bot + " " + movement + 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) @@ -302,6 +552,7 @@ func reload_stage(stage_previously_loaded: bool) -> void: 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 @@ -311,6 +562,8 @@ func reload_stage(stage_previously_loaded: bool) -> void: 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) @@ -323,7 +576,7 @@ func reload_stage(stage_previously_loaded: bool) -> void: func _on_stage_change_overwrite_confirmation_dialog_confirmed() -> void: erase_all.emit() current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected) - reload_stage(true) + reload_stage() func update_time_label() -> void: var frames = index % 60 @@ -350,13 +603,13 @@ func _ready() -> void: $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(false) + 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(true) + reload_stage() func _showtape_menu_button_pressed(id: int) -> void: match (id): @@ -621,6 +874,9 @@ func _on_step_forward_button_pressed() -> void: update_time_label() 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() @@ -639,36 +895,19 @@ func save_data() -> String: var temp_data = {} var longest_channel = 0 for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children(): - temp_data[int(movement_row.name.split(" ")[0])] = movement_row.movements + 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 frame_long_1 = 0 - var frame_long_2 = 0 - var frame_long_3 = 0 - var frame_long_4 = 0 - var frame_long_5 = 0 - var frame_long_6 = 0 - var frame_long_7 = 0 - var frame_long_8 = 0 - for j in temp_data: - if (index_get_safe(i, temp_data[j])): - if (j <= 32): - frame_long_1 += 1 << (j&64)-1 - elif (j <= 64): - frame_long_2 += 1 << (j&64)-1 - elif (j <= 96): - frame_long_3 += 1 << (j&64)-1 - elif (j <= 128): - frame_long_4 += 1 << (j&64)-1 - elif (j <= 160): - frame_long_5 += 1 << (j&64)-1 - elif (j <= 192): - frame_long_6 += 1 << (j&64)-1 - elif (j <= 224): - frame_long_7 += 1 << (j&64)-1 - elif (j <= 256): - frame_long_8 += 1 << (j&64)-1 - write_out += (("%08X%08X%08X%08X%08X%08X%08X%08X,") % [frame_long_8, frame_long_7, frame_long_6, frame_long_5, frame_long_4, frame_long_3, frame_long_2, frame_long_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 plot_data(data: String): @@ -678,39 +917,17 @@ func plot_data(data: String): evil_glass.append(movement_row.movement_bit) for frame_string in data.split(","): if (frame_string == ""): continue - var frame_long_8 = frame_string.substr(0, 8).hex_to_int() - var frame_long_7 = frame_string.substr(8, 8).hex_to_int() - var frame_long_6 = frame_string.substr(16, 8).hex_to_int() - var frame_long_5 = frame_string.substr(24, 8).hex_to_int() - var frame_long_4 = frame_string.substr(32, 8).hex_to_int() - var frame_long_3 = frame_string.substr(40, 8).hex_to_int() - var frame_long_2 = frame_string.substr(48, 8).hex_to_int() - var frame_long_1 = frame_string.substr(56, 8).hex_to_int() + var check_frame_split = frame_string.split() + check_frame_split.reverse() for i in stages_info[current_stage]["bit_mapping"]: var er = false - var check_i = (i % 32) - 1 - var check_frame_segment = frame_long_1 - if (i <= 32): - check_frame_segment = frame_long_1 - elif (i <= 64): - check_frame_segment = frame_long_2 - elif (i <= 96): - check_frame_segment = frame_long_3 - elif (i <= 128): - check_frame_segment = frame_long_4 - elif (i <= 160): - check_frame_segment = frame_long_5 - elif (i <= 192): - check_frame_segment = frame_long_6 - elif (i <= 224): - check_frame_segment = frame_long_7 - elif (i <= 256): - check_frame_segment = frame_long_8 - if ((check_frame_segment & int(pow(2, check_i))) >> check_i == 1): - er = true + 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() @@ -721,3 +938,10 @@ func index_get_safe(cindex: int, data: Array[bool]) -> bool: var out = data.get(cindex) if (out == null): return false return out + +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 index a4c6fc7..66de06e 100644 --- a/Scripts/FlowControl.gd +++ b/Scripts/FlowControl.gd @@ -2,12 +2,13 @@ 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.name + $Panel/Label.text = self.vis_name $Panel/InStepper.value = self.in_value $Panel/OutStepper.value = self.out_value diff --git a/Scripts/MovementButton.gd b/Scripts/MovementButton.gd index 31bd90b..2e7e1c5 100644 --- a/Scripts/MovementButton.gd +++ b/Scripts/MovementButton.gd @@ -4,6 +4,8 @@ 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 @@ -18,7 +20,7 @@ func _ready() -> void: 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 + animatronic + " " + movement_name) + 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 diff --git a/Scripts/MovementRow.gd b/Scripts/MovementRow.gd index 60851b0..b02c8c3 100644 --- a/Scripts/MovementRow.gd +++ b/Scripts/MovementRow.gd @@ -4,9 +4,11 @@ extends Panel @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 @@ -54,8 +56,12 @@ func check_at_index(cindex: int) -> bool: 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 && !$LockButton.button_pressed): + if (recording && check_if_erasing()): if (etching): set_at_current() else: unset_at_current() if (playing): @@ -103,7 +109,7 @@ func _update_out_flow(new_value: float) -> void: func _ready() -> void: if (flow_path != "None"): - var flow_control = get_node(flow_path + animatronic + " " + movement_name) + 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 @@ -162,8 +168,8 @@ func _input(event: InputEvent) -> void: 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() diff --git a/Stages.md b/Stages.md index 12731bd..8acdca4 100644 --- a/Stages.md +++ b/Stages.md @@ -2,7 +2,13 @@ ## Currently in game - - Helen House (not a real stage) + - Helen House (homemade stage) + - Chuck E's Corner (homemade stage) + +## In Development + + - Balcony Stage + - Prototype Road Stage ## Planned @@ -10,7 +16,6 @@ - Portrait Stage - Shelf Stage (Portrait stage with Balcony mechs) - - Balcony Stage - C Stage - Rocker Stage - Road Stage 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/icon.svg.import b/UI/PneumaticPlaything.icon/Assets/cylinder.svg.import similarity index 70% rename from UI/icon.svg.import rename to UI/PneumaticPlaything.icon/Assets/cylinder.svg.import index 6fc4cc8..5c56810 100644 --- a/UI/icon.svg.import +++ b/UI/PneumaticPlaything.icon/Assets/cylinder.svg.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bm61nhm3rs043" -path="res://.godot/imported/icon.svg-c9c2a32fd2d5f8bc98ecd887f02eeda7.ctex" +uid="uid://1eluxvmnj7l7" +path="res://.godot/imported/cylinder.svg-7c12310ad8fca6e1f959909a64d6d065.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://UI/icon.svg" -dest_files=["res://.godot/imported/icon.svg-c9c2a32fd2d5f8bc98ecd887f02eeda7.ctex"] +source_file="res://UI/PneumaticPlaything.icon/Assets/cylinder.svg" +dest_files=["res://.godot/imported/cylinder.svg-7c12310ad8fca6e1f959909a64d6d065.ctex"] [params] 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/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 index 9886d6f..fc311ca 100644 Binary files a/UI/icon.png and b/UI/icon.png differ diff --git a/UI/icon.png.import b/UI/icon.png.import index 1fbd3b0..10cbd4d 100644 --- a/UI/icon.png.import +++ b/UI/icon.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dkbo8r6il5rh7" +uid="uid://cnvfrr028730a" path="res://.godot/imported/icon.png-d44ad423496976af115f803f6386bc82.ctex" metadata={ "vram_texture": false diff --git a/UI/icon.svg b/UI/icon.svg deleted file mode 100644 index 684d422..0000000 --- a/UI/icon.svg +++ /dev/null @@ -1,336 +0,0 @@ - - - - diff --git a/project.godot b/project.godot index b79e99f..4b8bb8c 100644 --- a/project.godot +++ b/project.godot @@ -11,17 +11,23 @@ config_version=5 [application] config/name="Pneumatic Plaything" -config/version="v0.5" +config/version="v0.6" run/main_scene="uid://oiehbor0dlqx" config/features=PackedStringArray("4.4", "GL Compatibility") boot_splash/show_image=false -config/icon="uid://bm61nhm3rs043" +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={ @@ -392,3 +398,5 @@ fullscreen={ 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