extends PacketHandler signal main_player_spawned(player: Player) @export var player_scene: PackedScene func _ready(): assert(player_scene) func handle_packet(data: PackedByteArray): var buffer := StreamPeerBuffer.new() buffer.data_array = data var player_id := buffer.get_string() var player_name := buffer.get_string() var server_position := Vector3() server_position.x = buffer.get_float() server_position.y = buffer.get_float() server_position.z = buffer.get_float() %Client.log("Add player: %s %s @ %v" % [player_id, player_name, server_position]) spawn_player(player_id, player_name, server_position) func spawn_player(id: String, nick: String, position: Vector3) -> Player: var player: Player if Global.players.has(id): player = Global.players.get_player(id) if id == Global.account.id: Global.player = player return player player = player_scene.instantiate() player.id = id player.position = position var controller: Controller if id == Global.account.id: controller = PlayerController.new(player) Global.player = player main_player_spawned.emit(player) else: controller = ProxyController.new(player) player.set_player_name(nick) player.add_child(controller) Global.players.add(player) controller.control(player) return player