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() print("[%s] Add player: %s %s @ %v" % [Global.username, player_id, player_name, server_position]) var player := spawn_player(player_id) player.position = server_position player.set_character_name(player_name) Global.players.add(player) func spawn_player(id: String) -> 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 if id == Global.account_id: player.controller = PlayerController.new() Global.player = player main_player_spawned.emit(player) else: player.controller = ProxyController.new() player.controller.character = player player.add_child(player.controller) return player