modular everything
This commit is contained in:
parent
e4bb42cf6a
commit
297b5e53b6
29 changed files with 660 additions and 1697 deletions
|
@ -4,12 +4,12 @@ importer="scene"
|
||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://bhoeqcsdb0fx2"
|
uid="uid://bhoeqcsdb0fx2"
|
||||||
path="res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.scn"
|
path="res://.godot/imported/HelenHouse-Room.glb-d94c54c0b353197dae218f85f4b80b38.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Models/Room.glb"
|
source_file="res://Models/HelenHouse-Room.glb"
|
||||||
dest_files=["res://.godot/imported/Room.glb-057b6820edeabb93a1fe769eeffdac34.scn"]
|
dest_files=["res://.godot/imported/HelenHouse-Room.glb-d94c54c0b353197dae218f85f4b80b38.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
|
@ -4,12 +4,12 @@ importer="scene"
|
||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://btvomf1ayoypu"
|
uid="uid://btvomf1ayoypu"
|
||||||
path="res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.scn"
|
path="res://.godot/imported/HelenHouse-Stage.glb-cec5fe70b1f2a888ac5fe9fa252e083f.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Models/Stage.glb"
|
source_file="res://Models/HelenHouse-Stage.glb"
|
||||||
dest_files=["res://.godot/imported/Stage.glb-38d445218888b57ffbbfd79eb6fd72c0.scn"]
|
dest_files=["res://.godot/imported/HelenHouse-Stage.glb-cec5fe70b1f2a888ac5fe9fa252e083f.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
19
Scenes/GUI/Controls/CameraButton.tscn
Normal file
19
Scenes/GUI/Controls/CameraButton.tscn
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://bt7bxdgv6u8ev"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dfoog0y2bh7tk" path="res://Scripts/CameraButton.gd" id="1_3y3s1"]
|
||||||
|
|
||||||
|
[node name="CameraButton" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_right = 136.0
|
||||||
|
offset_bottom = 32.0
|
||||||
|
script = ExtResource("1_3y3s1")
|
||||||
|
|
||||||
|
[node name="Button" type="Button" parent="."]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_right = 132.0
|
||||||
|
offset_bottom = 32.0
|
||||||
|
text = "Angle"
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
|
87
Scenes/GUI/Controls/FlowControl.tscn
Normal file
87
Scenes/GUI/Controls/FlowControl.tscn
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://blg1c3v4o44of"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://blhv0kms1sleu" path="res://Scripts/FlowControl.gd" id="1_6sy3t"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6sy3t"]
|
||||||
|
border_width_left = 1
|
||||||
|
border_color = Color(0.0941176, 0.0941176, 0.0941176, 1)
|
||||||
|
|
||||||
|
[node name="FlowControl" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_right = 512.0
|
||||||
|
offset_bottom = 40.0
|
||||||
|
script = ExtResource("1_6sy3t")
|
||||||
|
|
||||||
|
[node name="Panel" type="Panel" parent="."]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 512.0
|
||||||
|
offset_bottom = 40.0
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Panel"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 167.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
text = "Movement"
|
||||||
|
vertical_alignment = 1
|
||||||
|
clip_text = true
|
||||||
|
text_overrun_behavior = 3
|
||||||
|
|
||||||
|
[node name="InSlider" type="HSlider" parent="Panel"]
|
||||||
|
layout_mode = 2
|
||||||
|
offset_left = 171.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 235.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
size_flags_vertical = 1
|
||||||
|
max_value = 5.0
|
||||||
|
step = 0.1
|
||||||
|
value = 1.0
|
||||||
|
|
||||||
|
[node name="InStepper" type="SpinBox" parent="Panel"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 239.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 335.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
max_value = 5.0
|
||||||
|
step = 0.1
|
||||||
|
value = 1.0
|
||||||
|
prefix = "In:"
|
||||||
|
|
||||||
|
[node name="OutSlider" type="HSlider" parent="Panel"]
|
||||||
|
layout_mode = 2
|
||||||
|
offset_left = 344.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 408.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
size_flags_vertical = 1
|
||||||
|
max_value = 5.0
|
||||||
|
step = 0.1
|
||||||
|
value = 1.0
|
||||||
|
|
||||||
|
[node name="OutStepper" type="SpinBox" parent="Panel"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 412.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 508.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
max_value = 5.0
|
||||||
|
step = 0.1
|
||||||
|
value = 1.0
|
||||||
|
prefix = "Out:"
|
||||||
|
|
||||||
|
[node name="VSeparator" type="VSeparator" parent="Panel"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 337.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 341.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
theme_override_styles/separator = SubResource("StyleBoxFlat_6sy3t")
|
||||||
|
|
||||||
|
[connection signal="value_changed" from="Panel/InSlider" to="." method="_on_in_slider_value_changed"]
|
||||||
|
[connection signal="value_changed" from="Panel/InStepper" to="." method="_on_in_stepper_value_changed"]
|
||||||
|
[connection signal="value_changed" from="Panel/OutSlider" to="." method="_on_out_slider_value_changed"]
|
||||||
|
[connection signal="value_changed" from="Panel/OutStepper" to="." method="_on_out_stepper_value_changed"]
|
|
@ -1,42 +0,0 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://blg1c3v4o44of"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://blhv0kms1sleu" path="res://Scripts/FlowSlider.gd" id="1_q164o"]
|
|
||||||
|
|
||||||
[node name="FlowSlider" type="Control"]
|
|
||||||
layout_mode = 3
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_right = -1280.0
|
|
||||||
offset_bottom = -720.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
script = ExtResource("1_q164o")
|
|
||||||
|
|
||||||
[node name="Panel" type="Panel" parent="."]
|
|
||||||
layout_mode = 0
|
|
||||||
offset_right = 96.0
|
|
||||||
offset_bottom = 32.0
|
|
||||||
|
|
||||||
[node name="Slider" type="HSlider" parent="Panel"]
|
|
||||||
layout_mode = 2
|
|
||||||
offset_left = 4.0
|
|
||||||
offset_right = 64.0
|
|
||||||
offset_bottom = 32.0
|
|
||||||
size_flags_vertical = 1
|
|
||||||
max_value = 5.0
|
|
||||||
step = 0.1
|
|
||||||
value = 1.0
|
|
||||||
|
|
||||||
[node name="ValueLabel" type="Label" parent="Panel"]
|
|
||||||
layout_mode = 2
|
|
||||||
offset_left = 64.0
|
|
||||||
offset_right = 96.0
|
|
||||||
offset_bottom = 32.0
|
|
||||||
size_flags_horizontal = 8
|
|
||||||
size_flags_vertical = 1
|
|
||||||
text = "1.0"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|
||||||
[connection signal="value_changed" from="Panel/Slider" to="." method="_on_slider_value_changed"]
|
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=4 format=3 uid="uid://cbf3x44mvo701"]
|
[gd_scene load_steps=4 format=3 uid="uid://cbf3x44mvo701"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cg157l4uo7ki8" path="res://Scripts/IndicatorLight.gd" id="1_l718a"]
|
[ext_resource type="Script" uid="uid://cg157l4uo7ki8" path="res://Scripts/MovementButton.gd" id="1_l718a"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1pi70"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1pi70"]
|
||||||
bg_color = Color(0, 0, 0, 1)
|
bg_color = Color(0, 0, 0, 1)
|
||||||
|
@ -16,23 +16,26 @@ corner_radius_top_right = 12
|
||||||
corner_radius_bottom_right = 12
|
corner_radius_bottom_right = 12
|
||||||
corner_radius_bottom_left = 12
|
corner_radius_bottom_left = 12
|
||||||
|
|
||||||
[node name="IndicatorLight" type="Control"]
|
[node name="MovementButton" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 0
|
||||||
anchor_right = 1.0
|
offset_right = 256.0
|
||||||
anchor_bottom = 1.0
|
offset_bottom = 40.0
|
||||||
offset_right = -1280.0
|
|
||||||
offset_bottom = -720.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
script = ExtResource("1_l718a")
|
script = ExtResource("1_l718a")
|
||||||
|
|
||||||
[node name="Container" type="Panel" parent="."]
|
[node name="Panel" type="Panel" parent="."]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 32.0
|
offset_right = 256.0
|
||||||
offset_bottom = 32.0
|
offset_bottom = 40.0
|
||||||
|
|
||||||
[node name="Black" type="Panel" parent="."]
|
[node name="IndicatorPanel" type="Panel" parent="Panel"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 220.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 252.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
|
||||||
|
[node name="Black" type="Panel" parent="Panel/IndicatorPanel"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 4.0
|
offset_left = 4.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
|
@ -40,10 +43,22 @@ offset_right = 28.0
|
||||||
offset_bottom = 28.0
|
offset_bottom = 28.0
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_1pi70")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_1pi70")
|
||||||
|
|
||||||
[node name="Green" type="Panel" parent="."]
|
[node name="Green" type="Panel" parent="Panel/IndicatorPanel"]
|
||||||
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 4.0
|
offset_left = 4.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 28.0
|
offset_right = 28.0
|
||||||
offset_bottom = 28.0
|
offset_bottom = 28.0
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_5m0fm")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_5m0fm")
|
||||||
|
|
||||||
|
[node name="Button" type="Button" parent="Panel"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 216.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
text = "Movement"
|
||||||
|
|
||||||
|
[connection signal="button_down" from="Panel/Button" to="." method="_on_button_button_down"]
|
||||||
|
[connection signal="button_up" from="Panel/Button" to="." method="_on_button_button_up"]
|
|
@ -1,8 +1,9 @@
|
||||||
[gd_scene load_steps=5 format=3 uid="uid://dtkqaw5533rxy"]
|
[gd_scene load_steps=6 format=3 uid="uid://dtkqaw5533rxy"]
|
||||||
|
|
||||||
[ext_resource type="StyleBox" uid="uid://d17amc25o63p1" path="res://UI/Themes/MovementsPanelOverride.tres" id="1_d1xev"]
|
[ext_resource type="StyleBox" uid="uid://d17amc25o63p1" path="res://UI/Themes/MovementsPanelOverride.tres" id="1_d1xev"]
|
||||||
[ext_resource type="Script" uid="uid://tn3aaldu7mm2" path="res://Scripts/MovementRow.gd" id="1_rm5t0"]
|
[ext_resource type="Script" uid="uid://tn3aaldu7mm2" path="res://Scripts/MovementRow.gd" id="1_rm5t0"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cn5xdrxdv622h" path="res://UI/SmallX.png" id="2_e7anl"]
|
[ext_resource type="Texture2D" uid="uid://cn5xdrxdv622h" path="res://UI/SmallX.png" id="2_e7anl"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://d007317123e27" path="res://UI/SmallLock.png" id="3_ldhn8"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rm5t0"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rm5t0"]
|
||||||
bg_color = Color(0, 1, 0, 1)
|
bg_color = Color(0, 1, 0, 1)
|
||||||
|
@ -36,6 +37,8 @@ offset_bottom = 36.0
|
||||||
tooltip_text = "Click to bind a key to this movement"
|
tooltip_text = "Click to bind a key to this movement"
|
||||||
text = "0 - Name (Unbound)"
|
text = "0 - Name (Unbound)"
|
||||||
alignment = 0
|
alignment = 0
|
||||||
|
text_overrun_behavior = 3
|
||||||
|
clip_text = true
|
||||||
|
|
||||||
[node name="ClearButton" type="Button" parent="."]
|
[node name="ClearButton" type="Button" parent="."]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
@ -46,6 +49,16 @@ offset_bottom = 20.0
|
||||||
tooltip_text = "Clear this row"
|
tooltip_text = "Clear this row"
|
||||||
icon = ExtResource("2_e7anl")
|
icon = ExtResource("2_e7anl")
|
||||||
|
|
||||||
|
[node name="LockButton" type="Button" parent="."]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 244.0
|
||||||
|
offset_top = 20.0
|
||||||
|
offset_right = 260.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
tooltip_text = "Prevent recording over"
|
||||||
|
toggle_mode = true
|
||||||
|
icon = ExtResource("3_ldhn8")
|
||||||
|
|
||||||
[node name="MovementsBG" type="Panel" parent="."]
|
[node name="MovementsBG" type="Panel" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
|
|
|
@ -1,19 +1,18 @@
|
||||||
[gd_scene load_steps=27 format=3 uid="uid://oiehbor0dlqx"]
|
[gd_scene load_steps=26 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="PackedScene" uid="uid://btre5j66mpchy" path="res://Scenes/Stages/Helen House/HelenHouse.tscn" id="2_p1t5g"]
|
|
||||||
[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://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://dhx2v2fd0egxd" path="res://UI/FastBackwards.png" id="4_wy7jo"]
|
[ext_resource type="Texture2D" uid="uid://dhx2v2fd0egxd" path="res://UI/FastBackwards.png" id="4_wy7jo"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cttgtbu1xllwq" path="res://UI/Stop.png" id="8_20noo"]
|
[ext_resource type="Texture2D" uid="uid://cttgtbu1xllwq" path="res://UI/Stop.png" id="8_20noo"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dsr03w7r667fw" path="res://UI/FastForward.png" id="8_v0ton"]
|
[ext_resource type="Texture2D" uid="uid://dsr03w7r667fw" path="res://UI/FastForward.png" id="8_v0ton"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bphwtliq2ahus" path="res://UI/SkipForward.png" id="9_20noo"]
|
[ext_resource type="Texture2D" uid="uid://bphwtliq2ahus" path="res://UI/SkipForward.png" id="9_20noo"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ckg2ihy105ttj" path="res://UI/Record.png" id="10_wy7jo"]
|
[ext_resource type="Texture2D" uid="uid://ckg2ihy105ttj" path="res://UI/Record.png" id="10_wy7jo"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dyuhywnk8heav" path="res://Scenes/Stages/Helen House/HelenHouseMovementRows.tscn" id="12_20noo"]
|
[ext_resource type="ButtonGroup" uid="uid://bij2tonqeslpt" path="res://Scenes/GUI/FlyoutButtonGroup.tres" id="13_wy7jo"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dwhrame6udwbh" path="res://Scenes/Stages/Helen House/HelenHouseFlyout.tscn" id="13_wy7jo"]
|
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_g6u4d"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_g6u4d"]
|
||||||
viewport_path = NodePath("SubViewport")
|
viewport_path = NodePath("SubViewport")
|
||||||
|
@ -115,8 +114,6 @@ dialog_text = "This showtape is not compatible with the currently selected stage
|
||||||
[node name="SubViewport" type="SubViewport" parent="."]
|
[node name="SubViewport" type="SubViewport" parent="."]
|
||||||
size = Vector2i(1280, 720)
|
size = Vector2i(1280, 720)
|
||||||
|
|
||||||
[node name="HelenHouse" parent="SubViewport" instance=ExtResource("2_p1t5g")]
|
|
||||||
|
|
||||||
[node name="ColorRect" type="ColorRect" parent="."]
|
[node name="ColorRect" type="ColorRect" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
@ -126,7 +123,22 @@ 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 = 5
|
||||||
|
stretch_mode = 6
|
||||||
|
|
||||||
[node name="CameraPreview" type="TextureRect" parent="."]
|
[node name="CameraPreview" type="TextureRect" parent="."]
|
||||||
|
visible = false
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
|
@ -178,7 +190,7 @@ offset_right = 260.0
|
||||||
offset_bottom = 36.0
|
offset_bottom = 36.0
|
||||||
selected = 0
|
selected = 0
|
||||||
item_count = 1
|
item_count = 1
|
||||||
popup/item_0/text = "Helen House (Custom)"
|
popup/item_0/text = "Helen House"
|
||||||
popup/item_0/id = 0
|
popup/item_0/id = 0
|
||||||
|
|
||||||
[node name="MenuButton" type="MenuButton" parent="MenuBar"]
|
[node name="MenuButton" type="MenuButton" parent="MenuBar"]
|
||||||
|
@ -226,7 +238,7 @@ offset_right = -8.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.3"
|
text = "Pneumatic Plaything v0.4"
|
||||||
horizontal_alignment = 2
|
horizontal_alignment = 2
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
@ -394,14 +406,14 @@ grow_vertical = 2
|
||||||
|
|
||||||
[node name="VScrollBar" type="VScrollBar" parent="SequencerPanel/TimelinePanel"]
|
[node name="VScrollBar" type="VScrollBar" parent="SequencerPanel/TimelinePanel"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = 9
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_left = 4.0
|
offset_left = 4.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 12.0
|
offset_right = 12.0
|
||||||
offset_bottom = -4.0
|
offset_bottom = -4.0
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
max_value = 31.0
|
max_value = 0.0
|
||||||
step = 1.0
|
step = 1.0
|
||||||
|
|
||||||
[node name="InvisibleMask" type="Control" parent="SequencerPanel/TimelinePanel"]
|
[node name="InvisibleMask" type="Control" parent="SequencerPanel/TimelinePanel"]
|
||||||
|
@ -417,32 +429,180 @@ offset_bottom = -4.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="RowsHandle" type="Control" parent="SequencerPanel/TimelinePanel/InvisibleMask"]
|
[node name="MovementRowsContainer" type="Control" parent="SequencerPanel/TimelinePanel/InvisibleMask"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 10
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="HelenHouseMovementRows" parent="SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle" instance=ExtResource("12_20noo")]
|
[node name="Playhead" type="VSeparator" parent="SequencerPanel/TimelinePanel/InvisibleMask"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
anchors_preset = 9
|
||||||
[node name="VSeparator" type="VSeparator" parent="SequencerPanel/TimelinePanel"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_left = 398.0
|
offset_left = 388.0
|
||||||
offset_right = 4.0
|
offset_right = 392.0
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="HelenHouseFlyout" parent="." instance=ExtResource("13_wy7jo")]
|
[node name="FlyoutPanel" type="Control" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = 4.0
|
offset_left = 4.0
|
||||||
offset_top = 48.0
|
offset_top = 48.0
|
||||||
offset_right = 140.0
|
offset_right = 140.0
|
||||||
offset_bottom = 48.0
|
offset_bottom = 48.0
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="FlyoutButtons" type="Panel" parent="FlyoutPanel"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 9
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_right = 136.0
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="MovementsFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 132.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
toggle_mode = true
|
||||||
|
button_group = ExtResource("13_wy7jo")
|
||||||
|
text = "Movements"
|
||||||
|
|
||||||
|
[node name="FlowsFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 40.0
|
||||||
|
offset_right = 132.0
|
||||||
|
offset_bottom = 72.0
|
||||||
|
toggle_mode = true
|
||||||
|
button_group = ExtResource("13_wy7jo")
|
||||||
|
text = "Flows"
|
||||||
|
|
||||||
|
[node name="CameraFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 76.0
|
||||||
|
offset_right = 132.0
|
||||||
|
offset_bottom = 108.0
|
||||||
|
toggle_mode = true
|
||||||
|
button_group = ExtResource("13_wy7jo")
|
||||||
|
text = "Camera"
|
||||||
|
|
||||||
|
[node name="CosmeticsFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 112.0
|
||||||
|
offset_right = 132.0
|
||||||
|
offset_bottom = 144.0
|
||||||
|
toggle_mode = true
|
||||||
|
button_group = ExtResource("13_wy7jo")
|
||||||
|
text = "Cosmetics"
|
||||||
|
|
||||||
|
[node name="StageFlyoutButton" type="Button" parent="FlyoutPanel/FlyoutButtons"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 148.0
|
||||||
|
offset_right = 132.0
|
||||||
|
offset_bottom = 180.0
|
||||||
|
toggle_mode = true
|
||||||
|
button_group = ExtResource("13_wy7jo")
|
||||||
|
text = "Stage"
|
||||||
|
|
||||||
|
[node name="Movements" type="Panel" parent="FlyoutPanel"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 140.0
|
||||||
|
offset_right = 416.0
|
||||||
|
offset_bottom = 392.0
|
||||||
|
|
||||||
|
[node name="InvisibleMask" type="Control" parent="FlyoutPanel/Movements"]
|
||||||
|
clip_contents = true
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 260.0
|
||||||
|
offset_bottom = 388.0
|
||||||
|
|
||||||
|
[node name="MovementHandle" type="Control" parent="FlyoutPanel/Movements/InvisibleMask"]
|
||||||
|
anchors_preset = 0
|
||||||
|
|
||||||
|
[node name="VScrollBar" type="VScrollBar" parent="FlyoutPanel/Movements"]
|
||||||
|
offset_left = 264.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 272.0
|
||||||
|
offset_bottom = 388.0
|
||||||
|
max_value = 0.0
|
||||||
|
step = 1.0
|
||||||
|
|
||||||
|
[node name="FlowControls" type="Panel" parent="FlyoutPanel"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 140.0
|
||||||
|
offset_right = 672.0
|
||||||
|
offset_bottom = 392.0
|
||||||
|
|
||||||
|
[node name="InvisibleMask" type="Control" parent="FlyoutPanel/FlowControls"]
|
||||||
|
clip_contents = true
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 516.0
|
||||||
|
offset_bottom = 388.0
|
||||||
|
|
||||||
|
[node name="FlowHandle" type="Control" parent="FlyoutPanel/FlowControls/InvisibleMask"]
|
||||||
|
anchors_preset = 0
|
||||||
|
|
||||||
|
[node name="VScrollBar" type="VScrollBar" parent="FlyoutPanel/FlowControls"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 520.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 528.0
|
||||||
|
offset_bottom = 388.0
|
||||||
|
max_value = 0.0
|
||||||
|
step = 1.0
|
||||||
|
|
||||||
|
[node name="Camera" type="Panel" parent="FlyoutPanel"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 140.0
|
||||||
|
offset_right = 276.0
|
||||||
|
offset_bottom = 4.0
|
||||||
|
|
||||||
|
[node name="Cosmetics" type="Panel" parent="FlyoutPanel"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 140.0
|
||||||
|
offset_right = 396.0
|
||||||
|
offset_bottom = 64.0
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="FlyoutPanel/Cosmetics"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 228.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
text = "No options for this stage :("
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Stage" type="Panel" parent="FlyoutPanel"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 140.0
|
||||||
|
offset_right = 396.0
|
||||||
|
offset_bottom = 64.0
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="FlyoutPanel/Stage"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 228.0
|
||||||
|
offset_bottom = 36.0
|
||||||
|
text = "No options for this stage :("
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="ControlsScreen" type="Control" parent="."]
|
[node name="ControlsScreen" type="Control" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
@ -941,6 +1101,7 @@ expand_mode = 2
|
||||||
[connection signal="file_selected" from="SaveShowtapeFileDialog" to="." method="_on_save_showtape_file_dialog_file_selected"]
|
[connection signal="file_selected" from="SaveShowtapeFileDialog" to="." method="_on_save_showtape_file_dialog_file_selected"]
|
||||||
[connection signal="confirmed" from="NewOverwriteConfirmationDialog" to="." method="_on_new_overwrite_confirmation_dialog_confirmed"]
|
[connection signal="confirmed" from="NewOverwriteConfirmationDialog" to="." method="_on_new_overwrite_confirmation_dialog_confirmed"]
|
||||||
[connection signal="confirmed" from="LoadOverwriteConfirmationDialog" to="." method="_on_load_overwrite_confirmation_dialog_confirmed"]
|
[connection signal="confirmed" from="LoadOverwriteConfirmationDialog" to="." method="_on_load_overwrite_confirmation_dialog_confirmed"]
|
||||||
|
[connection signal="item_selected" from="MenuBar/StageSelector" to="." method="_on_stage_selector_item_selected"]
|
||||||
[connection signal="pressed" from="MenuBar/ControlsButton" to="." method="_on_controls_button_pressed"]
|
[connection signal="pressed" from="MenuBar/ControlsButton" to="." method="_on_controls_button_pressed"]
|
||||||
[connection signal="pressed" from="MenuBar/CreditsButton" to="." method="_on_credits_button_pressed"]
|
[connection signal="pressed" from="MenuBar/CreditsButton" to="." method="_on_credits_button_pressed"]
|
||||||
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepBackwardsButton" to="." method="_on_step_backwards_button_pressed"]
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepBackwardsButton" to="." method="_on_step_backwards_button_pressed"]
|
||||||
|
@ -953,6 +1114,13 @@ expand_mode = 2
|
||||||
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepForwardButton" to="." method="_on_step_forward_button_pressed"]
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepForwardButton" to="." method="_on_step_forward_button_pressed"]
|
||||||
[connection signal="toggled" from="SequencerPanel/TransportControls/RecordButton" to="." method="_on_record_button_toggled"]
|
[connection signal="toggled" from="SequencerPanel/TransportControls/RecordButton" to="." method="_on_record_button_toggled"]
|
||||||
[connection signal="value_changed" from="SequencerPanel/TimelinePanel/VScrollBar" to="." method="_on_v_scroll_bar_value_changed"]
|
[connection signal="value_changed" from="SequencerPanel/TimelinePanel/VScrollBar" to="." method="_on_v_scroll_bar_value_changed"]
|
||||||
|
[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/MovementsFlyoutButton" to="." method="_on_movements_flyout_button_toggled"]
|
||||||
|
[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/FlowsFlyoutButton" to="." method="_on_flows_flyout_button_toggled"]
|
||||||
|
[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/CameraFlyoutButton" to="." method="_on_camera_flyout_button_toggled"]
|
||||||
|
[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/CosmeticsFlyoutButton" to="." method="_on_cosmetics_flyout_button_toggled"]
|
||||||
|
[connection signal="toggled" from="FlyoutPanel/FlyoutButtons/StageFlyoutButton" to="." method="_on_stage_flyout_button_toggled"]
|
||||||
|
[connection signal="value_changed" from="FlyoutPanel/Movements/VScrollBar" to="." method="_on_movement_v_scroll_bar_value_changed"]
|
||||||
|
[connection signal="value_changed" from="FlyoutPanel/FlowControls/VScrollBar" to="." method="_on_flow_v_scroll_bar_value_changed"]
|
||||||
[connection signal="pressed" from="ControlsScreen/InputEater" to="." method="_on_input_eater_pressed"]
|
[connection signal="pressed" from="ControlsScreen/InputEater" to="." method="_on_input_eater_pressed"]
|
||||||
[connection signal="pressed" from="CreditsScreen/InputEater" to="." method="_on_input_eater_pressed"]
|
[connection signal="pressed" from="CreditsScreen/InputEater" to="." method="_on_input_eater_pressed"]
|
||||||
[connection signal="pressed" from="ShowtapeNewScreen/InputEater" to="." method="_on_input_eater_pressed"]
|
[connection signal="pressed" from="ShowtapeNewScreen/InputEater" to="." method="_on_input_eater_pressed"]
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,321 +0,0 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://dyuhywnk8heav"]
|
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dtkqaw5533rxy" path="res://Scenes/GUI/Controls/MovementRow.tscn" id="1_g2q8r"]
|
|
||||||
|
|
||||||
[node name="HelenHouseMovementRows" type="Control"]
|
|
||||||
layout_mode = 3
|
|
||||||
anchors_preset = 10
|
|
||||||
anchor_right = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
|
|
||||||
[node name="MouthRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 1
|
|
||||||
movement_name = "Mouth"
|
|
||||||
|
|
||||||
[node name="LeftEarRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 44.0
|
|
||||||
offset_bottom = 84.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 2
|
|
||||||
movement_name = "Left Ear"
|
|
||||||
|
|
||||||
[node name="RightEarRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 88.0
|
|
||||||
offset_bottom = 128.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 3
|
|
||||||
movement_name = "Right Ear"
|
|
||||||
|
|
||||||
[node name="LeftEyelidRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 132.0
|
|
||||||
offset_bottom = 172.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 4
|
|
||||||
movement_name = "Left Eyelid"
|
|
||||||
|
|
||||||
[node name="RightEyelidRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 176.0
|
|
||||||
offset_bottom = 216.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 5
|
|
||||||
movement_name = "Right Eyelid"
|
|
||||||
|
|
||||||
[node name="EyesLeftRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 220.0
|
|
||||||
offset_bottom = 260.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 6
|
|
||||||
movement_name = "Eyes Left"
|
|
||||||
|
|
||||||
[node name="EyesRightRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 264.0
|
|
||||||
offset_bottom = 304.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 7
|
|
||||||
movement_name = "Eyes Right"
|
|
||||||
|
|
||||||
[node name="HeadLeftRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 308.0
|
|
||||||
offset_bottom = 348.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 8
|
|
||||||
movement_name = "Head Left"
|
|
||||||
|
|
||||||
[node name="HeadRightRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 352.0
|
|
||||||
offset_bottom = 392.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 9
|
|
||||||
movement_name = "Head Right"
|
|
||||||
|
|
||||||
[node name="HeadUpRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 396.0
|
|
||||||
offset_bottom = 436.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 10
|
|
||||||
movement_name = "Head Up"
|
|
||||||
|
|
||||||
[node name="LeftArmUpRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 440.0
|
|
||||||
offset_bottom = 480.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 11
|
|
||||||
movement_name = "Left Arm Up"
|
|
||||||
|
|
||||||
[node name="LeftArmTwistRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 484.0
|
|
||||||
offset_bottom = 524.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 12
|
|
||||||
movement_name = "Left Arm Twist"
|
|
||||||
|
|
||||||
[node name="LeftElbowRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 528.0
|
|
||||||
offset_bottom = 568.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 13
|
|
||||||
movement_name = "Left Elbow"
|
|
||||||
|
|
||||||
[node name="RightArmUpRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 572.0
|
|
||||||
offset_bottom = 612.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 14
|
|
||||||
movement_name = "Right Arm Up"
|
|
||||||
|
|
||||||
[node name="RightArmTwistRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 616.0
|
|
||||||
offset_bottom = 656.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 15
|
|
||||||
movement_name = "Right Arm Twist"
|
|
||||||
|
|
||||||
[node name="RightElbowRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 660.0
|
|
||||||
offset_bottom = 700.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 16
|
|
||||||
movement_name = "Right Elbow"
|
|
||||||
|
|
||||||
[node name="BodyLeftRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 704.0
|
|
||||||
offset_bottom = 744.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 17
|
|
||||||
movement_name = "Body Left"
|
|
||||||
|
|
||||||
[node name="BodyRightRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 748.0
|
|
||||||
offset_bottom = 788.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 18
|
|
||||||
movement_name = "Body Right"
|
|
||||||
|
|
||||||
[node name="BodyLeanRow" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 792.0
|
|
||||||
offset_bottom = 832.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 19
|
|
||||||
movement_name = "Body Lean"
|
|
||||||
|
|
||||||
[node name="Unused20" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 836.0
|
|
||||||
offset_bottom = 876.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 20
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused21" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 880.0
|
|
||||||
offset_bottom = 920.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 21
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused22" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 924.0
|
|
||||||
offset_bottom = 964.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 22
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused23" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 968.0
|
|
||||||
offset_bottom = 1008.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 23
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused24" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1012.0
|
|
||||||
offset_bottom = 1052.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 24
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused25" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1056.0
|
|
||||||
offset_bottom = 1096.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 25
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused26" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1100.0
|
|
||||||
offset_bottom = 1140.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 26
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused27" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1144.0
|
|
||||||
offset_bottom = 1184.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 27
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused28" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1188.0
|
|
||||||
offset_bottom = 1228.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 28
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused29" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1232.0
|
|
||||||
offset_bottom = 1272.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 29
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused30" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1276.0
|
|
||||||
offset_bottom = 1316.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 30
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused31" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1320.0
|
|
||||||
offset_bottom = 1360.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 31
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
||||||
|
|
||||||
[node name="Unused32" parent="." instance=ExtResource("1_g2q8r")]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = -1
|
|
||||||
offset_top = 1364.0
|
|
||||||
offset_bottom = 1404.0
|
|
||||||
grow_horizontal = 1
|
|
||||||
movement_bit = 32
|
|
||||||
movement_name = "Unused"
|
|
||||||
flow_path = "None"
|
|
||||||
animatronic_path = "None"
|
|
|
@ -1,30 +1,30 @@
|
||||||
[gd_scene load_steps=6 format=3 uid="uid://btre5j66mpchy"]
|
[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="PackedScene" uid="uid://f0fkcs7erhop" path="res://Models/3stHelen.glb" id="1_s1mol"]
|
||||||
[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/HelenController.gd" id="3_e2vvs"]
|
[ext_resource type="Script" uid="uid://bu68w4jnh0n2b" path="res://Scripts/AnimatronicController.gd" id="2_odcb6"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bhoeqcsdb0fx2" path="res://Models/Room.glb" id="4_pv43k"]
|
[ext_resource type="PackedScene" uid="uid://bhoeqcsdb0fx2" path="res://Models/HelenHouse-Room.glb" id="3_e7oou"]
|
||||||
[ext_resource type="PackedScene" uid="uid://btvomf1ayoypu" path="res://Models/Stage.glb" id="5_afett"]
|
[ext_resource type="PackedScene" uid="uid://btvomf1ayoypu" path="res://Models/HelenHouse-Stage.glb" id="4_e2vvs"]
|
||||||
|
|
||||||
[sub_resource type="Environment" id="Environment_axk5g"]
|
[sub_resource type="Environment" id="Environment_axk5g"]
|
||||||
ambient_light_source = 1
|
ambient_light_source = 1
|
||||||
|
|
||||||
[node name="HelenHouse" type="Node3D"]
|
[node name="HelenHouse" type="Node3D"]
|
||||||
|
|
||||||
[node name="3stHelen" parent="." instance=ExtResource("2_e7oou")]
|
[node name="Helen" parent="." instance=ExtResource("1_s1mol")]
|
||||||
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0.25, 0)
|
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0.25, 0)
|
||||||
script = ExtResource("3_e2vvs")
|
script = ExtResource("2_odcb6")
|
||||||
|
|
||||||
[node name="Room" parent="." instance=ExtResource("4_pv43k")]
|
[node name="Room" parent="." instance=ExtResource("3_e7oou")]
|
||||||
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
|
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
|
||||||
|
|
||||||
[node name="Stage" parent="." instance=ExtResource("5_afett")]
|
[node name="Stage" parent="." instance=ExtResource("4_e2vvs")]
|
||||||
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
|
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
|
||||||
|
|
||||||
[node name="Camera 1" type="Camera3D" parent="."]
|
[node name="Angle 1" type="Camera3D" parent="."]
|
||||||
transform = Transform3D(-1, 1.31602e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -3)
|
transform = Transform3D(-1, 1.31602e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -3)
|
||||||
fov = 60.0
|
fov = 60.0
|
||||||
|
|
||||||
[node name="Camera 2" type="Camera3D" parent="."]
|
[node name="Angle 2" type="Camera3D" parent="."]
|
||||||
transform = Transform3D(-1, 1.31602e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -1)
|
transform = Transform3D(-1, 1.31602e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -1)
|
||||||
fov = 60.0
|
fov = 60.0
|
||||||
|
|
|
@ -4,27 +4,7 @@ var animation_player : AnimationPlayer
|
||||||
var animation_tree : AnimationTree
|
var animation_tree : AnimationTree
|
||||||
var blend_tree : AnimationNodeBlendTree
|
var blend_tree : AnimationNodeBlendTree
|
||||||
|
|
||||||
var movement_states = {
|
var movement_states : Dictionary
|
||||||
"Mouth": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Left Ear": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Right Ear": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Left Eyelid": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Right Eyelid": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Eyes Left": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Eyes Right": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Head Left": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Head Right": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Head Up": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Left Arm Up": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Left Arm Twist": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Left Elbow": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Right Arm Up": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Right Arm Twist": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Right Elbow": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Body Left": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Body Right": [false, 0.0, 0.0, 0.0],
|
|
||||||
"Body Lean": [false, 0.0, 0.0, 0.0],
|
|
||||||
}
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
animation_player = $AnimationPlayer
|
animation_player = $AnimationPlayer
|
||||||
|
@ -37,10 +17,13 @@ func _ready():
|
||||||
animation_tree.active = true
|
animation_tree.active = true
|
||||||
blend_tree = animation_tree.tree_root as AnimationNodeBlendTree
|
blend_tree = animation_tree.tree_root as AnimationNodeBlendTree
|
||||||
|
|
||||||
#animation_player.speed_scale = 0
|
animation_player.speed_scale = 0
|
||||||
|
|
||||||
var animations = animation_player.get_animation_list()
|
var animations = animation_player.get_animation_list()
|
||||||
|
|
||||||
|
for animation in animations:
|
||||||
|
movement_states[animation] = [false, 0.0, 0.0, 0.0]
|
||||||
|
|
||||||
var prev_name = "Anim_" + animations[0]
|
var prev_name = "Anim_" + animations[0]
|
||||||
var old_time_name = "Time_" + animations[0]
|
var old_time_name = "Time_" + animations[0]
|
||||||
var old_seek_name = "Seek_" + animations[0]
|
var old_seek_name = "Seek_" + animations[0]
|
||||||
|
@ -78,8 +61,8 @@ func _ready():
|
||||||
var add_node := AnimationNodeAdd2.new()
|
var add_node := AnimationNodeAdd2.new()
|
||||||
blend_tree.add_node(add_name, add_node)
|
blend_tree.add_node(add_name, add_node)
|
||||||
|
|
||||||
blend_tree.connect_node(time_name,0,anim_name)
|
blend_tree.connect_node(time_name, 0, anim_name)
|
||||||
blend_tree.connect_node(seek_name,0,time_name)
|
blend_tree.connect_node(seek_name, 0, time_name)
|
||||||
blend_tree.connect_node(add_name, 0, prev_name)
|
blend_tree.connect_node(add_name, 0, prev_name)
|
||||||
blend_tree.connect_node(add_name, 1, seek_name)
|
blend_tree.connect_node(add_name, 1, seek_name)
|
||||||
prev_name = add_name
|
prev_name = add_name
|
10
Scripts/CameraButton.gd
Normal file
10
Scripts/CameraButton.gd
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
@export var camera : String
|
||||||
|
@export var base_scene_path : String
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$Button.text = camera
|
||||||
|
|
||||||
|
func _on_button_pressed() -> void:
|
||||||
|
get_node(base_scene_path + camera).current = true;
|
1
Scripts/CameraButton.gd.uid
Normal file
1
Scripts/CameraButton.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://dfoog0y2bh7tk
|
|
@ -6,15 +6,66 @@ var index : int = 0
|
||||||
var playback_rate : int = 1
|
var playback_rate : int = 1
|
||||||
var transport_enabled : bool = false
|
var transport_enabled : bool = false
|
||||||
var erase_validated : bool = false
|
var erase_validated : bool = false
|
||||||
|
var cam_index : int = 0
|
||||||
|
|
||||||
var showtape_loaded : bool = false
|
var showtape_loaded : bool = false
|
||||||
var show_name : String
|
var show_name : String
|
||||||
|
|
||||||
var current_stage : String = "Helen House"
|
var current_stage : String
|
||||||
|
|
||||||
var stages_info = {
|
var stages_info = {
|
||||||
# stage name, custom (bool), bits, flyout path, movement row table path, base scene path, ust character flag, ust stage flag
|
"Helen House":
|
||||||
"Helen House": [true, 32, "res://Scenes/Stages/Helen House/HelenHouseFlyout.tscn", "res://Scenes/Stages/Helen House/HelenHouseMovementRows.tscn", "res://Scenes/Stages/Helen House/HelenHouse.tscn", "Mitzi/Helen", "Rockafire Explosion/3-Stage (Single Character)"]
|
{
|
||||||
|
"bits": 32,
|
||||||
|
"scene": "res://Scenes/Stages/HelenHouse.tscn",
|
||||||
|
"scene_ref_base": "SubViewport/HelenHouse/",
|
||||||
|
"camera_count": 2,
|
||||||
|
|
||||||
|
"ust_character": "Mitzi/Helen",
|
||||||
|
"ust_stage": "Rockafire Explosion/3-Stage (Single Character)",
|
||||||
|
|
||||||
|
"bit_mapping":
|
||||||
|
{
|
||||||
|
"Helen":
|
||||||
|
{
|
||||||
|
"Mouth": [3.0, 2.0],
|
||||||
|
"Left Ear": [3.5, 1.5],
|
||||||
|
"Right Ear": [3.5, 1.5],
|
||||||
|
"Left Eyelid": [1.5, 2.0],
|
||||||
|
"Right Eyelid": [1.5, 2.0],
|
||||||
|
"Eyes Left": [3.5, 1.5],
|
||||||
|
"Eyes Right": [3.5, 1.5],
|
||||||
|
"Head Left": [1.5, 1.5],
|
||||||
|
"Head Right": [1.5, 1.5],
|
||||||
|
"Head Up": [1.0, 1.0],
|
||||||
|
"Left Arm Up": [0.8, 0.6],
|
||||||
|
"Left Arm Twist": [0.8, 0.8],
|
||||||
|
"Left Elbow": [1.0, 1.0],
|
||||||
|
"Right Arm Up": [0.8, 0.6],
|
||||||
|
"Right Arm Twist": [0.8, 0.8],
|
||||||
|
"Right Elbow": [1.0, 1.0],
|
||||||
|
"Body Left": [0.7, 0.7],
|
||||||
|
"Body Right": [0.7, 0.7],
|
||||||
|
"Body Lean": [1.0, 0.8],
|
||||||
|
},
|
||||||
|
"None":
|
||||||
|
{
|
||||||
|
"Unused 20": ["None"],
|
||||||
|
"Unused 21": ["None"],
|
||||||
|
"Unused 22": ["None"],
|
||||||
|
"Unused 23": ["None"],
|
||||||
|
"Unused 24": ["None"],
|
||||||
|
"Unused 25": ["None"],
|
||||||
|
"Unused 26": ["None"],
|
||||||
|
"Unused 27": ["None"],
|
||||||
|
"Unused 28": ["None"],
|
||||||
|
"Unused 29": ["None"],
|
||||||
|
"Unused 30": ["None"],
|
||||||
|
"Unused 31": ["None"],
|
||||||
|
"Unused 32": ["None"],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
signal step(amount: int)
|
signal step(amount: int)
|
||||||
|
@ -23,13 +74,74 @@ 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:
|
||||||
|
$SequencerPanel/TimelinePanel/VScrollBar.value = 0
|
||||||
|
if (stage_previously_loaded):
|
||||||
|
$CameraPreview.visible = false
|
||||||
|
for row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
|
||||||
|
row.queue_free()
|
||||||
|
for row in $FlyoutPanel/FlowControls/InvisibleMask.get_children():
|
||||||
|
row.queue_free()
|
||||||
|
$SubViewport.get_child(0).queue_free()
|
||||||
|
var stage = load(stages_info[current_stage]["scene"]).instantiate()
|
||||||
|
$SubViewport.add_child(stage)
|
||||||
|
var cam_offset = 4
|
||||||
|
for i in range(1, stages_info[current_stage]["camera_count"]+1):
|
||||||
|
var camera_button = load("res://Scenes/GUI/Controls/CameraButton.tscn").instantiate()
|
||||||
|
camera_button.camera = "Angle " + str(i)
|
||||||
|
camera_button.base_scene_path = "../../../" + stages_info[current_stage]["scene_ref_base"]
|
||||||
|
camera_button.position.y = cam_offset
|
||||||
|
cam_offset += 36
|
||||||
|
$FlyoutPanel/Camera.add_child(camera_button)
|
||||||
|
$FlyoutPanel/Camera.size.y = cam_offset
|
||||||
|
var rows_offset = 0
|
||||||
|
var flows_offset = 0
|
||||||
|
var bit_idx = 1
|
||||||
|
var flow_count = 0
|
||||||
|
for bot in stages_info[current_stage]["bit_mapping"]:
|
||||||
|
for movement in stages_info[current_stage]["bit_mapping"][bot]:
|
||||||
|
|
||||||
|
var movement_flows = stages_info[current_stage]["bit_mapping"][bot][movement]
|
||||||
|
if (movement_flows[0] is not String):
|
||||||
|
var flow_control = load("res://Scenes/GUI/Controls/FlowControl.tscn").instantiate()
|
||||||
|
flow_control.position.y = flows_offset
|
||||||
|
flow_control.name = bot + " " + movement
|
||||||
|
flow_control.in_value = movement_flows[0]
|
||||||
|
flow_control.out_value = movement_flows[1]
|
||||||
|
$FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.add_child(flow_control)
|
||||||
|
flows_offset += 44
|
||||||
|
flow_count += 1
|
||||||
|
|
||||||
|
var row = load("res://Scenes/GUI/Controls/MovementRow.tscn").instantiate()
|
||||||
|
row.position.y = rows_offset
|
||||||
|
row.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
|
||||||
|
row.animatronic = bot
|
||||||
|
if (movement_flows[0] is String): row.flow_path = "None"
|
||||||
|
row.movement_bit = bit_idx
|
||||||
|
row.movement_name = movement
|
||||||
|
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.add_child(row)
|
||||||
|
|
||||||
|
var movement_button = load("res://Scenes/GUI/Controls/MovementButton.tscn").instantiate()
|
||||||
|
movement_button.position.y = rows_offset
|
||||||
|
movement_button.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
|
||||||
|
movement_button.animatronic = bot
|
||||||
|
if (movement_flows[0] is String): movement_button.flow_path = "None"
|
||||||
|
movement_button.movement_name = movement
|
||||||
|
$FlyoutPanel/Movements/InvisibleMask/MovementHandle.add_child(movement_button)
|
||||||
|
|
||||||
|
rows_offset += 44
|
||||||
|
bit_idx += 1
|
||||||
|
$SequencerPanel/TimelinePanel/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1
|
||||||
|
$FlyoutPanel/Movements/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1
|
||||||
|
$FlyoutPanel/FlowControls/VScrollBar.max_value = flow_count - 1
|
||||||
|
$CameraPreview.visible = true
|
||||||
|
|
||||||
func update_time_label() -> void:
|
func update_time_label() -> void:
|
||||||
var frames = index % 60
|
var frames = index % 60
|
||||||
var seconds = floori(index/60) % 60
|
var seconds = floori(index/60) % 60
|
||||||
var minutes = floori(index/3600) % 60
|
var minutes = floori(index/3600) % 60
|
||||||
var hours = floori(index/216000)
|
var hours = floori(index/216000)
|
||||||
$SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames]
|
$SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames]
|
||||||
#$SequencerPanel/TransportControls/TimeLabel.text = str(index)
|
|
||||||
|
|
||||||
func set_transport_enabled(enabled: bool):
|
func set_transport_enabled(enabled: bool):
|
||||||
$SequencerPanel/TransportControls/Centered/StepBackwardsButton.disabled = !enabled
|
$SequencerPanel/TransportControls/Centered/StepBackwardsButton.disabled = !enabled
|
||||||
|
@ -48,6 +160,12 @@ func _ready() -> void:
|
||||||
erase_all.connect(_erase_all)
|
erase_all.connect(_erase_all)
|
||||||
$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)
|
||||||
|
reload_stage(false)
|
||||||
|
|
||||||
|
func _on_stage_selector_item_selected(_index: int) -> void:
|
||||||
|
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
|
||||||
|
reload_stage(true)
|
||||||
|
|
||||||
func _showtape_menu_button_pressed(id: int) -> void:
|
func _showtape_menu_button_pressed(id: int) -> void:
|
||||||
match (id):
|
match (id):
|
||||||
|
@ -110,7 +228,7 @@ func _on_showtape_load_open_button_pressed() -> void:
|
||||||
var file = FileAccess.open($ShowtapeLoadScreen/DialogPanel/InFilePath.text.strip_edges(), FileAccess.READ)
|
var file = FileAccess.open($ShowtapeLoadScreen/DialogPanel/InFilePath.text.strip_edges(), FileAccess.READ)
|
||||||
var content = file.get_as_text()
|
var content = file.get_as_text()
|
||||||
var header = content.split(";")[0].split(",")
|
var header = content.split(";")[0].split(",")
|
||||||
if ((int(header[3]) != stages_info[current_stage][1]) || (header[4] != stages_info[current_stage][6])|| (header[5] != stages_info[current_stage][5])):
|
if ((int(header[3]) != stages_info[current_stage]["bits"]) || (header[4] != stages_info[current_stage]["ust_stage"])|| (header[5] != stages_info[current_stage]["ust_character"])):
|
||||||
$IncorrectShowtapeDialog.dialog_text = "This showtape is not compatible with the currently selected stage.\nShowtape stage type: %s\nShowtape character(s): %s" % [header[4], header[5]]
|
$IncorrectShowtapeDialog.dialog_text = "This showtape is not compatible with the currently selected stage.\nShowtape stage type: %s\nShowtape character(s): %s" % [header[4], header[5]]
|
||||||
$IncorrectShowtapeDialog.show()
|
$IncorrectShowtapeDialog.show()
|
||||||
return
|
return
|
||||||
|
@ -151,6 +269,9 @@ func _input(event: InputEvent) -> void:
|
||||||
if event.is_action_pressed("toggle_editor_screen"):
|
if event.is_action_pressed("toggle_editor_screen"):
|
||||||
$CameraPreview.visible = !$CameraPreview.visible;
|
$CameraPreview.visible = !$CameraPreview.visible;
|
||||||
$CameraFullScreen.visible = !$CameraFullScreen.visible;
|
$CameraFullScreen.visible = !$CameraFullScreen.visible;
|
||||||
|
if (event.is_action_pressed("cycle_camera_angle")):
|
||||||
|
cam_index += 1
|
||||||
|
get_node("SubViewport/HelenHouse/Angle " + str((cam_index % stages_info[current_stage]["camera_count"])+1)).current = true
|
||||||
if (transport_enabled):
|
if (transport_enabled):
|
||||||
if event.is_action_pressed("sequencer_play_pause"):
|
if event.is_action_pressed("sequencer_play_pause"):
|
||||||
if (playing): _on_pause_button_pressed()
|
if (playing): _on_pause_button_pressed()
|
||||||
|
@ -214,7 +335,13 @@ func _on_input_eater_pressed() -> void:
|
||||||
$ShowtapeSaveScreen.visible = false
|
$ShowtapeSaveScreen.visible = false
|
||||||
|
|
||||||
func _on_v_scroll_bar_value_changed(value: float) -> void:
|
func _on_v_scroll_bar_value_changed(value: float) -> void:
|
||||||
$SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle.position.y = value * -44
|
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.position.y = value * -44
|
||||||
|
|
||||||
|
func _on_flow_v_scroll_bar_value_changed(value: float) -> void:
|
||||||
|
$FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.position.y = value * -44
|
||||||
|
|
||||||
|
func _on_movement_v_scroll_bar_value_changed(value: float) -> void:
|
||||||
|
$FlyoutPanel/Movements/InvisibleMask/MovementHandle.position.y = value * -44
|
||||||
|
|
||||||
func _erase_all() -> void:
|
func _erase_all() -> void:
|
||||||
playing = false
|
playing = false
|
||||||
|
@ -229,6 +356,21 @@ func _erase_all() -> void:
|
||||||
showtape_loaded = false
|
showtape_loaded = false
|
||||||
$MenuBar/EditingLabel.text = "No showtape loaded."
|
$MenuBar/EditingLabel.text = "No showtape loaded."
|
||||||
|
|
||||||
|
func _on_movements_flyout_button_toggled(toggled_on: bool) -> void:
|
||||||
|
$FlyoutPanel/Movements.visible = toggled_on
|
||||||
|
|
||||||
|
func _on_flows_flyout_button_toggled(toggled_on: bool) -> void:
|
||||||
|
$FlyoutPanel/FlowControls.visible = toggled_on
|
||||||
|
|
||||||
|
func _on_camera_flyout_button_toggled(toggled_on: bool) -> void:
|
||||||
|
$FlyoutPanel/Camera.visible = toggled_on
|
||||||
|
|
||||||
|
func _on_cosmetics_flyout_button_toggled(toggled_on: bool) -> void:
|
||||||
|
$FlyoutPanel/Cosmetics.visible = toggled_on
|
||||||
|
|
||||||
|
func _on_stage_flyout_button_toggled(toggled_on: bool) -> void:
|
||||||
|
$FlyoutPanel/Stage.visible = toggled_on
|
||||||
|
|
||||||
|
|
||||||
func _on_play_button_pressed() -> void:
|
func _on_play_button_pressed() -> void:
|
||||||
playback_rate = 1
|
playback_rate = 1
|
||||||
|
@ -294,14 +436,14 @@ func save_data() -> String:
|
||||||
var write_out : String = ""
|
var write_out : String = ""
|
||||||
var temp_data = []
|
var temp_data = []
|
||||||
var longest_channel = 0
|
var longest_channel = 0
|
||||||
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle.get_child(0).get_children():
|
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
|
||||||
temp_data.append(movement_row.movements)
|
temp_data.append(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_byte = 0
|
var frame_byte = 0
|
||||||
for j in range(stages_info[current_stage][1]):
|
for j in range(stages_info[current_stage]["bits"]):
|
||||||
if (index_get_safe(i, temp_data[j])): frame_byte += 1 << j;
|
if (index_get_safe(i, temp_data[j])): frame_byte += 1 << j;
|
||||||
write_out += ("%0"+str(stages_info[current_stage][1]/4)+"X,") % frame_byte
|
write_out += ("%0"+str(stages_info[current_stage]["bits"]/4)+"X,") % frame_byte
|
||||||
return write_out
|
return write_out
|
||||||
|
|
||||||
func plot_data(data: String):
|
func plot_data(data: String):
|
||||||
|
@ -309,13 +451,13 @@ func plot_data(data: String):
|
||||||
for frame_string in data.split(","):
|
for frame_string in data.split(","):
|
||||||
if (frame_string == ""): continue
|
if (frame_string == ""): continue
|
||||||
var frame_byte = frame_string.hex_to_int()
|
var frame_byte = frame_string.hex_to_int()
|
||||||
for i in range(stages_info[current_stage][1]):
|
for i in range(stages_info[current_stage]["bits"]):
|
||||||
var er = false
|
var er = false
|
||||||
if ((frame_byte & int(pow(2, i))) >> i == 1):
|
if ((frame_byte & int(pow(2, i))) >> i == 1):
|
||||||
er = true
|
er = true
|
||||||
$SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle.get_child(0).get_child(i).etching = er
|
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_child(i).etching = er
|
||||||
step.emit(1)
|
step.emit(1)
|
||||||
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle.get_child(0).get_children():
|
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
|
||||||
movement_row.etching = false
|
movement_row.etching = false
|
||||||
end_recording.emit()
|
end_recording.emit()
|
||||||
return_to_zero.emit()
|
return_to_zero.emit()
|
||||||
|
|
34
Scripts/FlowControl.gd
Normal file
34
Scripts/FlowControl.gd
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
@export var in_value : float = 1.0
|
||||||
|
@export var out_value : float = 1.0
|
||||||
|
|
||||||
|
signal in_value_updated(new_value: float)
|
||||||
|
signal out_value_updated(new_value: float)
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$Panel/Label.text = self.name
|
||||||
|
$Panel/InSlider.value = self.in_value
|
||||||
|
$Panel/InStepper.value = self.in_value
|
||||||
|
$Panel/OutSlider.value = self.out_value
|
||||||
|
$Panel/OutStepper.value = self.out_value
|
||||||
|
|
||||||
|
func _on_in_slider_value_changed(value: float) -> void:
|
||||||
|
self.in_value = $Panel/InSlider.value
|
||||||
|
$Panel/InStepper.value = value
|
||||||
|
in_value_updated.emit(value)
|
||||||
|
|
||||||
|
func _on_in_stepper_value_changed(value: float) -> void:
|
||||||
|
self.in_value = $Panel/InStepper.value
|
||||||
|
$Panel/InSlider.value = value
|
||||||
|
in_value_updated.emit(value)
|
||||||
|
|
||||||
|
func _on_out_slider_value_changed(value: float) -> void:
|
||||||
|
self.out_value = $Panel/OutSlider.value
|
||||||
|
$Panel/OutStepper.value = value
|
||||||
|
out_value_updated.emit(value)
|
||||||
|
|
||||||
|
func _on_out_stepper_value_changed(value: float) -> void:
|
||||||
|
self.out_value = $Panel/OutStepper.value
|
||||||
|
$Panel/OutSlider.value = value
|
||||||
|
out_value_updated.emit(value)
|
|
@ -1,13 +0,0 @@
|
||||||
extends Control
|
|
||||||
|
|
||||||
@export var value : float = 1.0
|
|
||||||
|
|
||||||
signal value_updated(new_value: float)
|
|
||||||
|
|
||||||
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)
|
|
||||||
value_updated.emit(value)
|
|
|
@ -3,12 +3,12 @@ extends Control
|
||||||
signal movement_in(movement, rate)
|
signal movement_in(movement, rate)
|
||||||
signal movement_out(movement, rate)
|
signal movement_out(movement, rate)
|
||||||
|
|
||||||
var cam_index : int = 0
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var animatronic = get_node("../SubViewport/HelenHouse/3stHelen")
|
#var animatronic = get_node("../SubViewport/HelenHouse/Helen")
|
||||||
movement_in.connect(animatronic._movement_in)
|
#movement_in.connect(animatronic._movement_in)
|
||||||
movement_out.connect(animatronic._movement_out)
|
#movement_out.connect(animatronic._movement_out)
|
||||||
movement_in.connect(self._movement_in)
|
movement_in.connect(self._movement_in)
|
||||||
movement_out.connect(self._movement_out)
|
movement_out.connect(self._movement_out)
|
||||||
|
|
||||||
|
@ -23,156 +23,8 @@ func _movement_in(movement, _rate):
|
||||||
func _movement_out(movement, _rate):
|
func _movement_out(movement, _rate):
|
||||||
get_node("Movements/IndicatorLights/" + movement).turn_off();
|
get_node("Movements/IndicatorLights/" + movement).turn_off();
|
||||||
|
|
||||||
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 _on_camera_flyout_button_toggled(toggled_on: bool) -> void:
|
|
||||||
$Camera.visible = toggled_on
|
|
||||||
|
|
||||||
func _on_cosmetics_flyout_button_toggled(toggled_on: bool) -> void:
|
|
||||||
$Cosmetics.visible = toggled_on
|
|
||||||
|
|
||||||
func _on_stage_flyout_button_toggled(toggled_on: bool) -> void:
|
|
||||||
$Stage.visible = toggled_on
|
|
||||||
|
|
||||||
func _on_angle_1_button_pressed() -> void:
|
func _on_angle_1_button_pressed() -> void:
|
||||||
get_node("../SubViewport/HelenHouse/Camera 1").current = true
|
get_node("../SubViewport/HelenHouse/Camera 1").current = true
|
||||||
|
|
||||||
func _on_angle_2_button_pressed() -> void:
|
func _on_angle_2_button_pressed() -> void:
|
||||||
get_node("../SubViewport/HelenHouse/Camera 2").current = true
|
get_node("../SubViewport/HelenHouse/Camera 2").current = true
|
||||||
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
extends Control
|
|
||||||
|
|
||||||
@export var on: bool = false
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
$Green.visible = self.on
|
|
||||||
|
|
||||||
func turn_on() -> void:
|
|
||||||
self.on = true
|
|
||||||
$Green.visible = self.on
|
|
||||||
|
|
||||||
func turn_off() -> void:
|
|
||||||
self.on = false
|
|
||||||
$Green.visible = self.on
|
|
||||||
|
|
||||||
func toggle() -> void:
|
|
||||||
self.on = !self.on
|
|
||||||
$Green.visible = self.on
|
|
||||||
|
|
||||||
func set_state(value: bool) -> void:
|
|
||||||
self.on = value
|
|
||||||
$Green.visible = self.on
|
|
39
Scripts/MovementButton.gd
Normal file
39
Scripts/MovementButton.gd
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
signal movement_in(movement, rate)
|
||||||
|
signal movement_out(movement, rate)
|
||||||
|
|
||||||
|
@export var animatronic : String
|
||||||
|
@export var base_scene_path : String
|
||||||
|
@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/"
|
||||||
|
@export var movement_name : String
|
||||||
|
|
||||||
|
var in_flow : float = 1.0
|
||||||
|
var out_flow : float = 1.0
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$Panel/Button.text = animatronic + " " + movement_name
|
||||||
|
if (animatronic != "None"):
|
||||||
|
var animatronic_node = get_node(base_scene_path + animatronic)
|
||||||
|
movement_in.connect(animatronic_node._movement_in)
|
||||||
|
movement_out.connect(animatronic_node._movement_out)
|
||||||
|
if (flow_path != "None"):
|
||||||
|
var flow_control = get_node(flow_path + animatronic + " " + movement_name)
|
||||||
|
flow_control.in_value_updated.connect(self._update_in_flow)
|
||||||
|
flow_control.out_value_updated.connect(self._update_out_flow)
|
||||||
|
in_flow = flow_control.in_value
|
||||||
|
out_flow = flow_control.out_value
|
||||||
|
|
||||||
|
func _update_in_flow(new_value: float) -> void:
|
||||||
|
in_flow = new_value
|
||||||
|
|
||||||
|
func _update_out_flow(new_value: float) -> void:
|
||||||
|
out_flow = new_value
|
||||||
|
|
||||||
|
func _on_button_button_down() -> void:
|
||||||
|
movement_in.emit(movement_name, in_flow)
|
||||||
|
$Panel/IndicatorPanel/Green.visible = true
|
||||||
|
|
||||||
|
func _on_button_button_up() -> void:
|
||||||
|
movement_out.emit(movement_name, out_flow)
|
||||||
|
$Panel/IndicatorPanel/Green.visible = false
|
|
@ -2,8 +2,9 @@ extends Panel
|
||||||
|
|
||||||
@export var movement_bit : int = 0
|
@export var movement_bit : int = 0
|
||||||
@export var movement_name : String = "Name"
|
@export var movement_name : String = "Name"
|
||||||
@export var flow_path : String = "../../../../../../HelenHouseFlyout/FlowControls/"
|
@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/"
|
||||||
@export var animatronic_path : String = "../../../../../../SubViewport/HelenHouse/3stHelen"
|
@export var base_scene_path : 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
|
||||||
|
|
||||||
|
@ -54,7 +55,7 @@ func check_at_index(cindex: int) -> bool:
|
||||||
return out
|
return out
|
||||||
|
|
||||||
func _step(amount: int):
|
func _step(amount: int):
|
||||||
if (recording):
|
if (recording && !$LockButton.button_pressed):
|
||||||
if (etching): set_at_current()
|
if (etching): set_at_current()
|
||||||
else: unset_at_current()
|
else: unset_at_current()
|
||||||
if (playing):
|
if (playing):
|
||||||
|
@ -91,7 +92,8 @@ func _end_playback():
|
||||||
playing = false
|
playing = false
|
||||||
|
|
||||||
func update_text() -> void:
|
func update_text() -> void:
|
||||||
$Button.text = "%d - %s (%s)" % [movement_bit, movement_name, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"]
|
if (animatronic == "None"): $Button.text = "%d - Unused (%s)" % [movement_bit, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"]
|
||||||
|
else: $Button.text = "%d - %s %s (%s)" % [movement_bit, animatronic, movement_name, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"]
|
||||||
|
|
||||||
func _update_in_flow(new_value: float) -> void:
|
func _update_in_flow(new_value: float) -> void:
|
||||||
in_flow = new_value
|
in_flow = new_value
|
||||||
|
@ -101,19 +103,18 @@ func _update_out_flow(new_value: float) -> void:
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if (flow_path != "None"):
|
if (flow_path != "None"):
|
||||||
var if_node = get_node(flow_path + "InFlows/" + movement_name.replace(" ", "") + "Flow")
|
var flow_control = get_node(flow_path + animatronic + " " + movement_name)
|
||||||
var of_node = get_node(flow_path + "OutFlows/" + movement_name.replace(" ", "") + "Flow")
|
flow_control.in_value_updated.connect(self._update_in_flow)
|
||||||
if_node.value_updated.connect(self._update_in_flow)
|
flow_control.out_value_updated.connect(self._update_out_flow)
|
||||||
of_node.value_updated.connect(self._update_out_flow)
|
in_flow = flow_control.in_value
|
||||||
in_flow = if_node.value
|
out_flow = flow_control.out_value
|
||||||
out_flow = of_node.value
|
if (animatronic != "None"):
|
||||||
if (animatronic_path != "None"):
|
var animatronic_node = get_node(base_scene_path + animatronic)
|
||||||
var animatronic = get_node(animatronic_path)
|
movement_in.connect(animatronic_node._movement_in)
|
||||||
movement_in.connect(animatronic._movement_in)
|
movement_out.connect(animatronic_node._movement_out)
|
||||||
movement_out.connect(animatronic._movement_out)
|
|
||||||
movement_in.connect(self._movement_in)
|
movement_in.connect(self._movement_in)
|
||||||
movement_out.connect(self._movement_out)
|
movement_out.connect(self._movement_out)
|
||||||
var editor = get_node("../../../../../../")
|
var editor = get_node("../../../../../")
|
||||||
editor.step.connect(_step)
|
editor.step.connect(_step)
|
||||||
editor.start_recording.connect(_start_recording)
|
editor.start_recording.connect(_start_recording)
|
||||||
editor.end_recording.connect(_end_recording)
|
editor.end_recording.connect(_end_recording)
|
||||||
|
|
BIN
UI/SmallLock.png
Normal file
BIN
UI/SmallLock.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 138 B |
34
UI/SmallLock.png.import
Normal file
34
UI/SmallLock.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d007317123e27"
|
||||||
|
path="res://.godot/imported/SmallLock.png-0c9e5ce04a7421f0922124b2fb1d8696.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://UI/SmallLock.png"
|
||||||
|
dest_files=["res://.godot/imported/SmallLock.png-0c9e5ce04a7421f0922124b2fb1d8696.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
|
@ -11,7 +11,7 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Pneumatic Plaything"
|
config/name="Pneumatic Plaything"
|
||||||
config/version="v0.3"
|
config/version="v0.4"
|
||||||
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
|
||||||
|
@ -392,6 +392,12 @@ sequencer_home={
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
fullscreen={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194342,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":true,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue