Compare commits

..

46 commits
v0.2 ... main

Author SHA1 Message Date
ca6aa59cb5 Delete Cyber Jasper.blend 2025-06-23 19:21:11 -07:00
55154d1f4f finish jasper model 2025-06-23 19:20:12 -07:00
82204a993e ONCE AND FOR ALL FIX THE SAVING ISSUES 2025-06-23 09:37:37 -07:00
6f4591e96f Merge branch 'main' of https://git.kawaiizenbo.me/kawaiizenbo/PneumaticPlaything 2025-06-22 22:34:12 -07:00
9c73066806 balcony stage model, lighting, and load fixes 2025-06-22 22:34:10 -07:00
Persephone Bubblegum-Holiday
91a348dffd Update Stages.md 2025-06-20 13:41:43 -07:00
Persephone Bubblegum-Holiday
baf25e727b update stage list 2025-06-20 13:35:44 -07:00
c1c9652f4a jasper and helen balcony edition 2025-06-20 09:54:05 -07:00
2684825d87 fix small ui bugs and update icon and version string 2025-06-12 11:20:28 -07:00
be6950184a test 2025-06-11 18:49:42 -07:00
121fc1a005 last v0.5.1 patches 2025-06-09 13:54:06 -07:00
4343279e4c pause and then start playing again if record button is pressed while playing 2025-06-09 12:05:09 -07:00
b79938cd96 unlock movement row when erasing all 2025-06-09 11:56:40 -07:00
ea15a4fef5 last things 2025-06-08 20:06:14 -07:00
c825d8695d add last few lights 2025-06-08 19:57:02 -07:00
89ef861563 Update ChuckEsCorner.tscn 2025-06-08 17:34:23 -07:00
d0bdd422fb oops 2025-06-08 17:34:04 -07:00
171031ea95 Update ChuckEsCorner.tscn 2025-06-08 17:32:11 -07:00
dba0d65b25 light controllers 2025-06-08 17:30:00 -07:00
3ee2cffa37 real stupid bitch hours 2025-06-08 13:36:16 -07:00
7c42de8882 Update EditorScreen.tscn 2025-06-07 22:48:45 -07:00
dfae037276 cosmetic system is working 2025-06-07 22:47:51 -07:00
e2c4591a21 Update EditorScreen.gd 2025-06-07 17:10:27 -07:00
3bb939dfb1 fix when the numbers are too big 2025-06-07 16:56:50 -07:00
f9d1af7def fix helen model and fix several bugs 2025-06-07 16:04:03 -07:00
09902415ed bit mapping and finish cec corner 2025-06-01 20:32:53 -07:00
1008ce2e20 yellow indicator when locked 2025-05-31 18:32:14 -07:00
c94ec3396a fix saving bug and change scale of chuck e corner models 2025-05-31 15:45:45 -07:00
5ef7b90c1e warbies and stage stuff 2025-05-30 19:01:07 -07:00
1a3e5494f4 chuck e! 2025-05-29 20:49:26 -07:00
b0dc8309bd add confirmation when switching stages if showtape is loaded 2025-05-28 15:11:19 -07:00
afa270d814 clean up some junk files 2025-05-28 15:03:08 -07:00
817c36a5df fullscreen and fix previously loaded stage bug 2025-05-28 15:00:26 -07:00
297b5e53b6 modular everything 2025-05-28 14:49:59 -07:00
e4bb42cf6a gaslighting 2025-05-26 10:44:06 -07:00
1fd22d3ef8 fix android permissions 2025-05-26 09:29:37 -07:00
cfba845a76 compression notice 2025-05-26 07:26:38 -07:00
5c78058a9f only check for inputs if bound, increases efficiency 2025-05-26 07:23:50 -07:00
5fb1280e3e fix small 2025-05-25 22:34:43 -07:00
9544a47ee4 save and new and load 2025-05-25 22:34:19 -07:00
65ac1d73f3 audio sync working 2025-05-25 10:59:50 -07:00
cc0da859d8 fix yet another bug 2025-05-25 09:18:43 -07:00
d4a46928e3 fix keyboard issues 2025-05-25 09:15:53 -07:00
aa639d4bad change how recording works 2025-05-25 09:12:48 -07:00
af364d0faa startings of 0.3 and row clearing 2025-05-25 09:05:31 -07:00
8ee16d7d26 Update README.md 2025-05-24 22:38:36 -07:00
131 changed files with 4250 additions and 2124 deletions

