Compare commits

...

10 commits
v0.5.1 ... main

51 changed files with 1571 additions and 465 deletions

Binary file not shown.

View file

@ -0,0 +1,37 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c6n4otfble154"
path="res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.scn"
[deps]
source_file="res://Models/Balcony/BalconyStage.glb"
dest_files=["res://.godot/imported/BalconyStage.glb-30f76dcef53d0e1cd152a84572aefbee.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

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

@ -0,0 +1,37 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://d34xfaignny8j"
path="res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.scn"
[deps]
source_file="res://Models/Cyberamics/Cyber Helen.glb"
dest_files=["res://.godot/imported/Cyber Helen.glb-3f0344c1f3e746ac81eea3dfffd7e005.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

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

View file

@ -1,10 +1,11 @@
[gd_scene load_steps=26 format=3 uid="uid://oiehbor0dlqx"] [gd_scene load_steps=27 format=3 uid="uid://oiehbor0dlqx"]
[ext_resource type="Script" uid="uid://dfiwoln8mdwm8" path="res://Scripts/EditorScreen.gd" id="1_sd512"] [ext_resource type="Script" uid="uid://dfiwoln8mdwm8" path="res://Scripts/EditorScreen.gd" id="1_sd512"]
[ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/Dark.tres" id="1_v0ton"] [ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/Dark.tres" id="1_v0ton"]
[ext_resource type="Texture2D" uid="uid://xllpr3qc064c" path="res://UI/Play.png" id="3_g6u4d"] [ext_resource type="Texture2D" uid="uid://xllpr3qc064c" path="res://UI/Play.png" id="3_g6u4d"]
[ext_resource type="Texture2D" uid="uid://dgacnkv2dc65s" path="res://UI/PlayBackwards.png" id="3_mr8sb"] [ext_resource type="Texture2D" uid="uid://dgacnkv2dc65s" path="res://UI/PlayBackwards.png" id="3_mr8sb"]
[ext_resource type="Texture2D" uid="uid://dts4eh6hyt8p3" path="res://UI/SkipBackwards.png" id="3_r4ytj"] [ext_resource type="Texture2D" uid="uid://dts4eh6hyt8p3" path="res://UI/SkipBackwards.png" id="3_r4ytj"]
[ext_resource type="Texture2D" uid="uid://bpb3xn54kpxoe" path="res://UI/icon-32px.png" id="4_20noo"]
[ext_resource type="Texture2D" uid="uid://bwhgy4u37jmo1" path="res://UI/Pause.png" id="4_ba3jn"] [ext_resource type="Texture2D" uid="uid://bwhgy4u37jmo1" path="res://UI/Pause.png" id="4_ba3jn"]
[ext_resource type="Texture2D" uid="uid://s3yr2wasxv03" path="res://UI/BlankCam.png" id="4_v0ton"] [ext_resource type="Texture2D" uid="uid://s3yr2wasxv03" path="res://UI/BlankCam.png" id="4_v0ton"]
[ext_resource type="Texture2D" uid="uid://dhx2v2fd0egxd" path="res://UI/FastBackwards.png" id="4_wy7jo"] [ext_resource type="Texture2D" uid="uid://dhx2v2fd0egxd" path="res://UI/FastBackwards.png" id="4_wy7jo"]
@ -131,33 +132,6 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
color = Color(0.187176, 0.187176, 0.187176, 1) color = Color(0.187176, 0.187176, 0.187176, 1)
[node name="CameraPlaceholder" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
offset_left = -4.0
offset_top = 48.0
offset_right = -4.0
offset_bottom = 408.0
grow_horizontal = 0
texture = ExtResource("4_v0ton")
expand_mode = 1
[node name="CameraPreview" type="TextureRect" parent="."]
visible = false
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
offset_left = -4.0
offset_top = 48.0
offset_right = -4.0
grow_horizontal = 0
texture = SubResource("ViewportTexture_g6u4d")
expand_mode = 5
stretch_mode = 6
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="."]
layout_mode = 1 layout_mode = 1
anchors_preset = -1 anchors_preset = -1
@ -179,6 +153,35 @@ Open the Controls menu to see all of the keybinds."
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="CameraPlaceholder" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = -4.0
offset_top = 48.0
offset_right = -4.0
offset_bottom = 48.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_v0ton")
expand_mode = 1
[node name="CameraPreview" type="TextureRect" parent="."]
visible = false
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
offset_left = -4.0
offset_top = 48.0
offset_right = -4.0
grow_horizontal = 0
texture = SubResource("ViewportTexture_g6u4d")
expand_mode = 5
stretch_mode = 6
[node name="MenuBar" type="Panel" parent="."] [node name="MenuBar" type="Panel" parent="."]
layout_mode = 1 layout_mode = 1
anchors_preset = -1 anchors_preset = -1
@ -196,11 +199,13 @@ offset_top = 4.0
offset_right = 260.0 offset_right = 260.0
offset_bottom = 36.0 offset_bottom = 36.0
selected = 0 selected = 0
item_count = 2 item_count = 3
popup/item_0/text = "Helen House" popup/item_0/text = "Balcony Stage"
popup/item_0/id = 0 popup/item_0/id = 0
popup/item_1/text = "Chuck E's Corner" popup/item_1/text = "Helen House"
popup/item_1/id = 1 popup/item_1/id = 1
popup/item_2/text = "Chuck E's Corner"
popup/item_2/id = 2
[node name="MenuButton" type="MenuButton" parent="MenuBar"] [node name="MenuButton" type="MenuButton" parent="MenuBar"]
layout_mode = 0 layout_mode = 0
@ -241,13 +246,13 @@ anchor_left = 1.0
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_left = -232.0 offset_left = -264.0
offset_top = -16.0 offset_top = -16.0
offset_right = -8.0 offset_right = -40.0
offset_bottom = 16.0 offset_bottom = 16.0
grow_horizontal = 0 grow_horizontal = 0
grow_vertical = 2 grow_vertical = 2
text = "Pneumatic Plaything v0.5.1" text = "Pneumatic Plaything v0.6"
horizontal_alignment = 2 horizontal_alignment = 2
vertical_alignment = 1 vertical_alignment = 1
@ -260,6 +265,18 @@ offset_bottom = 36.0
text = "No showtape loaded." text = "No showtape loaded."
vertical_alignment = 1 vertical_alignment = 1
[node name="TextureRect" type="TextureRect" parent="MenuBar"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -36.0
offset_top = 4.0
offset_right = -4.0
offset_bottom = 36.0
grow_horizontal = 0
texture = ExtResource("4_20noo")
[node name="SequencerPanel" type="Panel" parent="."] [node name="SequencerPanel" type="Panel" parent="."]
layout_mode = 1 layout_mode = 1
anchors_preset = -1 anchors_preset = -1
@ -719,6 +736,7 @@ Simulator Backend: Persephone
3-Stage Models: Persephone 3-Stage Models: Persephone
PTT Cybers Models: Persephone PTT Cybers Models: Persephone
Chuck E's Corner Stage: Luigigamin212 Chuck E's Corner Stage: Luigigamin212
Balcony Stage Model: ToastHQ
This project is not associated with CEC Entertainment LLC. This project is not associated with CEC Entertainment LLC.
or Creative Engineering Inc." or Creative Engineering Inc."

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

@ -71,12 +71,12 @@ spot_angle_attenuation = 0.15
script = ExtResource("4_8suoo") script = ExtResource("4_8suoo")
[node name="Chuck" type="SpotLight3D" parent="Color Spots"] [node name="Chuck" type="SpotLight3D" parent="Color Spots"]
transform = Transform3D(-0.972974, -0.0597654, 0.223048, 2.26267e-08, 0.965926, 0.258819, -0.230916, 0.251824, -0.939821, -1.57812, 4.57895, -1.25599) transform = Transform3D(-0.995147, -0.00124532, 0.0983965, 0.0311161, 0.944632, 0.326653, -0.0933553, 0.328129, -0.940009, -1.57812, 4.57895, -1.25599)
visible = false visible = false
light_color = Color(0, 0.538333, 0.85, 1) light_color = Color(0, 0.538333, 0.85, 1)
light_energy = 3.0 light_energy = 3.0
spot_range = 6.53799 spot_range = 6.53799
spot_angle = 30.5982 spot_angle = 33.4444
spot_angle_attenuation = 0.1 spot_angle_attenuation = 0.1
[node name="Angle 1" type="Camera3D" parent="."] [node name="Angle 1" type="Camera3D" parent="."]

View file

@ -104,11 +104,11 @@ var stages_info = {
41: { "bot": "Warblettes", "movement": "Mouth", "flow_in": 4.0, "flow_out": 3.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 }, 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" }, 50: { "bot": "Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
56: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" }, 55: { "bot": "Floods", "movement": "Blue", "flow_in": "None", "flow_out": "None" },
71: { "bot": "Floods", "movement": "Red", "flow_in": "None", "flow_out": "None" }, 78: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" },
72: { "bot": "Floods", "movement": "Green", "flow_in": "None", "flow_out": "None" },
73: { "bot": "Floods", "movement": "Blue", "flow_in": "None", "flow_out": "None" },
79: { "bot": "Color Spots", "movement": "Chuck", "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": "cosmetics":
@ -225,6 +225,255 @@ var stages_info = {
}, },
} }
} }
},
"Balcony Stage":
{
"bits": 53,
"scene": "res://Scenes/Stages/Balcony.tscn",
"scene_ref_base": "SubViewport/Balcony/",
"camera_count": 6,
"ust_type": "Cyberamics",
"bit_mapping":
{
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 0.8, "flow_out": 1.0 },
3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.0, "flow_out": 1.0 },
4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
9: { "bot": "Helen", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
10: { "bot": "Helen", "movement": "Head Left", "flow_in": 0.8, "flow_out": 1.0 },
11: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.0, "flow_out": 1.0 },
12: { "bot": "Helen", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
13: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
14: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
15: { "bot": "Helen", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
16: { "bot": "Helen", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
25: { "bot": "Jasper", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
26: { "bot": "Jasper", "movement": "Head Left", "flow_in": 1.0, "flow_out": 1.0 },
27: { "bot": "Jasper", "movement": "Head Right", "flow_in": 1.0, "flow_out": 1.0 },
28: { "bot": "Jasper", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
29: { "bot": "Jasper", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
30: { "bot": "Jasper", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
31: { "bot": "Jasper", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
32: { "bot": "Jasper", "movement": "Strum", "flow_in": 2.0, "flow_out": 1.0 },
41: { "bot": "Warblettes", "movement": "Mouth", "flow_in": 4.0, "flow_out": 3.0 },
44: { "bot": "Warblettes", "movement": "Body Rock", "flow_in": 1.0, "flow_out": 1.0 },
50: { "bot": "Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
51: { "bot": "Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" },
52: { "bot": "Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" },
53: { "bot": "Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" },
54: { "bot": "Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" },
55: { "bot": "Backdrop", "movement": "C Blue", "flow_in": "None", "flow_out": "None" },
65: { "bot": "Backdrop", "movement": "L Blue", "flow_in": "None", "flow_out": "None" },
66: { "bot": "Valence", "movement": "R Center", "flow_in": "None", "flow_out": "None" },
68: { "bot": "Backdrop", "movement": "L Red", "flow_in": "None", "flow_out": "None" },
69: { "bot": "Valence", "movement": "R", "flow_in": "None", "flow_out": "None" },
70: { "bot": "Backdrop", "movement": "L Amber", "flow_in": "None", "flow_out": "None" },
71: { "bot": "Valence", "movement": "L Center", "flow_in": "None", "flow_out": "None" },
72: { "bot": "Valence", "movement": "L", "flow_in": "None", "flow_out": "None" },
73: { "bot": "Valence", "movement": "Center", "flow_in": "None", "flow_out": "None" },
74: { "bot": "Color Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" },
75: { "bot": "Color Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" },
76: { "bot": "Color Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" },
77: { "bot": "Color Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" },
78: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" },
79: { "bot": "Color Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
80: { "bot": "Color Spots", "movement": "Chuck 2", "flow_in": "None", "flow_out": "None" },
81: { "bot": "Backdrop", "movement": "R Amber", "flow_in": "None", "flow_out": "None" },
82: { "bot": "Backdrop", "movement": "C Red", "flow_in": "None", "flow_out": "None" },
83: { "bot": "Backdrop", "movement": "R Blue", "flow_in": "None", "flow_out": "None" },
84: { "bot": "Color Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" },
85: { "bot": "Backdrop", "movement": "R Red", "flow_in": "None", "flow_out": "None" },
86: { "bot": "Backdrop", "movement": "C Amber", "flow_in": "None", "flow_out": "None" },
},
"cosmetics":
{
"Chuck E. Hat":
{
"Derby":
{
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
"Chuck/Chuck/Skeleton3D/Derby": true,
},
"Cool Chuck":
{
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": true,
"Chuck/Chuck/Skeleton3D/Derby": false,
},
"Avenger":
{
"Chuck/Chuck/Skeleton3D/Avenger Hat": true,
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
"Chuck/Chuck/Skeleton3D/Derby": false,
},
"None":
{
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
"Chuck/Chuck/Skeleton3D/Derby": false,
}
},
"Chuck E. Shirt":
{
"Yellow Checker Vest":
{
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
"Chuck/Chuck/Skeleton3D/Black Bowtie": true,
"Chuck/Chuck/Skeleton3D/Buttons": true,
"Chuck/Chuck/Skeleton3D/Vest Trim": true,
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": true,
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
},
"Red Vest":
{
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
"Chuck/Chuck/Skeleton3D/Black Bowtie": true,
"Chuck/Chuck/Skeleton3D/Buttons": true,
"Chuck/Chuck/Skeleton3D/Vest Trim": true,
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
"Chuck/Chuck/Skeleton3D/Rocker Vest": true,
},
"Cool Chuck Shirt":
{
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": true,
"Chuck/Chuck/Skeleton3D/Black Bowtie": false,
"Chuck/Chuck/Skeleton3D/Buttons": false,
"Chuck/Chuck/Skeleton3D/Vest Trim": false,
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
},
"Avenger Shirt":
{
"Chuck/Chuck/Skeleton3D/Avenger Shirt": true,
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
"Chuck/Chuck/Skeleton3D/Black Bowtie": false,
"Chuck/Chuck/Skeleton3D/Buttons": false,
"Chuck/Chuck/Skeleton3D/Vest Trim": false,
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
}
},
"Chuck E. Mask":
{
"PTT":
{
"Chuck/Chuck/Skeleton3D/PTT Ears": true,
"Chuck/Chuck/Skeleton3D/PTT Ears Inside": true,
"Chuck/Chuck/Skeleton3D/PTT Jaw": true,
"Chuck/Chuck/Skeleton3D/PTT Muzzle": true,
"Chuck/Chuck/Skeleton3D/Modern Ears": false,
"Chuck/Chuck/Skeleton3D/Modern Ears Inside": false,
"Chuck/Chuck/Skeleton3D/Modern Jaw": false,
"Chuck/Chuck/Skeleton3D/Modern Muzzle": false,
},
"Modern":
{
"Chuck/Chuck/Skeleton3D/PTT Ears": false,
"Chuck/Chuck/Skeleton3D/PTT Ears Inside": false,
"Chuck/Chuck/Skeleton3D/PTT Jaw": false,
"Chuck/Chuck/Skeleton3D/PTT Muzzle": false,
"Chuck/Chuck/Skeleton3D/Modern Ears": true,
"Chuck/Chuck/Skeleton3D/Modern Ears Inside": true,
"Chuck/Chuck/Skeleton3D/Modern Jaw": true,
"Chuck/Chuck/Skeleton3D/Modern Muzzle": true,
},
},
"Chuck E. Eyelids":
{
"Blue":
{
"Chuck/Chuck/Skeleton3D/Blue Eyelids": true,
"Chuck/Chuck/Skeleton3D/Grey Eyelids": false,
},
"Grey":
{
"Chuck/Chuck/Skeleton3D/Blue Eyelids": false,
"Chuck/Chuck/Skeleton3D/Grey Eyelids": true,
},
},
"Helen Eyelids":
{
"Blue":
{
"Helen/Helen/Skeleton3D/Blue Eyelids": true,
"Helen/Helen/Skeleton3D/Pink Eyelids": false,
},
"Pink":
{
"Helen/Helen/Skeleton3D/Blue Eyelids": false,
"Helen/Helen/Skeleton3D/Pink Eyelids": true,
},
},
"Helen Dress":
{
"Half Body CU":
{
"Helen/Helen/Skeleton3D/Half Body Skirt": true,
"Helen/Helen/Skeleton3D/Skirt": false,
"Helen/Helen/Skeleton3D/Black Shirt": true,
"Helen/Helen/Skeleton3D/Collar": true,
},
"Full Body CU":
{
"Helen/Helen/Skeleton3D/Half Body Skirt": false,
"Helen/Helen/Skeleton3D/Skirt": true,
"Helen/Helen/Skeleton3D/Black Shirt": true,
"Helen/Helen/Skeleton3D/Collar": true,
},
},
"Helen Hair":
{
"Large CU":
{
"Helen/Helen/Skeleton3D/BWHair Large": true,
"Helen/Helen/Skeleton3D/BWHair": false,
},
"Normal CU":
{
"Helen/Helen/Skeleton3D/BWHair Large": false,
"Helen/Helen/Skeleton3D/BWHair": true,
},
},
"Helen Mask":
{
"Modern":
{
"Helen/Helen/Skeleton3D/Modern Head": true,
"Helen/Helen/Skeleton3D/Modern Mask": true,
"Helen/Helen/Skeleton3D/Road Stage Jaw": false,
"Helen/Helen/Skeleton3D/Road Stage Beak": false,
"Helen/Helen/Skeleton3D/Modern Jaw": true,
"Helen/Helen/Skeleton3D/Modern Beak": true,
},
"Road Stage":
{
"Helen/Helen/Skeleton3D/Modern Head": true,
"Helen/Helen/Skeleton3D/Modern Mask": true,
"Helen/Helen/Skeleton3D/Road Stage Jaw": true,
"Helen/Helen/Skeleton3D/Road Stage Beak": true,
"Helen/Helen/Skeleton3D/Modern Jaw": false,
"Helen/Helen/Skeleton3D/Modern Beak": false,
},
},
}
} }
} }
@ -234,24 +483,24 @@ signal end_recording()
signal return_to_zero() signal return_to_zero()
signal erase_all() signal erase_all()
func reload_stage(stage_previously_loaded: bool) -> void: func reload_stage() -> void:
if (stage_previously_loaded): $SequencerPanel/TimelinePanel/VScrollBar.value = 0
$SequencerPanel/TimelinePanel/VScrollBar.value = 0 $FlyoutPanel/Movements/VScrollBar.value = 0
$FlyoutPanel/Movements/VScrollBar.value = 0 $FlyoutPanel/FlowControls/VScrollBar.value = 0
$FlyoutPanel/FlowControls/VScrollBar.value = 0 $CameraPreview.visible = false
$CameraPreview.visible = false for row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
for row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children(): row.queue_free()
row.queue_free() for flow in $FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.get_children():
for flow in $FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.get_children(): flow.queue_free()
flow.queue_free() for movement in $FlyoutPanel/Movements/InvisibleMask/MovementHandle.get_children():
for movement in $FlyoutPanel/Movements/InvisibleMask/MovementHandle.get_children(): movement.queue_free()
movement.queue_free() for camera in $FlyoutPanel/Camera.get_children():
for camera in $FlyoutPanel/Camera.get_children(): camera.queue_free()
camera.queue_free() for cosmetic_adjustment in $FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.get_children():
for cosmetic_adjustment in $FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.get_children(): cosmetic_adjustment.queue_free()
cosmetic_adjustment.queue_free() if ($SubViewport.get_child_count() > 0):
$SubViewport.get_child(0).queue_free() $SubViewport.get_child(0).queue_free()
cam_index = 0 cam_index = 0
var stage = load(stages_info[current_stage]["scene"]).instantiate() var stage = load(stages_info[current_stage]["scene"]).instantiate()
$SubViewport.add_child(stage) $SubViewport.add_child(stage)
@ -290,7 +539,8 @@ func reload_stage(stage_previously_loaded: bool) -> void:
if (in_flow is not String): if (in_flow is not String):
var flow_control = load("res://Scenes/GUI/Controls/FlowControl.tscn").instantiate() var flow_control = load("res://Scenes/GUI/Controls/FlowControl.tscn").instantiate()
flow_control.position.y = flows_offset flow_control.position.y = flows_offset
flow_control.name = bot + " " + movement flow_control.name = str(bit_number) + bot + movement + current_stage
flow_control.vis_name = bot + " " + movement
flow_control.in_value = in_flow flow_control.in_value = in_flow
flow_control.out_value = out_flow flow_control.out_value = out_flow
$FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.add_child(flow_control) $FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.add_child(flow_control)
@ -302,6 +552,7 @@ func reload_stage(stage_previously_loaded: bool) -> void:
row.position.y = rows_offset row.position.y = rows_offset
row.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"] row.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
row.animatronic = bot row.animatronic = bot
row.current_stage = current_stage
if (in_flow is String): row.flow_path = "None" if (in_flow is String): row.flow_path = "None"
row.movement_bit = bit_number row.movement_bit = bit_number
row.movement_name = movement row.movement_name = movement
@ -311,6 +562,8 @@ func reload_stage(stage_previously_loaded: bool) -> void:
movement_button.position.y = rows_offset movement_button.position.y = rows_offset
movement_button.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"] movement_button.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
movement_button.animatronic = bot 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" if (in_flow is String): movement_button.flow_path = "None"
movement_button.movement_name = movement movement_button.movement_name = movement
$FlyoutPanel/Movements/InvisibleMask/MovementHandle.add_child(movement_button) $FlyoutPanel/Movements/InvisibleMask/MovementHandle.add_child(movement_button)
@ -323,7 +576,7 @@ func reload_stage(stage_previously_loaded: bool) -> void:
func _on_stage_change_overwrite_confirmation_dialog_confirmed() -> void: func _on_stage_change_overwrite_confirmation_dialog_confirmed() -> void:
erase_all.emit() erase_all.emit()
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected) current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
reload_stage(true) reload_stage()
func update_time_label() -> void: func update_time_label() -> void:
var frames = index % 60 var frames = index % 60
@ -350,13 +603,13 @@ func _ready() -> void:
$MenuBar/MenuButton.get_popup().id_pressed.connect(_showtape_menu_button_pressed) $MenuBar/MenuButton.get_popup().id_pressed.connect(_showtape_menu_button_pressed)
OS.request_permissions() OS.request_permissions()
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected) current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
reload_stage(false) reload_stage()
func _on_stage_selector_item_selected(_index: int) -> void: func _on_stage_selector_item_selected(_index: int) -> void:
if (showtape_loaded): $StageChangeOverwriteConfirmationDialog.show() if (showtape_loaded): $StageChangeOverwriteConfirmationDialog.show()
else: else:
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected) current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
reload_stage(true) reload_stage()
func _showtape_menu_button_pressed(id: int) -> void: func _showtape_menu_button_pressed(id: int) -> void:
match (id): match (id):
@ -642,36 +895,19 @@ func save_data() -> String:
var temp_data = {} var temp_data = {}
var longest_channel = 0 var longest_channel = 0
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children(): for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
temp_data[int(movement_row.name.split(" ")[0])] = movement_row.movements temp_data[movement_row.movement_bit] = movement_row.movements
if (movement_row.movements.size() > longest_channel): longest_channel = movement_row.movements.size() if (movement_row.movements.size() > longest_channel): longest_channel = movement_row.movements.size()
for i in range(longest_channel+1): for i in range(longest_channel+1):
var frame_long_1 = 0 var total_frame_index = 1
var frame_long_2 = 0 var fstring = ""
var frame_long_3 = 0 for j in range(64):
var frame_long_4 = 0 var f_quartet = 0
var frame_long_5 = 0 for k in range(4):
var frame_long_6 = 0 if (index_get_safe(i, index_s_get_safe(total_frame_index, temp_data))):
var frame_long_7 = 0 f_quartet += int(pow(2, k))
var frame_long_8 = 0 total_frame_index += 1
for j in temp_data: fstring = ("%01X" % f_quartet) + fstring
if (index_get_safe(i, temp_data[j])): write_out += fstring + ","
if (j <= 32):
frame_long_1 += 1 << (j&32)-1
elif (j <= 64):
frame_long_2 += 1 << (j&32)-1
elif (j <= 96):
frame_long_3 += 1 << (j&32)-1
elif (j <= 128):
frame_long_4 += 1 << (j&32)-1
elif (j <= 160):
frame_long_5 += 1 << (j&32)-1
elif (j <= 192):
frame_long_6 += 1 << (j&32)-1
elif (j <= 224):
frame_long_7 += 1 << (j&32)-1
elif (j <= 256):
frame_long_8 += 1 << (j&32)-1
write_out += (("%08X%08X%08X%08X%08X%08X%08X%08X,") % [frame_long_8, frame_long_7, frame_long_6, frame_long_5, frame_long_4, frame_long_3, frame_long_2, frame_long_1])
return write_out return write_out
func plot_data(data: String): func plot_data(data: String):
@ -681,36 +917,12 @@ func plot_data(data: String):
evil_glass.append(movement_row.movement_bit) evil_glass.append(movement_row.movement_bit)
for frame_string in data.split(","): for frame_string in data.split(","):
if (frame_string == ""): continue if (frame_string == ""): continue
var frame_long_8 = frame_string.substr(0, 8).hex_to_int() var check_frame_split = frame_string.split()
var frame_long_7 = frame_string.substr(8, 8).hex_to_int() check_frame_split.reverse()
var frame_long_6 = frame_string.substr(16, 8).hex_to_int()
var frame_long_5 = frame_string.substr(24, 8).hex_to_int()
var frame_long_4 = frame_string.substr(32, 8).hex_to_int()
var frame_long_3 = frame_string.substr(40, 8).hex_to_int()
var frame_long_2 = frame_string.substr(48, 8).hex_to_int()
var frame_long_1 = frame_string.substr(56, 8).hex_to_int()
for i in stages_info[current_stage]["bit_mapping"]: for i in stages_info[current_stage]["bit_mapping"]:
var er = false var er = false
var check_i = (i % 32) - 1 if ((check_frame_split[(i - 1) / 4].hex_to_int() & int(pow(2, ((i - 1) % 4)))) == int(pow(2, ((i - 1) % 4)))):
var check_frame_segment = frame_long_1 er = true
if (i <= 32):
check_frame_segment = frame_long_1
elif (i <= 64):
check_frame_segment = frame_long_2
elif (i <= 96):
check_frame_segment = frame_long_3
elif (i <= 128):
check_frame_segment = frame_long_4
elif (i <= 160):
check_frame_segment = frame_long_5
elif (i <= 192):
check_frame_segment = frame_long_6
elif (i <= 224):
check_frame_segment = frame_long_7
elif (i <= 256):
check_frame_segment = frame_long_8
if ((check_frame_segment & int(pow(2, check_i))) >> check_i == 1):
er = true
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_child(evil_glass.find(i)).forced_etchable = 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 $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_child(evil_glass.find(i)).etching = er
step.emit(1) step.emit(1)
@ -726,3 +938,10 @@ func index_get_safe(cindex: int, data: Array[bool]) -> bool:
var out = data.get(cindex) var out = data.get(cindex)
if (out == null): return false if (out == null): return false
return out 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

View file

@ -2,12 +2,13 @@ extends Control
@export var in_value : float = 1.0 @export var in_value : float = 1.0
@export var out_value : float = 1.0 @export var out_value : float = 1.0
@export var vis_name : String = ""
signal in_value_updated(new_value: float) signal in_value_updated(new_value: float)
signal out_value_updated(new_value: float) signal out_value_updated(new_value: float)
func _ready() -> void: func _ready() -> void:
$Panel/Label.text = self.name $Panel/Label.text = self.vis_name
$Panel/InStepper.value = self.in_value $Panel/InStepper.value = self.in_value
$Panel/OutStepper.value = self.out_value $Panel/OutStepper.value = self.out_value

View file

@ -4,6 +4,8 @@ signal movement_in(movement, rate)
signal movement_out(movement, rate) signal movement_out(movement, rate)
@export var animatronic : String @export var animatronic : String
@export var movement_bit : int
@export var current_stage : String
@export var base_scene_path : String @export var base_scene_path : String
@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/" @export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/"
@export var movement_name : String @export var movement_name : String
@ -18,7 +20,7 @@ func _ready() -> void:
movement_in.connect(animatronic_node._movement_in) movement_in.connect(animatronic_node._movement_in)
movement_out.connect(animatronic_node._movement_out) movement_out.connect(animatronic_node._movement_out)
if (flow_path != "None"): if (flow_path != "None"):
var flow_control = get_node(flow_path + animatronic + " " + movement_name) var flow_control = get_node(flow_path + str(movement_bit) + animatronic + movement_name + current_stage)
flow_control.in_value_updated.connect(self._update_in_flow) flow_control.in_value_updated.connect(self._update_in_flow)
flow_control.out_value_updated.connect(self._update_out_flow) flow_control.out_value_updated.connect(self._update_out_flow)
in_flow = flow_control.in_value in_flow = flow_control.in_value

View file

@ -4,6 +4,7 @@ extends Panel
@export var movement_name : String = "Name" @export var movement_name : String = "Name"
@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/" @export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/"
@export var base_scene_path : String @export var base_scene_path : String
@export var current_stage : String
@export var animatronic : String @export var animatronic : String
@export var movements : Array[bool] @export var movements : Array[bool]
@export var etching: bool = false @export var etching: bool = false
@ -108,7 +109,7 @@ func _update_out_flow(new_value: float) -> void:
func _ready() -> void: func _ready() -> void:
if (flow_path != "None"): if (flow_path != "None"):
var flow_control = get_node(flow_path + animatronic + " " + movement_name) var flow_control = get_node(flow_path + str(movement_bit) + animatronic + movement_name + current_stage)
flow_control.in_value_updated.connect(self._update_in_flow) flow_control.in_value_updated.connect(self._update_in_flow)
flow_control.out_value_updated.connect(self._update_out_flow) flow_control.out_value_updated.connect(self._update_out_flow)
in_flow = flow_control.in_value in_flow = flow_control.in_value

View file

@ -2,7 +2,13 @@
## Currently in game ## Currently in game
- Helen House (not a real stage) - Helen House (homemade stage)
- Chuck E's Corner (homemade stage)
## In Development
- Balcony Stage
- Prototype Road Stage
## Planned ## Planned
@ -10,7 +16,6 @@
- Portrait Stage - Portrait Stage
- Shelf Stage (Portrait stage with Balcony mechs) - Shelf Stage (Portrait stage with Balcony mechs)
- Balcony Stage
- C Stage - C Stage
- Rocker Stage - Rocker Stage
- Road Stage - Road Stage

View file

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (ebf0e940, 2025-05-08)"
sodipodi:docname="cylinder.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="true"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.4261574"
inkscape:cx="238.75345"
inkscape:cy="208.6025"
inkscape:window-width="1440"
inkscape:window-height="810"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#f2f2f2;stroke-width:0.264583"
id="rect1"
width="25"
height="50"
x="37.5"
y="40"
rx="12.5"
ry="12.5" />
<rect
style="fill:#f2f2f2;stroke-width:0.264583"
id="rect3"
width="10"
height="25"
x="35"
y="10"
rx="5"
ry="5" />
<rect
style="fill:#f2f2f2;stroke-width:0.264583"
id="rect4"
width="10"
height="25"
x="55"
y="10"
rx="5"
ry="5" />
<rect
style="fill:#f2f2f2;stroke-width:0.264583"
id="rect5"
width="30"
height="10"
x="35"
y="25"
rx="5"
ry="5" />
<rect
style="fill:#f2f2f2;stroke-width:0.264583"
id="rect6"
width="10"
height="20"
x="45"
y="30"
rx="5"
ry="5" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bm61nhm3rs043" uid="uid://1eluxvmnj7l7"
path="res://.godot/imported/icon.svg-c9c2a32fd2d5f8bc98ecd887f02eeda7.ctex" path="res://.godot/imported/cylinder.svg-7c12310ad8fca6e1f959909a64d6d065.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://UI/icon.svg" source_file="res://UI/PneumaticPlaything.icon/Assets/cylinder.svg"
dest_files=["res://.godot/imported/icon.svg-c9c2a32fd2d5f8bc98ecd887f02eeda7.ctex"] dest_files=["res://.godot/imported/cylinder.svg-7c12310ad8fca6e1f959909a64d6d065.ctex"]
[params] [params]

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (ebf0e940, 2025-05-08)"
sodipodi:docname="green_lines.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.4261574"
inkscape:cx="205.79776"
inkscape:cy="188.26814"
inkscape:window-width="1440"
inkscape:window-height="810"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#00ff00;stroke-width:0.264583"
id="rect1"
width="80"
height="20"
x="10"
y="10"
rx="10"
ry="10" />
<rect
style="fill:#00ff00;stroke-width:0.264583"
id="rect2"
width="80"
height="20"
x="10"
y="70"
rx="10"
ry="10" />
<rect
style="fill:#00ff00;stroke-width:0.264583"
id="rect3"
width="80"
height="20"
x="10"
y="40"
rx="10"
ry="10" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkg2eh0tfbji4"
path="res://.godot/imported/green_lines.svg-af1cb631137e1105ee7be8775d8a5016.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/PneumaticPlaything.icon/Assets/green_lines.svg"
dest_files=["res://.godot/imported/green_lines.svg-af1cb631137e1105ee7be8775d8a5016.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View file

@ -0,0 +1,68 @@
{
"fill" : {
"automatic-gradient" : "srgb:0.12984,0.12985,0.12984,1.00000"
},
"groups" : [
{
"layers" : [
{
"blend-mode" : "normal",
"fill" : {
"automatic-gradient" : "srgb:1.00000,1.00000,1.00000,1.00000"
},
"glass" : true,
"image-name" : "cylinder.svg",
"name" : "cylinder",
"position" : {
"scale" : 3,
"translation-in-points" : [
0,
0
]
}
}
],
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"translucency" : {
"enabled" : true,
"value" : 0.5
}
},
{
"layers" : [
{
"fill" : {
"automatic-gradient" : "srgb:0.00000,0.97680,0.00000,1.00000"
},
"image-name" : "green_lines.svg",
"name" : "green_lines",
"opacity" : 1,
"position" : {
"scale" : 3.4,
"translation-in-points" : [
0,
0
]
}
}
],
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"translucency" : {
"enabled" : true,
"value" : 0.5
}
}
],
"supported-platforms" : {
"circles" : [
"watchOS"
],
"squares" : "shared"
}
}

BIN
UI/icon-32px.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

34
UI/icon-32px.png.import Normal file
View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bpb3xn54kpxoe"
path="res://.godot/imported/icon-32px.png-601da436f7467fcd6c395054742650f3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/icon-32px.png"
dest_files=["res://.godot/imported/icon-32px.png-601da436f7467fcd6c395054742650f3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
UI/icon-round.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

34
UI/icon-round.png.import Normal file
View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://yqg6bh2fiumf"
path="res://.godot/imported/icon-round.png-d13b0f9c2aed0f892b01044430866017.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/icon-round.png"
dest_files=["res://.godot/imported/icon-round.png-d13b0f9c2aed0f892b01044430866017.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
UI/icon.icns Normal file

Binary file not shown.

BIN
UI/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 8 MiB

Before After
Before After

View file

@ -2,7 +2,7 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dkbo8r6il5rh7" uid="uid://cnvfrr028730a"
path="res://.godot/imported/icon.png-d44ad423496976af115f803f6386bc82.ctex" path="res://.godot/imported/icon.png-d44ad423496976af115f803f6386bc82.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false

View file

@ -1,336 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
sodipodi:docname="icon.svg"
inkscape:export-filename="icon.png"
inkscape:export-xdpi="130.048"
inkscape:export-ydpi="130.048"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="false"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.0555388"
inkscape:cx="152.05505"
inkscape:cy="293.21518"
inkscape:window-width="1920"
inkscape:window-height="1008"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1"><linearGradient
id="linearGradient81"
inkscape:collect="always"><stop
style="stop-color:#00ff00;stop-opacity:1;"
offset="0"
id="stop81" /><stop
style="stop-color:#00c000;stop-opacity:1;"
offset="1"
id="stop82" /></linearGradient><linearGradient
id="linearGradient72"
inkscape:collect="always"><stop
style="stop-color:#4d4d4d;stop-opacity:1;"
offset="0"
id="stop73" /><stop
style="stop-color:#303030;stop-opacity:1;"
offset="1"
id="stop74" /></linearGradient><linearGradient
id="linearGradient71"
inkscape:collect="always"><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop71" /><stop
style="stop-color:#808080;stop-opacity:1;"
offset="1"
id="stop72" /></linearGradient><filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter15"
x="-0.03"
y="-0.03"
width="1.06"
height="1.0725"><feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
id="feFlood14" /><feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="1.000000"
id="feGaussianBlur14" /><feOffset
result="offset"
in="blur"
dx="0.000000"
dy="1"
id="feOffset14" /><feComposite
result="comp1"
operator="in"
in="flood"
in2="offset"
id="feComposite14" /><feComposite
result="comp2"
operator="over"
in="SourceGraphic"
in2="comp1"
id="feComposite15" /></filter><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient71"
id="radialGradient72"
cx="60.190689"
cy="48.07777"
fx="60.190689"
fy="48.07777"
r="24.91572"
gradientTransform="matrix(1,0,0,1.8574985,0,-41.226617)"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient72"
id="radialGradient74"
cx="49.999996"
cy="52.499996"
fx="49.999996"
fy="52.499996"
r="42.399998"
gradientTransform="matrix(1,0,0,1.0589623,0,-3.0955189)"
gradientUnits="userSpaceOnUse"
spreadMethod="pad" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient82"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35"
gradientTransform="matrix(1,0,0,0.78571429,0,11.25)"
gradientUnits="userSpaceOnUse" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient1"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.78571429,2.5,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient2"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.78571429,2.5,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient3"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.78571429,2.5,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient4"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.78571429,0,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient5"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.78571429,2.5,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient6"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.78571429,2.5,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient7"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9375,0,0,0.78571429,2.8125,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient81"
id="radialGradient8"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.78571429,0,11.25)"
cx="50"
cy="52.5"
fx="50"
fy="52.5"
r="35" /></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><rect
style="fill:url(#radialGradient74);fill-opacity:1;stroke-width:0.264583;filter:url(#filter15)"
id="rect1"
width="80"
height="80"
x="10"
y="10"
rx="17"
ry="17" /><g
id="g80"
style="fill:url(#radialGradient82)"
transform="translate(0,-2.5)"><rect
style="fill:url(#radialGradient1);fill-opacity:1;stroke-width:0.264583"
id="rect74"
width="20"
height="10"
x="17.5"
y="25"
rx="5"
ry="5" /><rect
style="fill:url(#radialGradient2);fill-opacity:1;stroke-width:0.264583"
id="rect75"
width="20"
height="10"
x="42.5"
y="25"
rx="5"
ry="5" /><rect
style="fill:url(#radialGradient3);fill-opacity:1;stroke-width:0.324047"
id="rect76"
width="30"
height="10"
x="22.5"
y="40"
rx="5"
ry="5" /><rect
style="fill:url(#radialGradient4);fill-opacity:1;stroke-width:0.264583"
id="rect77"
width="20"
height="10"
x="60"
y="40"
rx="5"
ry="5" /><rect
style="fill:url(#radialGradient5);fill-opacity:1;stroke-width:0.264583"
id="rect78"
width="20"
height="10"
x="17.5"
y="55"
rx="5"
ry="5" /><rect
style="fill:url(#radialGradient6);fill-opacity:1;stroke-width:0.35001"
id="rect79"
width="35"
height="10"
x="42.5"
y="55"
rx="5"
ry="5" /><rect
style="fill:url(#radialGradient7);fill-opacity:1;stroke-width:0.362295"
id="rect80"
width="37.5"
height="10"
x="45"
y="70"
rx="4.6875"
ry="5" /><rect
style="fill:url(#radialGradient8);fill-opacity:1;stroke-width:0.187089"
id="rect81"
width="10"
height="10"
x="20"
y="70"
rx="5"
ry="5" /></g><g
id="g7"
style="fill:url(#radialGradient72);fill-opacity:1"><rect
style="fill:url(#radialGradient72);fill-opacity:1;stroke-width:0.264583"
id="rect2"
width="10"
height="80"
x="69.694618"
y="-11.538497"
rx="5"
ry="5"
transform="rotate(25.383575)" /><rect
style="fill:url(#radialGradient72);fill-opacity:1;stroke-width:0.187089"
id="rect3"
width="5"
height="10"
x="72.194618"
y="-16.538498"
transform="rotate(25.383575)" /><rect
style="fill:url(#radialGradient72);fill-opacity:1;stroke-width:0.264583"
id="rect4"
width="2.5"
height="15"
x="77.194618"
y="-31.5385"
rx="1.25"
ry="1.25"
transform="rotate(25.383575)" /><rect
style="fill:url(#radialGradient72);fill-opacity:1;stroke-width:0.264583"
id="rect5"
width="2.5"
height="15"
x="69.694618"
y="-31.5385"
rx="1.25"
ry="1.25"
transform="rotate(25.383575)" /><rect
style="fill:url(#radialGradient72);fill-opacity:1;stroke-width:0.216031"
id="rect6"
width="10"
height="2.5"
x="69.694618"
y="-19.038498"
rx="2.5"
ry="2.5"
transform="rotate(25.383575)" /><rect
style="fill:url(#radialGradient72);fill-opacity:1;stroke-width:0.187088"
id="rect7"
width="7.5"
height="2.5"
x="70.944618"
y="-19.038498"
transform="rotate(25.383575)" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 10 KiB

View file

@ -11,17 +11,23 @@ config_version=5
[application] [application]
config/name="Pneumatic Plaything" config/name="Pneumatic Plaything"
config/version="v0.5.1" config/version="v0.6"
run/main_scene="uid://oiehbor0dlqx" run/main_scene="uid://oiehbor0dlqx"
config/features=PackedStringArray("4.4", "GL Compatibility") config/features=PackedStringArray("4.4", "GL Compatibility")
boot_splash/show_image=false boot_splash/show_image=false
config/icon="uid://bm61nhm3rs043" config/icon="uid://cnvfrr028730a"
config/macos_native_icon="res://UI/icon.icns"
config/windows_native_icon="res://UI/icon.ico"
[display] [display]
window/size/viewport_width=1280 window/size/viewport_width=1280
window/size/viewport_height=720 window/size/viewport_height=720
[filesystem]
import/blender/enabled=false
[input] [input]
ui_accept={ ui_accept={
@ -392,3 +398,5 @@ fullscreen={
renderer/rendering_method="gl_compatibility" renderer/rendering_method="gl_compatibility"
renderer/rendering_method.mobile="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility"
textures/vram_compression/import_etc2_astc=true textures/vram_compression/import_etc2_astc=true
limits/opengl/max_renderable_lights=128
limits/opengl/max_lights_per_object=128