the recording revolution is upon us
This commit is contained in:
parent
6148a3ec45
commit
e1215c17b6
11 changed files with 289 additions and 64 deletions
21
Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn
Normal file
21
Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://btbdib3vwowhd"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://b4qincechbf63" path="res://Scripts/MovementFrameIndicator.gd" id="1_ttcva"]
|
||||||
|
|
||||||
|
[node name="MovementFrameIndicator" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_right = 2.0
|
||||||
|
offset_bottom = 32.0
|
||||||
|
script = ExtResource("1_ttcva")
|
||||||
|
|
||||||
|
[node name="ColorRect" type="ColorRect" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_left = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -2.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
grow_vertical = 2
|
||||||
|
color = Color(0.0941176, 0.0941176, 0.0941176, 1)
|
21
Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn
Normal file
21
Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://dao6mf54xule2"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://b4qincechbf63" path="res://Scripts/MovementFrameIndicator.gd" id="1_2om8h"]
|
||||||
|
|
||||||
|
[node name="MovementFrameIndicator" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_right = 2.0
|
||||||
|
offset_bottom = 32.0
|
||||||
|
script = ExtResource("1_2om8h")
|
||||||
|
|
||||||
|
[node name="ColorRect" type="ColorRect" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_left = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -2.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
grow_vertical = 2
|
||||||
|
color = Color(0, 1, 0, 1)
|
|
@ -32,6 +32,7 @@ offset_left = 4.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 260.0
|
offset_right = 260.0
|
||||||
offset_bottom = 36.0
|
offset_bottom = 36.0
|
||||||
|
tooltip_text = "Click to bind a key to this movement"
|
||||||
text = "0 - Name (Unbound)"
|
text = "0 - Name (Unbound)"
|
||||||
alignment = 0
|
alignment = 0
|
||||||
|
|
||||||
|
@ -45,4 +46,21 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme_override_styles/panel = ExtResource("1_d1xev")
|
theme_override_styles/panel = ExtResource("1_d1xev")
|
||||||
|
|
||||||
|
[node name="InvisibleMask" type="Control" parent="MovementsBG"]
|
||||||
|
clip_contents = true
|
||||||
|
layout_mode = 1
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = 4.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = -4.0
|
||||||
|
offset_bottom = -4.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="MovementsHandle" type="Control" parent="MovementsBG/InvisibleMask"]
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_left = 120.0
|
||||||
|
offset_right = 120.0
|
||||||
|
|
||||||
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
|
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=26 format=3 uid="uid://oiehbor0dlqx"]
|
[gd_scene load_steps=27 format=3 uid="uid://oiehbor0dlqx"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dfiwoln8mdwm8" path="res://Scripts/EditorScreen.gd" id="1_sd512"]
|
[ext_resource type="Script" uid="uid://dfiwoln8mdwm8" path="res://Scripts/EditorScreen.gd" id="1_sd512"]
|
||||||
[ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/Dark.tres" id="1_v0ton"]
|
[ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/Dark.tres" id="1_v0ton"]
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
[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://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://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"]
|
||||||
|
@ -195,13 +196,13 @@ anchor_right = 1.0
|
||||||
offset_bottom = 48.0
|
offset_bottom = 48.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="SequencerPanel/TransportControls"]
|
[node name="TimeLabel" type="Label" parent="SequencerPanel/TransportControls"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 8.0
|
offset_left = 8.0
|
||||||
offset_top = 8.0
|
offset_top = 8.0
|
||||||
offset_right = 196.0
|
offset_right = 196.0
|
||||||
offset_bottom = 40.0
|
offset_bottom = 40.0
|
||||||
text = "00:00:00:00 / 00:00:00:00"
|
text = "0:00:00:00"
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="Centered" type="Control" parent="SequencerPanel/TransportControls"]
|
[node name="Centered" type="Control" parent="SequencerPanel/TransportControls"]
|
||||||
|
@ -211,19 +212,20 @@ anchor_left = 0.5
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = -156.0
|
offset_left = -178.0
|
||||||
offset_top = -24.0
|
offset_top = -24.0
|
||||||
offset_right = 156.0
|
offset_right = 178.0
|
||||||
offset_bottom = 24.0
|
offset_bottom = 24.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="SkipBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
[node name="StepBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 4.0
|
offset_left = 4.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 44.0
|
offset_right = 44.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 44.0
|
||||||
|
tooltip_text = "Step backward 1 frame"
|
||||||
icon = ExtResource("3_r4ytj")
|
icon = ExtResource("3_r4ytj")
|
||||||
|
|
||||||
[node name="FastBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
[node name="FastBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
|
@ -232,6 +234,7 @@ offset_left = 48.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 88.0
|
offset_right = 88.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 44.0
|
||||||
|
tooltip_text = "Play backwards at 2x speed"
|
||||||
icon = ExtResource("4_wy7jo")
|
icon = ExtResource("4_wy7jo")
|
||||||
|
|
||||||
[node name="PlayBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
[node name="PlayBackwardsButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
|
@ -240,6 +243,7 @@ offset_left = 92.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 132.0
|
offset_right = 132.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 44.0
|
||||||
|
tooltip_text = "Play backwards"
|
||||||
icon = ExtResource("3_mr8sb")
|
icon = ExtResource("3_mr8sb")
|
||||||
|
|
||||||
[node name="PauseButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
[node name="PauseButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
|
@ -248,30 +252,43 @@ offset_left = 136.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 176.0
|
offset_right = 176.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 44.0
|
||||||
|
tooltip_text = "Pause"
|
||||||
icon = ExtResource("4_ba3jn")
|
icon = ExtResource("4_ba3jn")
|
||||||
|
|
||||||
[node name="PlayButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
[node name="StopButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 180.0
|
offset_left = 180.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 220.0
|
offset_right = 220.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 44.0
|
||||||
icon = ExtResource("3_g6u4d")
|
tooltip_text = "Stop playback and return to frame 0"
|
||||||
|
icon = ExtResource("8_20noo")
|
||||||
|
|
||||||
[node name="FastForwardButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
[node name="PlayButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 224.0
|
offset_left = 224.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 264.0
|
offset_right = 264.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 44.0
|
||||||
icon = ExtResource("8_v0ton")
|
tooltip_text = "Play"
|
||||||
|
icon = ExtResource("3_g6u4d")
|
||||||
|
|
||||||
[node name="SkipForwardButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
[node name="FastForwardButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 268.0
|
offset_left = 268.0
|
||||||
offset_top = 4.0
|
offset_top = 4.0
|
||||||
offset_right = 308.0
|
offset_right = 308.0
|
||||||
offset_bottom = 44.0
|
offset_bottom = 44.0
|
||||||
|
tooltip_text = "Play at 2x speed"
|
||||||
|
icon = ExtResource("8_v0ton")
|
||||||
|
|
||||||
|
[node name="StepForwardButton" type="Button" parent="SequencerPanel/TransportControls/Centered"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 312.0
|
||||||
|
offset_top = 4.0
|
||||||
|
offset_right = 352.0
|
||||||
|
offset_bottom = 44.0
|
||||||
|
tooltip_text = "Step forward 1 frame"
|
||||||
icon = ExtResource("9_20noo")
|
icon = ExtResource("9_20noo")
|
||||||
|
|
||||||
[node name="RecordButton" type="Button" parent="SequencerPanel/TransportControls"]
|
[node name="RecordButton" type="Button" parent="SequencerPanel/TransportControls"]
|
||||||
|
@ -287,6 +304,7 @@ offset_right = -4.0
|
||||||
offset_bottom = 20.0
|
offset_bottom = 20.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
tooltip_text = "Start recording"
|
||||||
icon = ExtResource("10_wy7jo")
|
icon = ExtResource("10_wy7jo")
|
||||||
|
|
||||||
[node name="TimelinePanel" type="Panel" parent="SequencerPanel"]
|
[node name="TimelinePanel" type="Panel" parent="SequencerPanel"]
|
||||||
|
@ -336,6 +354,14 @@ grow_vertical = 2
|
||||||
[node name="HelenHouseMovementRows" parent="SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle" instance=ExtResource("12_20noo")]
|
[node name="HelenHouseMovementRows" parent="SequencerPanel/TimelinePanel/InvisibleMask/RowsHandle" instance=ExtResource("12_20noo")]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|
||||||
|
[node name="VSeparator" type="VSeparator" parent="SequencerPanel/TimelinePanel"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = 398.0
|
||||||
|
offset_right = 4.0
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="HelenHouseFlyout" parent="." instance=ExtResource("13_wy7jo")]
|
[node name="HelenHouseFlyout" parent="." instance=ExtResource("13_wy7jo")]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
|
@ -395,8 +421,9 @@ Play/Pause: Space
|
||||||
Play Reverse: Shift + Space
|
Play Reverse: Shift + Space
|
||||||
Fast Forward: Shift + Right Arrow
|
Fast Forward: Shift + Right Arrow
|
||||||
Fast Reverse: Shift + Left
|
Fast Reverse: Shift + Left
|
||||||
Skip Forward: Right Arrow
|
Step Forward: Right Arrow
|
||||||
Skip Backward: Left Arrow
|
Step Backward: Left Arrow
|
||||||
|
Go to start of showtape: Home
|
||||||
Change Camera Angle: Tab"
|
Change Camera Angle: Tab"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
@ -472,6 +499,15 @@ expand_mode = 2
|
||||||
|
|
||||||
[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/FastBackwardsButton" to="." method="_on_fast_backwards_button_pressed"]
|
||||||
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/PlayBackwardsButton" to="." method="_on_play_backwards_button_pressed"]
|
||||||
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/PauseButton" to="." method="_on_pause_button_pressed"]
|
||||||
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StopButton" to="." method="_on_stop_button_pressed"]
|
||||||
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/PlayButton" to="." method="_on_play_button_pressed"]
|
||||||
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/FastForwardButton" to="." method="_on_fast_forward_button_pressed"]
|
||||||
|
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepForwardButton" to="." method="_on_step_forward_button_pressed"]
|
||||||
|
[connection signal="pressed" from="SequencerPanel/TransportControls/RecordButton" to="." method="_on_record_button_pressed"]
|
||||||
[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="pressed" from="ControlsScreen/InputEater" to="." method="_on_controls_input_eater_pressed"]
|
[connection signal="pressed" from="ControlsScreen/InputEater" to="." method="_on_controls_input_eater_pressed"]
|
||||||
[connection signal="pressed" from="CreditsScreen/InputEater" to="." method="_on_credits_input_eater_pressed"]
|
[connection signal="pressed" from="CreditsScreen/InputEater" to="." method="_on_credits_input_eater_pressed"]
|
||||||
|
|
|
@ -1,5 +1,24 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
|
var playing : bool = false
|
||||||
|
var recording : bool = false
|
||||||
|
var index : int = 0
|
||||||
|
var playback_rate : int = 1
|
||||||
|
|
||||||
|
signal step_forward()
|
||||||
|
signal step_backward()
|
||||||
|
signal start_recording()
|
||||||
|
signal end_recording()
|
||||||
|
signal return_to_zero()
|
||||||
|
|
||||||
|
func update_time_label() -> void:
|
||||||
|
var frames = index % 60
|
||||||
|
var seconds = floori(index/60) % 60
|
||||||
|
var minutes = floori(index/360) % 60
|
||||||
|
var hours = floori(index/7200)
|
||||||
|
$SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames]
|
||||||
|
#$SequencerPanel/TransportControls/TimeLabel.text = str(index)
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
get_tree().get_root().size_changed.connect(_on_size_changed)
|
get_tree().get_root().size_changed.connect(_on_size_changed)
|
||||||
|
|
||||||
|
@ -8,6 +27,12 @@ func _input(event: InputEvent) -> void:
|
||||||
$CameraPreview.visible = !$CameraPreview.visible;
|
$CameraPreview.visible = !$CameraPreview.visible;
|
||||||
$CameraFullScreen.visible = !$CameraFullScreen.visible;
|
$CameraFullScreen.visible = !$CameraFullScreen.visible;
|
||||||
|
|
||||||
|
func _physics_process(_delta: float) -> void:
|
||||||
|
if (playing || recording):
|
||||||
|
step_forward.emit()
|
||||||
|
index += 1
|
||||||
|
update_time_label()
|
||||||
|
|
||||||
func _on_size_changed() -> void:
|
func _on_size_changed() -> void:
|
||||||
$SubViewport.size = $ColorRect.size
|
$SubViewport.size = $ColorRect.size
|
||||||
|
|
||||||
|
@ -25,3 +50,63 @@ func _on_credits_input_eater_pressed() -> void:
|
||||||
|
|
||||||
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/RowsHandle.position.y = value * -44
|
||||||
|
|
||||||
|
|
||||||
|
func _on_play_button_pressed() -> void:
|
||||||
|
playback_rate = 1
|
||||||
|
playing = true
|
||||||
|
recording = false
|
||||||
|
end_recording.emit()
|
||||||
|
|
||||||
|
func _on_pause_button_pressed() -> void:
|
||||||
|
playing = false
|
||||||
|
recording = false
|
||||||
|
end_recording.emit()
|
||||||
|
|
||||||
|
func _on_play_backwards_button_pressed() -> void:
|
||||||
|
playback_rate = -1
|
||||||
|
playing = true
|
||||||
|
recording = false
|
||||||
|
end_recording.emit()
|
||||||
|
|
||||||
|
func _on_fast_backwards_button_pressed() -> void:
|
||||||
|
playback_rate = -2
|
||||||
|
playing = true
|
||||||
|
recording = false
|
||||||
|
end_recording.emit()
|
||||||
|
|
||||||
|
func _on_step_backwards_button_pressed() -> void:
|
||||||
|
playing = false
|
||||||
|
recording = false
|
||||||
|
end_recording.emit()
|
||||||
|
step_backward.emit()
|
||||||
|
if (index != 0): index -= 1
|
||||||
|
update_time_label()
|
||||||
|
|
||||||
|
func _on_fast_forward_button_pressed() -> void:
|
||||||
|
playback_rate = 2
|
||||||
|
playing = true
|
||||||
|
recording = false
|
||||||
|
end_recording.emit()
|
||||||
|
|
||||||
|
func _on_step_forward_button_pressed() -> void:
|
||||||
|
playing = false
|
||||||
|
recording = false
|
||||||
|
end_recording.emit()
|
||||||
|
step_forward.emit()
|
||||||
|
index += 1
|
||||||
|
update_time_label()
|
||||||
|
|
||||||
|
func _on_record_button_pressed() -> void:
|
||||||
|
playback_rate = 1
|
||||||
|
playing = false
|
||||||
|
recording = true
|
||||||
|
start_recording.emit()
|
||||||
|
|
||||||
|
func _on_stop_button_pressed() -> void:
|
||||||
|
playing = false
|
||||||
|
recording = false
|
||||||
|
index = 0
|
||||||
|
end_recording.emit()
|
||||||
|
return_to_zero.emit()
|
||||||
|
update_time_label()
|
||||||
|
|
6
Scripts/MovementFrameIndicator.gd
Normal file
6
Scripts/MovementFrameIndicator.gd
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
@export var x_offset : int = 0
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
self.size.x += x_offset
|
1
Scripts/MovementFrameIndicator.gd.uid
Normal file
1
Scripts/MovementFrameIndicator.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://b4qincechbf63
|
|
@ -1,21 +1,84 @@
|
||||||
extends Panel
|
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 = "../../../../../../HelenHouseFlyout/FlowControls/"
|
||||||
@export var recording : bool = false
|
@export var animatronic_path : String = "../../../../../../SubViewport/HelenHouse/3stHelen"
|
||||||
@export var current_index : int = 0;
|
@export var movements : Array[bool]
|
||||||
|
|
||||||
var in_flow : float = 1.0
|
var in_flow : float = 1.0
|
||||||
var out_flow : float = 1.0
|
var out_flow : float = 1.0
|
||||||
|
|
||||||
var key_binding : InputEventKey = InputEventKey.new()
|
var key_binding : InputEventKey = InputEventKey.new()
|
||||||
|
var current_index : int = 0
|
||||||
var binding : bool = false
|
var binding : bool = false
|
||||||
var held_on_previous_frame : bool = false
|
var held_on_previous_frame : bool = false
|
||||||
|
var playback_held_on_previous_frame : bool = false
|
||||||
|
var etching: bool = false
|
||||||
|
var recording : bool = false
|
||||||
|
var playing : bool = true
|
||||||
|
|
||||||
signal movement_in(movement, rate)
|
signal movement_in(movement, rate)
|
||||||
signal movement_out(movement, rate)
|
signal movement_out(movement, rate)
|
||||||
|
|
||||||
|
func set_at_current() -> void:
|
||||||
|
if (current_index > self.movements.size()-1): self.movements.append(true)
|
||||||
|
else: self.movements.set(current_index, true)
|
||||||
|
var indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn")
|
||||||
|
var instance = indicator.instantiate()
|
||||||
|
instance.x_offset = current_index * 2
|
||||||
|
$MovementsBG/InvisibleMask/MovementsHandle.add_child(instance)
|
||||||
|
|
||||||
|
func unset_at_current() -> void:
|
||||||
|
if (current_index > self.movements.size()-1): self.movements.append(false)
|
||||||
|
else: self.movements.set(current_index, false)
|
||||||
|
var indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn")
|
||||||
|
var instance = indicator.instantiate()
|
||||||
|
instance.x_offset = current_index * 2
|
||||||
|
$MovementsBG/InvisibleMask/MovementsHandle.add_child(instance)
|
||||||
|
|
||||||
|
func check_at_current() -> bool:
|
||||||
|
if (current_index > self.movements.size()-1): return false
|
||||||
|
var out = self.movements.get(current_index)
|
||||||
|
if (out == null): return false
|
||||||
|
return out
|
||||||
|
|
||||||
|
func _step_forward():
|
||||||
|
if (recording && etching): set_at_current()
|
||||||
|
elif (recording && !etching): unset_at_current()
|
||||||
|
if (playing):
|
||||||
|
if (check_at_current()):
|
||||||
|
if (!playback_held_on_previous_frame):
|
||||||
|
movement_in.emit(movement_name, in_flow)
|
||||||
|
playback_held_on_previous_frame = true;
|
||||||
|
else:
|
||||||
|
if (playback_held_on_previous_frame):
|
||||||
|
movement_out.emit(movement_name, out_flow)
|
||||||
|
playback_held_on_previous_frame = false;
|
||||||
|
current_index += 1
|
||||||
|
$MovementsBG/InvisibleMask/MovementsHandle.position.x -= 2
|
||||||
|
|
||||||
|
func _step_backward():
|
||||||
|
if (current_index == 0): return
|
||||||
|
current_index -= 1
|
||||||
|
$MovementsBG/InvisibleMask/MovementsHandle.position.x += 2
|
||||||
|
|
||||||
|
func _return_to_zero():
|
||||||
|
current_index = 0
|
||||||
|
$MovementsBG/InvisibleMask/MovementsHandle.position.x = 120
|
||||||
|
|
||||||
|
func _start_recording():
|
||||||
|
recording = true
|
||||||
|
|
||||||
|
func _end_recording():
|
||||||
|
recording = false
|
||||||
|
|
||||||
|
func _start_playback():
|
||||||
|
playing = true
|
||||||
|
|
||||||
|
func _end_playback():
|
||||||
|
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"]
|
$Button.text = "%d - %s (%s)" % [movement_bit, movement_name, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"]
|
||||||
|
|
||||||
|
@ -26,7 +89,7 @@ func _update_out_flow(new_value: float) -> void:
|
||||||
out_flow = new_value
|
out_flow = new_value
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var animatronic = get_node("../../../../../../SubViewport/HelenHouse/3stHelen")
|
var animatronic = get_node(animatronic_path)
|
||||||
if (flow_path != "None"):
|
if (flow_path != "None"):
|
||||||
var if_node = get_node(flow_path + "InFlows/" + movement_name.replace(" ", "") + "Flow")
|
var if_node = get_node(flow_path + "InFlows/" + movement_name.replace(" ", "") + "Flow")
|
||||||
var of_node = get_node(flow_path + "OutFlows/" + movement_name.replace(" ", "") + "Flow")
|
var of_node = get_node(flow_path + "OutFlows/" + movement_name.replace(" ", "") + "Flow")
|
||||||
|
@ -38,9 +101,15 @@ func _ready() -> void:
|
||||||
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)
|
||||||
|
var editor = get_node("../../../../../../")
|
||||||
|
editor.step_forward.connect(_step_forward)
|
||||||
|
editor.step_backward.connect(_step_backward)
|
||||||
|
editor.start_recording.connect(_start_recording)
|
||||||
|
editor.end_recording.connect(_end_recording)
|
||||||
|
editor.return_to_zero.connect(_return_to_zero)
|
||||||
update_text()
|
update_text()
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
if (binding): return
|
if (binding): return
|
||||||
if (Input.is_key_pressed(key_binding.keycode)):
|
if (Input.is_key_pressed(key_binding.keycode)):
|
||||||
if (!held_on_previous_frame):
|
if (!held_on_previous_frame):
|
||||||
|
@ -51,14 +120,15 @@ func _process(delta: float) -> void:
|
||||||
movement_out.emit(movement_name, out_flow)
|
movement_out.emit(movement_name, out_flow)
|
||||||
held_on_previous_frame = false;
|
held_on_previous_frame = false;
|
||||||
|
|
||||||
func _movement_in(movement, rate):
|
func _movement_in(_movement, _rate):
|
||||||
$ActiveBG.visible = true
|
$ActiveBG.visible = true
|
||||||
|
if (recording): etching = true
|
||||||
|
|
||||||
func _movement_out(movement, rate):
|
func _movement_out(_movement, _rate):
|
||||||
$ActiveBG.visible = false
|
$ActiveBG.visible = false
|
||||||
|
etching = false
|
||||||
|
|
||||||
func _on_button_pressed() -> void:
|
func _on_button_pressed() -> void:
|
||||||
if (recording): return
|
|
||||||
if (binding):
|
if (binding):
|
||||||
update_text()
|
update_text()
|
||||||
binding = false
|
binding = false
|
||||||
|
@ -67,7 +137,7 @@ func _on_button_pressed() -> void:
|
||||||
$Button.text = "Press a key to bind."
|
$Button.text = "Press a key to bind."
|
||||||
binding = true
|
binding = true
|
||||||
else:
|
else:
|
||||||
key_binding.keycode = 0
|
key_binding.keycode = KEY_NONE
|
||||||
update_text()
|
update_text()
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 360 B After Width: | Height: | Size: 352 B |
Binary file not shown.
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 331 B |
|
@ -11,7 +11,7 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Pneumatic Plaything"
|
config/name="Pneumatic Plaything"
|
||||||
config/version="v0.1"
|
config/version="v0.2"
|
||||||
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
|
||||||
|
@ -54,61 +54,28 @@ sequencer_fast_reverse={
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"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":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
sequencer_skip_forward={
|
sequencer_step_forward={
|
||||||
"deadzone": 0.2,
|
"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null)
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
sequencer_skip_backward={
|
sequencer_step_backward={
|
||||||
"deadzone": 0.2,
|
"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
camera_angle_1={
|
cycle_camera_angle={
|
||||||
"deadzone": 0.2,
|
"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":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null)
|
"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":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
camera_angle_2={
|
sequencer_home={
|
||||||
"deadzone": 0.2,
|
"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":50,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null)
|
"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":4194317,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
]
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
|
||||||
}
|
|
||||||
camera_angle_3={
|
|
||||||
"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":51,"key_label":0,"unicode":51,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
camera_angle_4={
|
|
||||||
"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":52,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
camera_angle_5={
|
|
||||||
"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":53,"key_label":0,"unicode":53,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
camera_angle_6={
|
|
||||||
"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":54,"key_label":0,"unicode":54,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
camera_angle_7={
|
|
||||||
"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":55,"key_label":0,"unicode":55,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
camera_angle_8={
|
|
||||||
"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":56,"key_label":0,"unicode":56,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
camera_angle_9={
|
|
||||||
"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":57,"key_label":0,"unicode":57,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue