added peer discovery settings to NetworkConfig and updated UDP broadcasting scripts to handle peer discovery events

This commit is contained in:
tom.hempel
2025-10-22 13:04:15 +02:00
parent 18f3abbd7d
commit 6a99392e34
8 changed files with 619 additions and 2 deletions

View File

@ -88,6 +88,14 @@ namespace Convai.Scripts.Runtime.Multiplayer
{
targetIP = cfg.ipAddress;
targetPort = cfg.port;
// Subscribe to peer discovery if enabled
if (cfg.useAutoDiscovery && UDPPeerDiscovery.Instance != null)
{
UDPPeerDiscovery.Instance.OnPeerDiscovered += HandlePeerDiscovered;
UDPPeerDiscovery.Instance.OnPeerLost += HandlePeerLost;
ConvaiLogger.Info("Audio sender subscribed to peer discovery", ConvaiLogger.LogCategory.Character);
}
}
else
{
@ -130,6 +138,13 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void OnDestroy()
{
// Unsubscribe from peer discovery
if (UDPPeerDiscovery.Instance != null)
{
UDPPeerDiscovery.Instance.OnPeerDiscovered -= HandlePeerDiscovered;
UDPPeerDiscovery.Instance.OnPeerLost -= HandlePeerLost;
}
StopRecording();
_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
@ -143,6 +158,24 @@ namespace Convai.Scripts.Runtime.Multiplayer
_udpClient?.Close();
}
private void HandlePeerDiscovered(string peerIP)
{
targetIP = peerIP;
_targetEndPoint = new IPEndPoint(IPAddress.Parse(peerIP), targetPort);
ConvaiLogger.Info($"🎤 Audio sender now targeting peer at {peerIP}:{targetPort}", ConvaiLogger.LogCategory.Character);
}
private void HandlePeerLost()
{
var cfg = NetworkConfig.Instance;
if (cfg != null)
{
targetIP = cfg.fallbackBroadcastIP;
_targetEndPoint = new IPEndPoint(IPAddress.Parse(targetIP), targetPort);
ConvaiLogger.Warn($"🎤 Audio sender falling back to broadcast: {targetIP}", ConvaiLogger.LogCategory.Character);
}
}
private void InitializeNetwork()
{
try