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

@ -59,6 +59,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("Speech sender subscribed to peer discovery", ConvaiLogger.LogCategory.Character);
}
}
else
{
@ -73,10 +81,35 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void OnDestroy()
{
// Unsubscribe from peer discovery
if (UDPPeerDiscovery.Instance != null)
{
UDPPeerDiscovery.Instance.OnPeerDiscovered -= HandlePeerDiscovered;
UDPPeerDiscovery.Instance.OnPeerLost -= HandlePeerLost;
}
CleanupNPCSubscriptions();
CleanupNetwork();
}
private void HandlePeerDiscovered(string peerIP)
{
targetIP = peerIP;
_targetEndPoint = new IPEndPoint(IPAddress.Parse(peerIP), targetPort);
ConvaiLogger.Info($"🔊 Speech 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($"🔊 Speech sender falling back to broadcast: {targetIP}", ConvaiLogger.LogCategory.Character);
}
}
private void InitializeNetwork()
{
try