multiple cameras and sequencer key bindings

This commit is contained in:
Persephone Bubblegum-Holidy 2025-05-24 21:35:53 -07:00
parent 7e7b57e4fd
commit cb9b3aac66
5 changed files with 113 additions and 8 deletions

View file

@ -137,6 +137,7 @@ popup/item_0/text = "Helen House (Custom)"
popup/item_0/id = 0 popup/item_0/id = 0
[node name="LoadShowtapeButton" type="Button" parent="MenuBar"] [node name="LoadShowtapeButton" type="Button" parent="MenuBar"]
visible = false
layout_mode = 0 layout_mode = 0
offset_left = 264.0 offset_left = 264.0
offset_top = 4.0 offset_top = 4.0
@ -145,6 +146,7 @@ offset_bottom = 36.0
text = "Load Showtape" text = "Load Showtape"
[node name="NewShowtapeButton" type="Button" parent="MenuBar"] [node name="NewShowtapeButton" type="Button" parent="MenuBar"]
visible = false
layout_mode = 0 layout_mode = 0
offset_left = 396.0 offset_left = 396.0
offset_top = 4.0 offset_top = 4.0
@ -153,6 +155,7 @@ offset_bottom = 36.0
text = "New Showtape" text = "New Showtape"
[node name="SaveShowtapeButton" type="Button" parent="MenuBar"] [node name="SaveShowtapeButton" type="Button" parent="MenuBar"]
visible = false
layout_mode = 0 layout_mode = 0
offset_left = 528.0 offset_left = 528.0
offset_top = 4.0 offset_top = 4.0
@ -162,17 +165,17 @@ text = "Save Showtape"
[node name="ControlsButton" type="Button" parent="MenuBar"] [node name="ControlsButton" type="Button" parent="MenuBar"]
layout_mode = 0 layout_mode = 0
offset_left = 660.0 offset_left = 264.0
offset_top = 4.0 offset_top = 4.0
offset_right = 788.0 offset_right = 392.0
offset_bottom = 36.0 offset_bottom = 36.0
text = "Controls" text = "Controls"
[node name="CreditsButton" type="Button" parent="MenuBar"] [node name="CreditsButton" type="Button" parent="MenuBar"]
layout_mode = 0 layout_mode = 0
offset_left = 792.0 offset_left = 396.0
offset_top = 4.0 offset_top = 4.0
offset_right = 920.0 offset_right = 524.0
offset_bottom = 36.0 offset_bottom = 36.0
text = "Credits" text = "Credits"

View file

@ -20,8 +20,12 @@ 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("5_afett")]
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="Camera3D" type="Camera3D" parent="."] [node name="Camera 1" type="Camera3D" parent="."]
transform = Transform3D(-1, 1.31601e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -3) 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
[node name="Camera 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)
fov = 60.0 fov = 60.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="."] [node name="WorldEnvironment" type="WorldEnvironment" parent="."]

View file

