class_name CameraController extends Control @onready var prev_bttn: Button = $margin_container/vbox/hbox/hbox2/prev_bttn @onready var next_bttn: Button = $margin_container/vbox/hbox/hbox2/next_bttn @export var cameras: Array[Camera3D] var cue_cam: Camera3D var current_cam: Camera3D var current_cam_index: int = 0 func _ready() -> void: setup_signals() setup_multiplayer() for camera in get_children(): if not is_instance_of(camera, Camera3D): continue cameras.append(camera) if not camera.name == "cue_cam": continue cue_cam = camera current_cam = cameras.get(current_cam_index) func setup_signals() -> void: Globals.game_state.update_cue_cam_position.connect( _on_update_cue_cam_position ) func setup_multiplayer() -> void: if not Globals.multiplayer_data.is_multiplayer_active: return func _on_update_cue_cam_position(marker_rotation: Vector3, marker_position: Vector3) -> void: cue_cam.global_rotation = marker_rotation cue_cam.global_position = marker_position func _on_prev_bttn_pressed() -> void: accept_event() if current_cam_index == 0: current_cam_index = cameras.size() - 1 else: current_cam_index -= 1 _set_active_camera() func _on_next_bttn_pressed() -> void: accept_event() if current_cam_index == (cameras.size() - 1): current_cam_index = 0 else: current_cam_index += 1 _set_active_camera() func _set_active_camera(): current_cam.set_current(false) current_cam = cameras.get(current_cam_index) current_cam.set_current(true)