29 lines
842 B
GDScript
29 lines
842 B
GDScript
extends Node3D
|
|
class_name ClientNode
|
|
|
|
@export var is_connected_to_camera: bool = false
|
|
|
|
var available_cameras: Array[CameraMount] = []
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _physics_process(delta: float) -> void:
|
|
if not is_connected_to_camera:
|
|
var game_root := helpers.get_root_node()
|
|
var available_cameras_raw: Array[Node] = game_root.find_children(
|
|
"*", "CameraMount", true, false
|
|
)
|
|
for camera_raw in available_cameras_raw:
|
|
var camera: CameraMount = camera_raw as CameraMount
|
|
if camera.active:
|
|
if camera.accept_input:
|
|
camera.connect_to_camera()
|
|
break
|
|
camera.connect_to_camera()
|
|
available_cameras.append(camera)
|
|
|
|
|
|
@rpc("authority", "reliable", "call_local")
|
|
func force_camera_attachment(camera_mount: CameraMount) -> void:
|
|
camera_mount.connect_to_camera()
|