extends Node3D @export var team: Session.TEAMS @export var spawn_radius: float func _ready() -> void: if not multiplayer.is_server(): return match team: Session.TEAMS.ATTACK: for attacker in Lobby.attack_team: spawn_attacker(attacker) Session.TEAMS.DEFENCE: for defender in Lobby.defence_team: spawn_defender(defender) Session.TEAMS.SPECTATE: for specator in Lobby.specators_team: spawn_spectator(specator) func spawn_defender(id: int) -> void: var player: PackedScene = load("res://scenes/molikman.tscn") var inst: Player = player.instantiate() inst.name = str(id) inst.team = Session.TEAMS.DEFENCE deferred_setup.bind(inst).call_deferred() func spawn_attacker(id: int) -> void: var player: PackedScene = load("res://scenes/molikman.tscn") var inst: Player = player.instantiate() inst.name = str(id) inst.team = Session.TEAMS.ATTACK deferred_setup.bind(inst).call_deferred() func spawn_spectator(id: int) -> void: var spectator: PackedScene = load("res://scenes/spectator.tscn") var inst = spectator.instantiate() inst.name = str(id) deferred_setup.bind(inst).call_deferred() func deferred_setup(what: Node3D): get_tree().current_scene.add_child(what) var distance = randf_range(0,spawn_radius) var angle = randf_range(0,TAU) what.set_start_position.rpc_id(int(what.name),global_position + Vector3.RIGHT.rotated(Vector3.UP,angle) * distance)