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

@ -95,6 +95,14 @@ public class UDPAvatarBroadcasterAgent : MonoBehaviour
{
broadcastAddress = cfg.ipAddress;
broadcastPort = cfg.port;
// Subscribe to peer discovery if enabled
if (cfg.useAutoDiscovery && Convai.Scripts.Runtime.Multiplayer.UDPPeerDiscovery.Instance != null)
{
Convai.Scripts.Runtime.Multiplayer.UDPPeerDiscovery.Instance.OnPeerDiscovered += HandlePeerDiscovered;
Convai.Scripts.Runtime.Multiplayer.UDPPeerDiscovery.Instance.OnPeerLost += HandlePeerLost;
Debug.Log("Avatar broadcaster agent subscribed to peer discovery");
}
}
else
{
@ -447,6 +455,13 @@ public class UDPAvatarBroadcasterAgent : MonoBehaviour
void OnDestroy()
{
// Unsubscribe from peer discovery
if (Convai.Scripts.Runtime.Multiplayer.UDPPeerDiscovery.Instance != null)
{
Convai.Scripts.Runtime.Multiplayer.UDPPeerDiscovery.Instance.OnPeerDiscovered -= HandlePeerDiscovered;
Convai.Scripts.Runtime.Multiplayer.UDPPeerDiscovery.Instance.OnPeerLost -= HandlePeerLost;
}
if (udpClient != null)
{
udpClient.Close();
@ -454,6 +469,24 @@ public class UDPAvatarBroadcasterAgent : MonoBehaviour
}
}
private void HandlePeerDiscovered(string peerIP)
{
broadcastAddress = peerIP;
broadcastEndPoint = new IPEndPoint(IPAddress.Parse(peerIP), broadcastPort);
Debug.Log($"👤 Avatar broadcaster agent now targeting peer at {peerIP}:{broadcastPort}");
}
private void HandlePeerLost()
{
var cfg = NetworkConfig.Instance;
if (cfg != null)
{
broadcastAddress = cfg.fallbackBroadcastIP;
broadcastEndPoint = new IPEndPoint(IPAddress.Parse(broadcastAddress), broadcastPort);
Debug.LogWarning($"👤 Avatar broadcaster agent falling back to broadcast: {broadcastAddress}");
}
}
void OnApplicationPause(bool pauseStatus)
{
enableBroadcast = !pauseStatus;