switch to two voip addon

This commit is contained in:
Nordup 2025-09-15 17:30:54 +07:00
parent cf11ceffc4
commit 9ce4caa073
39 changed files with 193 additions and 52 deletions

View file

@ -3,7 +3,7 @@ extends Node
@export var user_scn: PackedScene
@export var player_spawner: PlayerSpawner
var mic_capture: VOIPInputCapture
var opuschunked: AudioEffectOpusChunked
var users = {} # {Peer ID: VoipUser}
@ -15,8 +15,7 @@ func _ready() -> void:
player_spawner.player_spawned.connect(player_spawned)
var mic_bus = AudioServer.get_bus_index("Record")
mic_capture = AudioServer.get_bus_effect(mic_bus, 0)
mic_capture.packet_ready.connect(voice_packet_ready)
opuschunked = AudioServer.get_bus_effect(mic_bus, 0)
func peer_connected(id: int) -> void:
@ -44,22 +43,22 @@ func player_spawned(id: int, player: Player) -> void:
if users.has(id): users[id].set_anchor(player)
func voice_packet_ready(packet: PackedByteArray) -> void:
if not Microphone.is_speaking: return
if Connection.is_peer_connected:
rpc("voice_packet_received", packet)
@rpc("any_peer", "call_remote", "unreliable_ordered", 1)
func voice_packet_received(packet: PackedByteArray) -> void:
if multiplayer.is_server(): return
var sender_id = multiplayer.get_remote_sender_id()
users[sender_id].stream.push_packet(packet)
func _process(_delta: float) -> void:
if not Connection.is_peer_connected: return
if multiplayer.is_server(): return
mic_capture.send_test_packets()
var prepend = PackedByteArray()
while opuschunked.chunk_available():
var opusdata: PackedByteArray = opuschunked.read_opus_packet(prepend)
opuschunked.drop_chunk()
if not Microphone.is_speaking: continue
rpc("opus_data_received", opusdata)
@rpc("any_peer", "call_remote", "unreliable_ordered", 1)
func opus_data_received(opusdata: PackedByteArray) -> void:
if multiplayer.is_server(): return
var sender_id = multiplayer.get_remote_sender_id()
users[sender_id].opuspacketsbuffer.append(opusdata)