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_player(attacker) Session.TEAMS.DEFENCE: for defender in Lobby.defence_team: spawn_player(defender) Session.TEAMS.SPECTATE: for specator in Lobby.specators_team: spawn_spectator(specator) func spawn_player(id: int) -> void: var player: PackedScene = load("res://scenes/molikman.tscn") var inst: Player = player.instantiate() inst.name = str(id) deferred_setup.bind(inst,team).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,Session.TEAMS.SPECTATE).call_deferred() func deferred_setup(what: Node3D, new_team: Session.TEAMS): get_tree().current_scene.add_child(what) var distance = randf_range(0,spawn_radius) var angle = randf_range(0,TAU) var new_position = global_position + Vector3.RIGHT.rotated(Vector3.UP,angle) * distance what.set_after_spawn.rpc_id(int(what.name),new_position,new_team)