@ -941,8 +941,66 @@ text = "Body Lean"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="Camera" type="Panel" parent="."]
visible = false
layout_mode = 0
offset_left = 140.0
offset_right = 276.0
offset_bottom = 76.0
[node name="Angle1Button" type="Button" parent="Camera"]
layout_mode = 0
offset_left = 4.0
offset_top = 4.0
offset_right = 132.0
offset_bottom = 36.0
text = "Angle 1"
[node name="Angle2Button" type="Button" parent="Camera"]
layout_mode = 0
offset_left = 4.0
offset_top = 40.0
offset_right = 132.0
offset_bottom = 72.0
text = "Angle 2"
[node name="Cosmetics" type="Panel" parent="."]
visible = false
layout_mode = 0
offset_left = 140.0
offset_right = 396.0
offset_bottom = 64.0
[node name="Label" type="Label" parent="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="."]
visible = false
layout_mode = 0
offset_left = 140.0
offset_right = 396.0
offset_bottom = 64.0
[node name="Label" type="Label" parent="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
[connection signal="toggled" from="FlyoutButtons/MovementsFlyoutButton" to="." method="_on_movements_flyout_button_toggled"] [connection signal="toggled" from="FlyoutButtons/MovementsFlyoutButton" to="." method="_on_movements_flyout_button_toggled"]
[connection signal="toggled" from="FlyoutButtons/FlowsFlyoutButton" to="." method="_on_flows_flyout_button_toggled"] [connection signal="toggled" from="FlyoutButtons/FlowsFlyoutButton" to="." method="_on_flows_flyout_button_toggled"]
[connection signal="toggled" from="FlyoutButtons/CameraFlyoutButton" to="." method="_on_camera_flyout_button_toggled"]
[connection signal="toggled" from="FlyoutButtons/CosmeticsFlyoutButton" to="." method="_on_cosmetics_flyout_button_toggled"]
[connection signal="toggled" from="FlyoutButtons/StageFlyoutButton" to="." method="_on_stage_flyout_button_toggled"]
[connection signal="button_down" from="Movements/Buttons/Mouth" to="." method="_on_mouth_button_down"] [connection signal="button_down" from="Movements/Buttons/Mouth" to="." method="_on_mouth_button_down"]
[connection signal="button_up" from="Movements/Buttons/Mouth" to="." method="_on_mouth_button_up"] [connection signal="button_up" from="Movements/Buttons/Mouth" to="." method="_on_mouth_button_up"]
[connection signal="button_down" from="Movements/Buttons/LeftEar" to="." method="_on_left_ear_button_down"] [connection signal="button_down" from="Movements/Buttons/LeftEar" to="." method="_on_left_ear_button_down"]
@ -981,3 +1039,5 @@ vertical_alignment = 1
[connection signal="button_up" from="Movements/Buttons/BodyRight" to="." method="_on_body_right_button_up"] [connection signal="button_up" from="Movements/Buttons/BodyRight" to="." method="_on_body_right_button_up"]
[connection signal="button_down" from="Movements/Buttons/BodyLean" to="." method="_on_body_lean_button_down"] [connection signal="button_down" from="Movements/Buttons/BodyLean" to="." method="_on_body_lean_button_down"]
[connection signal="button_up" from="Movements/Buttons/BodyLean" to="." method="_on_body_lean_button_up"] [connection signal="button_up" from="Movements/Buttons/BodyLean" to="." method="_on_body_lean_button_up"]
[connection signal="pressed" from="Camera/Angle1Button" to="." method="_on_angle_1_button_pressed"]
[connection signal="pressed" from="Camera/Angle2Button" to="." method="_on_angle_2_button_pressed"]

View file

@ -25,6 +25,21 @@ func _input(event: InputEvent) -> void:
if event.is_action_pressed("toggle_editor_screen"): if event.is_action_pressed("toggle_editor_screen"):
$CameraPreview.visible = !$CameraPreview.visible; $CameraPreview.visible = !$CameraPreview.visible;
$CameraFullScreen.visible = !$CameraFullScreen.visible; $CameraFullScreen.visible = !$CameraFullScreen.visible;
elif event.is_action_pressed("sequencer_play_pause"):
if (playing): _on_pause_button_pressed()
else: _on_play_button_pressed()
elif event.is_action_pressed("sequencer_play_reverse"):
_on_play_backwards_button_pressed()
elif event.is_action_pressed("sequencer_fast_reverse"):
_on_fast_backwards_button_pressed()
elif event.is_action_pressed("sequencer_fast_forward"):
_on_fast_forward_button_pressed()
elif event.is_action_pressed("sequencer_step_backward"):
_on_step_backwards_button_pressed()
elif event.is_action_pressed("sequencer_step_forward"):
_on_step_forward_button_pressed()
elif event.is_action_pressed("sequencer_home"):
_on_stop_button_pressed()
func _physics_process(_delta: float) -> void: func _physics_process(_delta: float) -> void:
if (playing || recording): if (playing || recording):
@ -79,8 +94,9 @@ func _on_step_backwards_button_pressed() -> void:
playing = false playing = false
recording = false recording = false
end_recording.emit() end_recording.emit()
step.emit(-1) if (index != 0):
if (index != 0): index -= 1 step.emit(-1)
index -= 1
update_time_label() update_time_label()
func _on_fast_forward_button_pressed() -> void: func _on_fast_forward_button_pressed() -> void:

View file

@ -3,6 +3,8 @@ 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/3stHelen")
movement_in.connect(animatronic._movement_in) movement_in.connect(animatronic._movement_in)
@ -10,6 +12,11 @@ func _ready() -> void:
movement_in.connect(self._movement_in) movement_in.connect(self._movement_in)
movement_out.connect(self._movement_out) movement_out.connect(self._movement_out)
func _input(event: InputEvent) -> void:
if (event.is_action_pressed("cycle_camera_angle")):
cam_index += 1
get_node("../SubViewport/HelenHouse/Camera " + str((cam_index % 2)+1)).current = true
func _movement_in(movement, _rate): func _movement_in(movement, _rate):
get_node("Movements/IndicatorLights/" + movement).turn_on(); get_node("Movements/IndicatorLights/" + movement).turn_on();
@ -22,6 +29,21 @@ func _on_movements_flyout_button_toggled(toggled_on: bool) -> void:
func _on_flows_flyout_button_toggled(toggled_on: bool) -> void: func _on_flows_flyout_button_toggled(toggled_on: bool) -> void:
$FlowControls.visible = toggled_on $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:
get_node("../SubViewport/HelenHouse/Camera 1").current = true
func _on_angle_2_button_pressed() -> void:
get_node("../SubViewport/HelenHouse/Camera 2").current = true
func _on_mouth_button_down() -> void: func _on_mouth_button_down() -> void:
movement_in.emit("Mouth", $FlowControls/InFlows/MouthFlow.value) movement_in.emit("Mouth", $FlowControls/InFlows/MouthFlow.value)