BIN
Models/3-Stage/3stHelen.glb Normal file

Binary file not shown.

View file

@ -4,12 +4,12 @@ importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://f0fkcs7erhop" uid="uid://f0fkcs7erhop"
path="res://.godot/imported/3stHelen.glb-c3541fdb7863c3136dcc986fabbb06be.scn" path="res://.godot/imported/3stHelen.glb-09c973ef19734a7d77b0f363ef6fade1.scn"
[deps] [deps]
source_file="res://Models/3stHelen.glb" source_file="res://Models/3-Stage/3stHelen.glb"
dest_files=["res://.godot/imported/3stHelen.glb-c3541fdb7863c3136dcc986fabbb06be.scn"] dest_files=["res://.godot/imported/3stHelen.glb-09c973ef19734a7d77b0f363ef6fade1.scn"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 178 B

After

Width:  |  Height:  |  Size: 178 B

Before After
Before After

View file

@ -3,8 +3,8 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bprmuf7jpffy3" 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-da72f62ca7ac7e5bf5593b4d1be3a7ee.etc2.ctex" path.etc2="res://.godot/imported/3stHelen_beak.png-093e64b7512180691d5a4d9b4796c163.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
@ -15,8 +15,8 @@ generator_parameters={
[deps] [deps]
source_file="res://Models/3stHelen_beak.png" source_file="res://Models/3-Stage/3stHelen_beak.png"
dest_files=["res://.godot/imported/3stHelen_beak.png-da72f62ca7ac7e5bf5593b4d1be3a7ee.s3tc.ctex", "res://.godot/imported/3stHelen_beak.png-da72f62ca7ac7e5bf5593b4d1be3a7ee.etc2.ctex"] dest_files=["res://.godot/imported/3stHelen_beak.png-093e64b7512180691d5a4d9b4796c163.s3tc.ctex", "res://.godot/imported/3stHelen_beak.png-093e64b7512180691d5a4d9b4796c163.etc2.ctex"]
[params] [params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 B

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -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

View file

Before

Width:  |  Height:  |  Size: 180 B

After

Width:  |  Height:  |  Size: 180 B

Before After
Before After

View file

@ -3,8 +3,8 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cm8h5o5urcvym" 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-97c060c3fc3442bff6f75c94bc90506a.etc2.ctex" path.etc2="res://.godot/imported/3stHelen_shoes.png-61154e88a8b3c30e2bfb4db457818ce0.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
@ -15,8 +15,8 @@ generator_parameters={
[deps] [deps]
source_file="res://Models/3stHelen_shoes.png" source_file="res://Models/3-Stage/3stHelen_shoes.png"
dest_files=["res://.godot/imported/3stHelen_shoes.png-97c060c3fc3442bff6f75c94bc90506a.s3tc.ctex", "res://.godot/imported/3stHelen_shoes.png-97c060c3fc3442bff6f75c94bc90506a.etc2.ctex"] dest_files=["res://.godot/imported/3stHelen_shoes.png-61154e88a8b3c30e2bfb4db457818ce0.s3tc.ctex", "res://.godot/imported/3stHelen_shoes.png-61154e88a8b3c30e2bfb4db457818ce0.etc2.ctex"]
[params] [params]

Binary file not shown.

Binary file not shown.

View file

@ -3,13 +3,13 @@
importer="scene" importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://5i7srffes8ut" uid="uid://c6n4otfble154"
path="res://.godot/imported/Helen.fbx-a3dcdd674756aa7b6860353ece3f39df.scn" path="res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.scn"
[deps] [deps]
source_file="res://3-Stage/Models/Helen.fbx" source_file="res://Models/Balcony/BalconyStage.glb"
dest_files=["res://.godot/imported/Helen.fbx-a3dcdd674756aa7b6860353ece3f39df.scn"] dest_files=["res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.scn"]
[params] [params]
@ -28,11 +28,10 @@ meshes/force_disable_compression=false
skins/use_named_skins=true skins/use_named_skins=true
animation/import=true animation/import=true
animation/fps=30 animation/fps=30
animation/trimming=true animation/trimming=false
animation/remove_immutable_tracks=true animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false animation/import_rest_as_RESET=false
import_script/path="" import_script/path=""
_subresources={} _subresources={}
fbx/importer=0 gltf/naming_version=1
fbx/allow_geometry_helper_nodes=false gltf/embedded_image_handling=1
fbx/embedded_image_handling=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

View file

@ -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

Binary file not shown.

View file

@ -3,13 +3,13 @@
importer="scene" importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://cs0va7jp6fjfa" uid="uid://bv66hlbvtekho"
path="res://.godot/imported/Chuck.fbx-e0f76e66bd2d66a68bf43edbd8d1d948.scn" path="res://.godot/imported/ChuckEsCornerStage.glb-972590d495adda7be8c93e6d0989aa24.scn"
[deps] [deps]
source_file="res://3-Stage/Models/Chuck.fbx" source_file="res://Models/ChuckEsCorner/ChuckEsCornerStage.glb"
dest_files=["res://.godot/imported/Chuck.fbx-e0f76e66bd2d66a68bf43edbd8d1d948.scn"] dest_files=["res://.godot/imported/ChuckEsCornerStage.glb-972590d495adda7be8c93e6d0989aa24.scn"]
[params] [params]
@ -28,11 +28,10 @@ meshes/force_disable_compression=false
skins/use_named_skins=true skins/use_named_skins=true
animation/import=true animation/import=true
animation/fps=30 animation/fps=30
animation/trimming=true animation/trimming=false
animation/remove_immutable_tracks=true animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false animation/import_rest_as_RESET=false
import_script/path="" import_script/path=""
_subresources={} _subresources={}
fbx/importer=0 gltf/naming_version=1
fbx/allow_geometry_helper_nodes=false gltf/embedded_image_handling=1
fbx/embedded_image_handling=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View file

@ -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

Binary file not shown.

Binary file not shown.

View file

@ -3,13 +3,13 @@
importer="scene" importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://y5jsfwdmgwkq" uid="uid://d34xfaignny8j"
path="res://.godot/imported/Munch.fbx-5aedcf1ca9583a75c301f71dc6519957.scn" path="res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.scn"
[deps] [deps]
source_file="res://3-Stage/Models/Munch.fbx" source_file="res://Models/Cyberamics/Cyber Helen.glb"
dest_files=["res://.godot/imported/Munch.fbx-5aedcf1ca9583a75c301f71dc6519957.scn"] dest_files=["res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.scn"]
[params] [params]
@ -28,11 +28,10 @@ meshes/force_disable_compression=false
skins/use_named_skins=true skins/use_named_skins=true
animation/import=true animation/import=true
animation/fps=30 animation/fps=30
animation/trimming=true animation/trimming=false
animation/remove_immutable_tracks=true animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false animation/import_rest_as_RESET=false
import_script/path="" import_script/path=""
_subresources={} _subresources={}
fbx/importer=0 gltf/naming_version=1
fbx/allow_geometry_helper_nodes=false gltf/embedded_image_handling=1
fbx/embedded_image_handling=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

View file

@ -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

Binary file not shown.

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -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

Binary file not shown.

View file

@ -3,13 +3,13 @@
importer="scene" importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://b4xrsr1w4t017" uid="uid://c2j62syov3skq"
path="res://.godot/imported/Jasper.fbx-172cc49326619adb06baca5b9e28470b.scn" path="res://.godot/imported/Cyberamic Chuck.glb-7640bcf570eaf553eddfec5de3e96502.scn"
[deps] [deps]
source_file="res://3-Stage/Models/Jasper.fbx" source_file="res://Models/Cyberamics/Cyberamic Chuck.glb"
dest_files=["res://.godot/imported/Jasper.fbx-172cc49326619adb06baca5b9e28470b.scn"] dest_files=["res://.godot/imported/Cyberamic Chuck.glb-7640bcf570eaf553eddfec5de3e96502.scn"]
[params] [params]
@ -28,11 +28,10 @@ meshes/force_disable_compression=false
skins/use_named_skins=true skins/use_named_skins=true
animation/import=true animation/import=true
animation/fps=30 animation/fps=30
animation/trimming=true animation/trimming=false
animation/remove_immutable_tracks=true animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false animation/import_rest_as_RESET=false
import_script/path="" import_script/path=""
_subresources={} _subresources={}
fbx/importer=0 gltf/naming_version=1
fbx/allow_geometry_helper_nodes=false gltf/embedded_image_handling=1
fbx/embedded_image_handling=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

View file

@ -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

Binary file not shown.

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View file

@ -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

View file

@ -4,12 +4,12 @@ importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://bhoeqcsdb0fx2" uid="uid://bhoeqcsdb0fx2"
path="res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.scn" path="res://.godot/imported/HelenHouse-Room.glb-d039721f5e781fffec7d16cd58395499.scn"
[deps] [deps]
source_file="res://Models/Room.glb" source_file="res://Models/HelenHouse/HelenHouse-Room.glb"
dest_files=["res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.scn"] dest_files=["res://.godot/imported/HelenHouse-Room.glb-d039721f5e781fffec7d16cd58395499.scn"]
[params] [params]

View file

@ -4,12 +4,12 @@ importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://btvomf1ayoypu" uid="uid://btvomf1ayoypu"
path="res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.scn" path="res://.godot/imported/HelenHouse-Stage.glb-3682deea9f5a1b3381bc9010b144dd14.scn"
[deps] [deps]
source_file="res://Models/Stage.glb" source_file="res://Models/HelenHouse/HelenHouse-Stage.glb"
dest_files=["res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.scn"] dest_files=["res://.godot/imported/HelenHouse-Stage.glb-3682deea9f5a1b3381bc9010b144dd14.scn"]
[params] [params]

View file

@ -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

View file

@ -1,3 +1,6 @@
# PneumaticPlaything # PneumaticPlaything
animatronic simulator 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.

View file

@ -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"]

View file

@ -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"]

View file

@ -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"]

View file

@ -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"]

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://cbf3x44mvo701"] [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"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1pi70"]
bg_color = Color(0, 0, 0, 1) bg_color = Color(0, 0, 0, 1)
@ -16,23 +16,26 @@ corner_radius_top_right = 12
corner_radius_bottom_right = 12 corner_radius_bottom_right = 12
corner_radius_bottom_left = 12 corner_radius_bottom_left = 12
[node name="IndicatorLight" type="Control"] [node name="MovementButton" type="Control"]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 0
anchor_right = 1.0 offset_right = 256.0
anchor_bottom = 1.0 offset_bottom = 40.0
offset_right = -1280.0
offset_bottom = -720.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_l718a") script = ExtResource("1_l718a")
[node name="Container" type="Panel" parent="."] [node name="Panel" type="Panel" parent="."]
layout_mode = 0 layout_mode = 0
offset_right = 32.0 offset_right = 256.0
offset_bottom = 32.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 layout_mode = 0
offset_left = 4.0 offset_left = 4.0
offset_top = 4.0 offset_top = 4.0
@ -40,10 +43,22 @@ offset_right = 28.0
offset_bottom = 28.0 offset_bottom = 28.0
theme_override_styles/panel = SubResource("StyleBoxFlat_1pi70") 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 layout_mode = 0
offset_left = 4.0 offset_left = 4.0
offset_top = 4.0 offset_top = 4.0
offset_right = 28.0 offset_right = 28.0
offset_bottom = 28.0 offset_bottom = 28.0
theme_override_styles/panel = SubResource("StyleBoxFlat_5m0fm") 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"]

View file

@ -1,7 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://dtkqaw5533rxy"] [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="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="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"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rm5t0"]
bg_color = Color(0, 1, 0, 1) bg_color = Color(0, 1, 0, 1)
@ -10,6 +12,17 @@ corner_radius_top_right = 4
corner_radius_bottom_right = 4 corner_radius_bottom_right = 4
corner_radius_bottom_left = 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"] [node name="Row" type="Panel"]
anchors_preset = 10 anchors_preset = 10
anchor_right = 1.0 anchor_right = 1.0
@ -35,6 +48,28 @@ offset_bottom = 36.0
tooltip_text = "Click to bind a key to this movement" tooltip_text = "Click to bind a key to this movement"
text = "0 - Name (Unbound)" text = "0 - Name (Unbound)"
alignment = 0 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="."] [node name="MovementsBG" type="Panel" parent="."]
layout_mode = 1 layout_mode = 1
@ -49,6 +84,7 @@ theme_override_styles/panel = ExtResource("1_d1xev")
[node name="InvisibleMask" type="Control" parent="MovementsBG"] [node name="InvisibleMask" type="Control" parent="MovementsBG"]
clip_contents = true clip_contents = true
layout_mode = 1 layout_mode = 1
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
offset_left = 4.0 offset_left = 4.0
@ -64,3 +100,4 @@ offset_left = 120.0
offset_right = 120.0 offset_right = 120.0
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] [connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
[connection signal="pressed" from="ClearButton" to="." method="_on_clear_button_pressed"]

File diff suppressed because it is too large Load diff

319
Scenes/Stages/Balcony.tscn Normal file
View file

@ -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

View file

@ -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)

File diff suppressed because it is too large Load diff

View file

@ -1,178 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://dyuhywnk8heav"]
[ext_resource type="PackedScene" uid="uid://dtkqaw5533rxy" path="res://Scenes/GUI/Controls/MovementRow.tscn" id="1_g2q8r"]
[node name="HelenHouseMovementRows" type="Control"]
layout_mode = 3
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
[node name="MouthRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
grow_horizontal = 1
movement_bit = 1
movement_name = "Mouth"
[node name="LeftEarRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 44.0
offset_bottom = 84.0
grow_horizontal = 1
movement_bit = 2
movement_name = "Left Ear"
[node name="RightEarRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 88.0
offset_bottom = 128.0
grow_horizontal = 1
movement_bit = 3
movement_name = "Right Ear"
[node name="LeftEyelidRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 132.0
offset_bottom = 172.0
grow_horizontal = 1
movement_bit = 4
movement_name = "Left Eyelid"
[node name="RightEyelidRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 176.0
offset_bottom = 216.0
grow_horizontal = 1
movement_bit = 5
movement_name = "Right Eyelid"
[node name="EyesLeftRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 220.0
offset_bottom = 260.0
grow_horizontal = 1
movement_bit = 6
movement_name = "Eyes Left"
[node name="EyesRightRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 264.0
offset_bottom = 304.0
grow_horizontal = 1
movement_bit = 7
movement_name = "Eyes Right"
[node name="HeadLeftRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 308.0
offset_bottom = 348.0
grow_horizontal = 1
movement_bit = 8
movement_name = "Head Left"
[node name="HeadRightRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 352.0
offset_bottom = 392.0
grow_horizontal = 1
movement_bit = 9
movement_name = "Head Right"
[node name="HeadUpRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 396.0
offset_bottom = 436.0
grow_horizontal = 1
movement_bit = 10
movement_name = "Head Up"
[node name="LeftArmUpRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 440.0
offset_bottom = 480.0
grow_horizontal = 1
movement_bit = 11
movement_name = "Left Arm Up"
[node name="LeftArmTwistRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 484.0
offset_bottom = 524.0
grow_horizontal = 1
movement_bit = 12
movement_name = "Left Arm Twist"
[node name="LeftElbowRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 528.0
offset_bottom = 568.0
grow_horizontal = 1
movement_bit = 13
movement_name = "Left Elbow"
[node name="RightArmUpRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 572.0
offset_bottom = 612.0
grow_horizontal = 1
movement_bit = 14
movement_name = "Right Arm Up"
[node name="RightArmTwistRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 616.0
offset_bottom = 656.0
grow_horizontal = 1
movement_bit = 15
movement_name = "Right Arm Twist"
[node name="RightElbowRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 660.0
offset_bottom = 700.0
grow_horizontal = 1
movement_bit = 16
movement_name = "Right Elbow"
[node name="BodyLeftRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 704.0
offset_bottom = 744.0
grow_horizontal = 1
movement_bit = 17
movement_name = "Body Left"
[node name="BodyRightRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 748.0
offset_bottom = 788.0
grow_horizontal = 1
movement_bit = 18
movement_name = "Body Right"
[node name="BodyLeanRow" parent="." instance=ExtResource("1_g2q8r")]
layout_mode = 1
anchors_preset = -1
offset_top = 792.0
offset_bottom = 832.0
grow_horizontal = 1
movement_bit = 19
movement_name = "Body Lean"

View file

@ -1,44 +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="PackedScene" uid="uid://f0fkcs7erhop" path="res://Models/3-Stage/3stHelen.glb" id="1_s1mol"]
[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/HelenController.gd" id="3_e2vvs"] [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/Room.glb" id="4_pv43k"] [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/Stage.glb" id="5_afett"] [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"] [sub_resource type="Environment" id="Environment_axk5g"]
ambient_light_source = 1 ambient_light_source = 1
[node name="HelenHouse" type="Node3D"] [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) 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) 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) transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
[node name="Camera 1" type="Camera3D" parent="."] [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) 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 fov = 60.0
[node name="Camera 2" type="Camera3D" parent="."] [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) 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 fov = 60.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="."] [node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_axk5g") 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="."] [node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2.5, -3) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2.5, -3)
light_color = Color(1, 0.960784, 0.85098, 1) light_color = Color(1, 0.960784, 0.85098, 1)

View file

@ -4,27 +4,7 @@ var animation_player : AnimationPlayer
var animation_tree : AnimationTree var animation_tree : AnimationTree
var blend_tree : AnimationNodeBlendTree var blend_tree : AnimationNodeBlendTree
var movement_states = { var movement_states : Dictionary
"Mouth": [false, 0.0, 0.0, 0.0],
"Left Ear": [false, 0.0, 0.0, 0.0],
"Right Ear": [false, 0.0, 0.0, 0.0],
"Left Eyelid": [false, 0.0, 0.0, 0.0],
"Right Eyelid": [false, 0.0, 0.0, 0.0],
"Eyes Left": [false, 0.0, 0.0, 0.0],
"Eyes Right": [false, 0.0, 0.0, 0.0],
"Head Left": [false, 0.0, 0.0, 0.0],
"Head Right": [false, 0.0, 0.0, 0.0],
"Head Up": [false, 0.0, 0.0, 0.0],
"Left Arm Up": [false, 0.0, 0.0, 0.0],
"Left Arm Twist": [false, 0.0, 0.0, 0.0],
"Left Elbow": [false, 0.0, 0.0, 0.0],
"Right Arm Up": [false, 0.0, 0.0, 0.0],
"Right Arm Twist": [false, 0.0, 0.0, 0.0],
"Right Elbow": [false, 0.0, 0.0, 0.0],
"Body Left": [false, 0.0, 0.0, 0.0],
"Body Right": [false, 0.0, 0.0, 0.0],
"Body Lean": [false, 0.0, 0.0, 0.0],
}
func _ready(): func _ready():
animation_player = $AnimationPlayer animation_player = $AnimationPlayer
@ -37,10 +17,13 @@ func _ready():
animation_tree.active = true animation_tree.active = true
blend_tree = animation_tree.tree_root as AnimationNodeBlendTree blend_tree = animation_tree.tree_root as AnimationNodeBlendTree
#animation_player.speed_scale = 0 animation_player.speed_scale = 0
var animations = animation_player.get_animation_list() 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 prev_name = "Anim_" + animations[0]
var old_time_name = "Time_" + animations[0] var old_time_name = "Time_" + animations[0]
var old_seek_name = "Seek_" + animations[0] var old_seek_name = "Seek_" + animations[0]
@ -78,8 +61,8 @@ func _ready():
var add_node := AnimationNodeAdd2.new() var add_node := AnimationNodeAdd2.new()
blend_tree.add_node(add_name, add_node) blend_tree.add_node(add_name, add_node)
blend_tree.connect_node(time_name,0,anim_name) blend_tree.connect_node(time_name, 0, anim_name)
blend_tree.connect_node(seek_name,0,time_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, 0, prev_name)
blend_tree.connect_node(add_name, 1, seek_name) blend_tree.connect_node(add_name, 1, seek_name)
prev_name = add_name prev_name = add_name

10
Scripts/CameraButton.gd Normal file
View file

@ -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;

View file

@ -0,0 +1 @@
uid://dfoog0y2bh7tk

View file

@ -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]

View file

@ -0,0 +1 @@
uid://1f7v3ohsgx0g

View file

@ -4,28 +4,731 @@ var playing : bool = false
var recording : bool = false var recording : bool = false
var index : int = 0 var index : int = 0
var playback_rate : int = 1 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 step(amount: int)
signal start_recording() signal start_recording()
signal end_recording() signal end_recording()
signal return_to_zero() 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: func update_time_label() -> void:
var frames = index % 60 var frames = index % 60
var seconds = floori(index/60) % 60 var seconds = floori(index/60.0) % 60
var minutes = floori(index/3600) % 60 var minutes = floori(index/3600.0) % 60
var hours = floori(index/216000) var hours = floori(index/216000.0)
$SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames] $SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames]
#$SequencerPanel/TransportControls/TimeLabel.text = str(index)
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: func _ready() -> void:
get_tree().get_root().size_changed.connect(_on_size_changed) 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: func _input(event: InputEvent) -> void:
if event.is_action_pressed("toggle_editor_screen"): if event.is_action_pressed("toggle_editor_screen"):
$CameraPreview.visible = !$CameraPreview.visible; $CameraPreview.visible = !$CameraPreview.visible;
$CameraFullScreen.visible = !$CameraFullScreen.visible; $CameraFullScreen.visible = !$CameraFullScreen.visible;
elif event.is_action_pressed("sequencer_play_pause"): 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() if (playing): _on_pause_button_pressed()
else: _on_play_button_pressed() else: _on_play_button_pressed()
elif event.is_action_pressed("sequencer_play_reverse"): elif event.is_action_pressed("sequencer_play_reverse"):
@ -42,12 +745,34 @@ func _input(event: InputEvent) -> void:
_on_stop_button_pressed() _on_stop_button_pressed()
func _physics_process(_delta: float) -> void: func _physics_process(_delta: float) -> void:
if (playing || recording): if (playing):
step.emit(playback_rate) step.emit(playback_rate)
index += playback_rate index += playback_rate
if (index <= 0): _on_stop_button_pressed() if (index <= 0): _on_stop_button_pressed()
update_time_label() 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: func _on_size_changed() -> void:
$SubViewport.size = $ColorRect.size $SubViewport.size = $ColorRect.size
@ -57,43 +782,77 @@ func _on_controls_button_pressed() -> void:
func _on_credits_button_pressed() -> void: func _on_credits_button_pressed() -> void:
$CreditsScreen.visible = true $CreditsScreen.visible = true
func _on_controls_input_eater_pressed() -> void: func _on_input_eater_pressed() -> void:
$ControlsScreen.visible = false $ControlsScreen.visible = false
func _on_credits_input_eater_pressed() -> void:
$CreditsScreen.visible = false $CreditsScreen.visible = false
$ShowtapeNewScreen.visible = false
$ShowtapeLoadScreen.visible = false
$ShowtapeSaveScreen.visible = false
func _on_v_scroll_bar_value_changed(value: float) -> void: func _on_v_scroll_bar_value_changed(value: float) -> void:
$SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle.position.y = value * -44 $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:
$FlyoutPanel/Movements.visible = toggled_on
func _on_flows_flyout_button_toggled(toggled_on: bool) -> void:
$FlyoutPanel/FlowControls.visible = toggled_on
func _on_camera_flyout_button_toggled(toggled_on: bool) -> void:
$FlyoutPanel/Camera.visible = toggled_on
func _on_cosmetics_flyout_button_toggled(toggled_on: bool) -> void:
$FlyoutPanel/Cosmetics.visible = toggled_on
func _on_play_button_pressed() -> void: func _on_play_button_pressed() -> void:
playback_rate = 1 playback_rate = 1
$AudioStreamPlayer.pitch_scale = 1
$AudioStreamPlayer.play(float(index)/60.0)
playing = true playing = true
recording = false
end_recording.emit()
func _on_pause_button_pressed() -> void: func _on_pause_button_pressed() -> void:
$AudioStreamPlayer.stop()
playing = false playing = false
recording = false
end_recording.emit()
func _on_play_backwards_button_pressed() -> void: func _on_play_backwards_button_pressed() -> void:
playback_rate = -1 playback_rate = -1
$AudioStreamPlayer.stop() # cant play backwards :(
playing = true playing = true
recording = false $SequencerPanel/TransportControls/RecordButton.button_pressed = false
end_recording.emit()
func _on_fast_backwards_button_pressed() -> void: func _on_fast_backwards_button_pressed() -> void:
playback_rate = -2 playback_rate = -2
$AudioStreamPlayer.stop() # cant play backwards :(
playing = true playing = true
recording = false $SequencerPanel/TransportControls/RecordButton.button_pressed = false
end_recording.emit()
func _on_step_backwards_button_pressed() -> void: func _on_step_backwards_button_pressed() -> void:
playing = false playing = false
recording = false $AudioStreamPlayer.stop()
end_recording.emit() $SequencerPanel/TransportControls/RecordButton.button_pressed = false
if (index != 0): if (index != 0):
step.emit(-1) step.emit(-1)
index -= 1 index -= 1
@ -101,28 +860,88 @@ func _on_step_backwards_button_pressed() -> void:
func _on_fast_forward_button_pressed() -> void: func _on_fast_forward_button_pressed() -> void:
playback_rate = 2 playback_rate = 2
$AudioStreamPlayer.pitch_scale = 2
$AudioStreamPlayer.play(float(index)/60.0)
playing = true playing = true
recording = false $SequencerPanel/TransportControls/RecordButton.button_pressed = false
end_recording.emit()
func _on_step_forward_button_pressed() -> void: func _on_step_forward_button_pressed() -> void:
playing = false playing = false
recording = false $AudioStreamPlayer.stop()
end_recording.emit() $SequencerPanel/TransportControls/RecordButton.button_pressed = false
step.emit(1) step.emit(1)
index += 1 index += 1
update_time_label() update_time_label()
func _on_record_button_pressed() -> void: func _on_record_button_toggled(toggled_on: bool) -> void:
playback_rate = 1 if (playing):
playing = false # starting recording while playing causes issues
recording = true _on_stop_button_pressed()
start_recording.emit() recording = toggled_on
if (toggled_on): start_recording.emit()
else: end_recording.emit()
func _on_stop_button_pressed() -> void: func _on_stop_button_pressed() -> void:
playing = false playing = false
recording = false $AudioStreamPlayer.stop()
$AudioStreamPlayer.seek(0)
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
index = 0 index = 0
end_recording.emit()
return_to_zero.emit() return_to_zero.emit()
update_time_label() update_time_label()
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 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 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

21
Scripts/FlowControl.gd Normal file
View file

@ -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)

Some files were not shown because too many files have changed in this diff Show more