add all files

This commit is contained in:
Persephone Bubblegum-Holidy 2025-05-22 20:54:27 -07:00
parent feb5df41ea
commit 371bda867d
34 changed files with 1875 additions and 14 deletions

15
.gitignore vendored
View file

@ -1,17 +1,4 @@
# ---> Godot
# Godot 4+ specific ignores # Godot 4+ specific ignores
.godot/ .godot/
/android/
# Godot-specific ignores
.import/
export.cfg
export_presets.cfg export_presets.cfg
# Imported translations (automatically generated from CSV files)
*.translation
# Mono-specific ignores
.mono/
data_*/
mono_crash.*.json

BIN
Models/3stHelen.glb Normal file

Binary file not shown.

View file

@ -0,0 +1,37 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://f0fkcs7erhop"
path="res://.godot/imported/3stHelen.glb-c3541fdb7863c3136dcc986fabbb06be.scn"
[deps]
source_file="res://Models/3stHelen.glb"
dest_files=["res://.godot/imported/3stHelen.glb-c3541fdb7863c3136dcc986fabbb06be.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

BIN
Models/3stHelen_beak.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

View file

@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bprmuf7jpffy3"
path.s3tc="res://.godot/imported/3stHelen_beak.png-da72f62ca7ac7e5bf5593b4d1be3a7ee.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "e62a49cd7edd0e5c4fe2d3d2bc6a61b9"
}
[deps]
source_file="res://Models/3stHelen_beak.png"
dest_files=["res://.godot/imported/3stHelen_beak.png-da72f62ca7ac7e5bf5593b4d1be3a7ee.s3tc.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

BIN
Models/3stHelen_shoes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

View file

@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cm8h5o5urcvym"
path.s3tc="res://.godot/imported/3stHelen_shoes.png-97c060c3fc3442bff6f75c94bc90506a.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "239e23627ba253afcd70dc24f1087fb1"
}
[deps]
source_file="res://Models/3stHelen_shoes.png"
dest_files=["res://.godot/imported/3stHelen_shoes.png-97c060c3fc3442bff6f75c94bc90506a.s3tc.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

38
Models/Chuck.fbx.import Normal file
View file

@ -0,0 +1,38 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cs0va7jp6fjfa"
path="res://.godot/imported/Chuck.fbx-e0f76e66bd2d66a68bf43edbd8d1d948.scn"
[deps]
source_file="res://3-Stage/Models/Chuck.fbx"
dest_files=["res://.godot/imported/Chuck.fbx-e0f76e66bd2d66a68bf43edbd8d1d948.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

38
Models/Helen.fbx.import Normal file
View file

@ -0,0 +1,38 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://5i7srffes8ut"
path="res://.godot/imported/Helen.fbx-a3dcdd674756aa7b6860353ece3f39df.scn"
[deps]
source_file="res://3-Stage/Models/Helen.fbx"
dest_files=["res://.godot/imported/Helen.fbx-a3dcdd674756aa7b6860353ece3f39df.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

38
Models/Jasper.fbx.import Normal file
View file

@ -0,0 +1,38 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b4xrsr1w4t017"
path="res://.godot/imported/Jasper.fbx-172cc49326619adb06baca5b9e28470b.scn"
[deps]
source_file="res://3-Stage/Models/Jasper.fbx"
dest_files=["res://.godot/imported/Jasper.fbx-172cc49326619adb06baca5b9e28470b.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1

38
Models/Munch.fbx.import Normal file
View file

@ -0,0 +1,38 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://y5jsfwdmgwkq"
path="res://.godot/imported/Munch.fbx-5aedcf1ca9583a75c301f71dc6519957.scn"
[deps]
source_file="res://3-Stage/Models/Munch.fbx"
dest_files=["res://.godot/imported/Munch.fbx-5aedcf1ca9583a75c301f71dc6519957.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

@ -0,0 +1,38 @@
[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

BIN
Models/Room.glb Normal file

Binary file not shown.

37
Models/Room.glb.import Normal file
View file

@ -0,0 +1,37 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bhoeqcsdb0fx2"
path="res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.scn"
[deps]
source_file="res://Models/Room.glb"
dest_files=["res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.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

BIN
Models/Stage.glb Normal file

Binary file not shown.

37
Models/Stage.glb.import Normal file
View file

@ -0,0 +1,37 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://btvomf1ayoypu"
path="res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.scn"
[deps]
source_file="res://Models/Stage.glb"
dest_files=["res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.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

View file

@ -0,0 +1,42 @@
[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

@ -0,0 +1,49 @@
[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"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1pi70"]
bg_color = Color(0, 0, 0, 1)
corner_radius_top_left = 12
corner_radius_top_right = 12
corner_radius_bottom_right = 12
corner_radius_bottom_left = 12
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5m0fm"]
bg_color = Color(0, 1, 0, 1)
corner_radius_top_left = 12
corner_radius_top_right = 12
corner_radius_bottom_right = 12
corner_radius_bottom_left = 12
[node name="IndicatorLight" 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_l718a")
[node name="Container" type="Panel" parent="."]
layout_mode = 0
offset_right = 32.0
offset_bottom = 32.0
[node name="Black" type="Panel" parent="."]
layout_mode = 0
offset_left = 4.0
offset_top = 4.0
offset_right = 28.0
offset_bottom = 28.0
theme_override_styles/panel = SubResource("StyleBoxFlat_1pi70")
[node name="Green" type="Panel" parent="."]
layout_mode = 0
offset_left = 4.0
offset_top = 4.0
offset_right = 28.0
offset_bottom = 28.0
theme_override_styles/panel = SubResource("StyleBoxFlat_5m0fm")

1040
Scenes/GUI/EditorScreen.tscn Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,4 @@
[gd_resource type="ButtonGroup" format=3 uid="uid://bij2tonqeslpt"]
[resource]
allow_unpress = true

View file

@ -0,0 +1,46 @@
[gd_scene load_steps=6 format=3 uid="uid://btre5j66mpchy"]
[ext_resource type="PackedScene" uid="uid://f0fkcs7erhop" path="res://Models/3stHelen.glb" id="2_e7oou"]
[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/HelenController.gd" id="3_e2vvs"]
[ext_resource type="PackedScene" uid="uid://bhoeqcsdb0fx2" path="res://Models/Room.glb" id="4_pv43k"]
[ext_resource type="PackedScene" uid="uid://btvomf1ayoypu" path="res://Models/Stage.glb" id="5_afett"]
[sub_resource type="Environment" id="Environment_axk5g"]
ambient_light_source = 1
[node name="HelenHouse" type="Node3D"]
[node name="3stHelen" parent="." instance=ExtResource("2_e7oou")]
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0.25, 0)
script = ExtResource("3_e2vvs")
[node name="Room" parent="." instance=ExtResource("4_pv43k")]
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")]
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(-1, 1.31601e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -3)
fov = 60.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_axk5g")
[node name="SpotLight3D" type="SpotLight3D" parent="."]
transform = Transform3D(-0.972974, -0.0597654, 0.223048, 2.26267e-08, 0.965926, 0.258819, -0.230916, 0.251824, -0.939821, 0.217544, 1.75308, -1.04223)
light_color = Color(1, 0.9625, 0.85, 1)
light_energy = 2.0
spot_range = 1.3068
spot_angle = 27.449
spot_angle_attenuation = 0.1
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2.5, -3)
light_color = Color(1, 0.960784, 0.85098, 1)
light_energy = 0.5
[node name="OmniLight3D2" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2.5, -3)
light_color = Color(1, 0.960784, 0.85098, 1)
light_energy = 0.5

161
Scripts/EditorScreen.gd Normal file
View file

@ -0,0 +1,161 @@
extends Control
signal movement_in(movement, rate)
signal movement_out(movement, rate)
func _ready() -> void:
var animatronic = $"SubViewport/HelenHouse/3stHelen"
movement_in.connect(animatronic._movement_in)
movement_out.connect(animatronic._movement_out)
movement_in.connect(self._movement_in)
movement_out.connect(self._movement_out)
func _input(event: InputEvent) -> void:
if event.is_action_pressed("toggle_editor_screen"):
$CameraPreview.visible = !$CameraPreview.visible;
$CameraFullScreen.visible = !$CameraFullScreen.visible;
func _on_movements_flyout_button_toggled(toggled_on: bool) -> void:
$Movements.visible = toggled_on
func _on_flows_flyout_button_toggled(toggled_on: bool) -> void:
$FlowControls.visible = toggled_on
func _movement_in(movement, rate):
get_node("Movements/IndicatorLights/" + movement).turn_on();
func _movement_out(movement, rate):
get_node("Movements/IndicatorLights/" + movement).turn_off();
func _on_mouth_button_down() -> void:
movement_in.emit("Mouth", $FlowControls/InFlows/MouthFlow.value)
func _on_mouth_button_up() -> void:
movement_out.emit("Mouth", $FlowControls/OutFlows/MouthFlow.value)
func _on_left_ear_button_down() -> void:
movement_in.emit("Left Ear", $FlowControls/InFlows/LeftEarFlow.value)
func _on_left_ear_button_up() -> void:
movement_out.emit("Left Ear", $FlowControls/OutFlows/LeftEarFlow.value)
func _on_right_ear_button_down() -> void:
movement_in.emit("Right Ear", $FlowControls/InFlows/RightEarFlow.value)
func _on_right_ear_button_up() -> void:
movement_out.emit("Right Ear", $FlowControls/OutFlows/RightEarFlow.value)
func _on_left_eyelid_button_down() -> void:
movement_in.emit("Left Eyelid", $FlowControls/InFlows/LeftEyelidFlow.value)
func _on_left_eyelid_button_up() -> void:
movement_out.emit("Left Eyelid", $FlowControls/OutFlows/LeftEyelidFlow.value)
func _on_right_eyelid_button_down() -> void:
movement_in.emit("Right Eyelid", $FlowControls/InFlows/RightEyelidFlow.value)
func _on_right_eyelid_button_up() -> void:
movement_out.emit("Right Eyelid", $FlowControls/OutFlows/RightEyelidFlow.value)
func _on_eyes_left_button_down() -> void:
movement_in.emit("Eyes Left", $FlowControls/InFlows/EyesLeftFlow.value)
func _on_eyes_left_button_up() -> void:
movement_out.emit("Eyes Left", $FlowControls/OutFlows/EyesLeftFlow.value)
func _on_eyes_right_button_down() -> void:
movement_in.emit("Eyes Right", $FlowControls/InFlows/EyesRightFlow.value)
func _on_eyes_right_button_up() -> void:
movement_out.emit("Eyes Right", $FlowControls/OutFlows/EyesRightFlow.value)
func _on_head_left_button_down() -> void:
movement_in.emit("Head Left", $FlowControls/InFlows/HeadLeftFlow.value)
func _on_head_left_button_up() -> void:
movement_out.emit("Head Left", $FlowControls/OutFlows/HeadLeftFlow.value)
func _on_head_right_button_down() -> void:
movement_in.emit("Head Right", $FlowControls/InFlows/HeadRightFlow.value)
func _on_head_right_button_up() -> void:
movement_out.emit("Head Right", $FlowControls/OutFlows/HeadRightFlow.value)
func _on_head_up_button_down() -> void:
movement_in.emit("Head Up", $FlowControls/InFlows/HeadUpFlow.value)
func _on_head_up_button_up() -> void:
movement_out.emit("Head Up", $FlowControls/OutFlows/HeadUpFlow.value)
func _on_left_arm_up_button_down() -> void:
movement_in.emit("Left Arm Up", $FlowControls/InFlows/LeftArmUpFlow.value)
func _on_left_arm_up_button_up() -> void:
movement_out.emit("Left Arm Up", $FlowControls/OutFlows/LeftArmUpFlow.value)
func _on_left_arm_twist_button_down() -> void:
movement_in.emit("Left Arm Twist", $FlowControls/InFlows/LeftArmTwistFlow.value)
func _on_left_arm_twist_button_up() -> void:
movement_out.emit("Left Arm Twist", $FlowControls/OutFlows/LeftArmTwistFlow.value)
func _on_left_elbow_button_down() -> void:
movement_in.emit("Left Elbow", $FlowControls/InFlows/LeftElbowFlow.value)
func _on_left_elbow_button_up() -> void:
movement_out.emit("Left Elbow", $FlowControls/OutFlows/LeftElbowFlow.value)
func _on_right_arm_up_button_down() -> void:
movement_in.emit("Right Arm Up", $FlowControls/InFlows/RightArmUpFlow.value)
func _on_right_arm_up_button_up() -> void:
movement_out.emit("Right Arm Up", $FlowControls/OutFlows/RightArmUpFlow.value)
func _on_right_arm_twist_button_down() -> void:
movement_in.emit("Right Arm Twist", $FlowControls/InFlows/RightArmTwistFlow.value)
func _on_right_arm_twist_button_up() -> void:
movement_out.emit("Right Arm Twist", $FlowControls/OutFlows/RightArmTwistFlow.value)
func _on_right_elbow_button_down() -> void:
movement_in.emit("Right Elbow", $FlowControls/InFlows/RightElbowFlow.value)
func _on_right_elbow_button_up() -> void:
movement_out.emit("Right Elbow", $FlowControls/OutFlows/RightElbowFlow.value)
func _on_body_left_button_down() -> void:
movement_in.emit("Body Left", $FlowControls/InFlows/BodyLeftFlow.value)
func _on_body_left_button_up() -> void:
movement_out.emit("Body Left", $FlowControls/OutFlows/BodyLeftFlow.value)
func _on_body_right_button_down() -> void:
movement_in.emit("Body Right", $FlowControls/InFlows/BodyRightFlow.value)
func _on_body_right_button_up() -> void:
movement_out.emit("Body Right", $FlowControls/OutFlows/BodyRightFlow.value)
func _on_body_lean_button_down() -> void:
movement_in.emit("Body Lean", $FlowControls/InFlows/BodyLeanFlow.value)
func _on_body_lean_button_up() -> void:
movement_out.emit("Body Lean", $FlowControls/OutFlows/BodyLeanFlow.value)

View file

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

10
Scripts/FlowSlider.gd Normal file
View file

@ -0,0 +1,10 @@
extends Control
@export var value : float = 1.0
func _ready() -> void:
$Panel/Slider.value = self.value
func _on_slider_value_changed(value: float) -> void:
self.value = $Panel/Slider.value
$Panel/ValueLabel.text = str(self.value)

View file

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

View file

@ -0,0 +1,14 @@
extends Node3D
var animation_player
func _ready():
animation_player = $AnimationPlayer
func _movement_in(movement, rate):
animation_player.speed_scale = rate
animation_player.play(movement)
func _movement_out(movement, rate):
animation_player.speed_scale = rate
animation_player.play_backwards(movement)

View file

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

22
Scripts/IndicatorLight.gd Normal file
View file

@ -0,0 +1,22 @@
extends Control
@export var on: bool = false
func _ready() -> void:
$Green.visible = self.on
func turn_on() -> void:
self.on = true
$Green.visible = self.on
func turn_off() -> void:
self.on = false
$Green.visible = self.on
func toggle() -> void:
self.on = !self.on
$Green.visible = self.on
func set_state(value: bool) -> void:
self.on = value
$Green.visible = self.on

View file

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

BIN
UI/BlankCam.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

34
UI/BlankCam.png.import Normal file
View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://s3yr2wasxv03"
path="res://.godot/imported/BlankCam.png-3a3fce0de965b84e3e9f90ae65ca082a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/BlankCam.png"
dest_files=["res://.godot/imported/BlankCam.png-3a3fce0de965b84e3e9f90ae65ca082a.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
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

34
icon.png.import Normal file
View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhjuhhilgmxq3"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.png"
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.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

37
project.godot Normal file
View file

@ -0,0 +1,37 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Pneumatic Plaything"
config/version="v0.1"
run/main_scene="uid://oiehbor0dlqx"
config/features=PackedStringArray("4.4", "GL Compatibility")
boot_splash/show_image=false
config/icon="uid://dhjuhhilgmxq3"
[display]
window/size/viewport_width=1280
window/size/viewport_height=720
[input]
toggle_editor_screen={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
]
}
[rendering]
renderer/rendering_method="gl_compatibility"
renderer/rendering_method.mobile="gl_compatibility"