diff --git a/Unity-Master/Assets/Scenes/VR_Player1.unity b/Unity-Master/Assets/Scenes/VR_Player1.unity
index 72d9f7b..79df12b 100644
--- a/Unity-Master/Assets/Scenes/VR_Player1.unity
+++ b/Unity-Master/Assets/Scenes/VR_Player1.unity
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3878f575e37c01f351d8e916e9985642c4c1387c24f1a34d0b56b7541b97ff71
-size 4403975
+oid sha256:c911d645c4a0bba6fd8b8c7300f5e58a1c276b26429924f982550bffcb05e2ef
+size 4411853
diff --git a/Unity-Master/Assets/Scenes/VR_Player2.unity b/Unity-Master/Assets/Scenes/VR_Player2.unity
index 93523ca..a00737f 100644
--- a/Unity-Master/Assets/Scenes/VR_Player2.unity
+++ b/Unity-Master/Assets/Scenes/VR_Player2.unity
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:64d2e61f684c4011a7aacfac03def790c372db18f288bba13584b3c0cc533d8e
-size 4488262
+oid sha256:5251ad7b0b163fb4778fd7b9ea3a9ab87994292ffee4e85190e0730c9ff42704
+size 4490772
diff --git a/Unity-Master/Assets/Scripts/AvatarDataDownloader.cs b/Unity-Master/Assets/Scripts/AvatarDataDownloader.cs
index 2467938..4c5a8f0 100644
--- a/Unity-Master/Assets/Scripts/AvatarDataDownloader.cs
+++ b/Unity-Master/Assets/Scripts/AvatarDataDownloader.cs
@@ -10,6 +10,8 @@ public class AvatarDataDownloader : MonoBehaviour
[Header("Server Configuration")]
[SerializeField] private string serverHost = "127.0.0.1";
[SerializeField] private int serverPort = 8080;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
[Header("Download Configuration")]
@@ -37,6 +39,16 @@ public class AvatarDataDownloader : MonoBehaviour
void Start()
{
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ serverHost = cfg.ipAddress;
+ serverPort = cfg.port;
+ }
+ }
// Set up file paths
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
if (!Directory.Exists(syncFilesPath))
diff --git a/Unity-Master/Assets/Scripts/AvatarDataUploader.cs b/Unity-Master/Assets/Scripts/AvatarDataUploader.cs
index e6387c6..7baf3b0 100644
--- a/Unity-Master/Assets/Scripts/AvatarDataUploader.cs
+++ b/Unity-Master/Assets/Scripts/AvatarDataUploader.cs
@@ -9,6 +9,8 @@ public class AvatarDataUploader : MonoBehaviour
[Header("Server Configuration")]
[SerializeField] private string serverHost = "127.0.0.1";
[SerializeField] private int serverPort = 8080;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private string uploadAsPlayer = "player1"; // Upload as which player
[Header("Upload Configuration")]
@@ -35,6 +37,16 @@ public class AvatarDataUploader : MonoBehaviour
void Start()
{
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ serverHost = cfg.ipAddress;
+ serverPort = cfg.port;
+ }
+ }
// Set up file paths
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
if (!Directory.Exists(syncFilesPath))
diff --git a/Unity-Master/Assets/Scripts/AvatarSyncClient.cs b/Unity-Master/Assets/Scripts/AvatarSyncClient.cs
index af21e6c..f758981 100644
--- a/Unity-Master/Assets/Scripts/AvatarSyncClient.cs
+++ b/Unity-Master/Assets/Scripts/AvatarSyncClient.cs
@@ -11,6 +11,8 @@ public class AvatarSyncClient : MonoBehaviour
[Header("Server Configuration")]
[SerializeField] private string serverHost = "127.0.0.1";
[SerializeField] private int serverPort = 8080;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
[Header("Sync Configuration")]
@@ -43,6 +45,16 @@ public class AvatarSyncClient : MonoBehaviour
void Start()
{
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ serverHost = cfg.ipAddress;
+ serverPort = cfg.port;
+ }
+ }
// Set up file paths
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
if (!Directory.Exists(syncFilesPath))
diff --git a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioReceiver.cs b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioReceiver.cs
index c63bbc1..fbf366f 100644
--- a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioReceiver.cs
+++ b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioReceiver.cs
@@ -12,14 +12,16 @@ using UnityEngine;
namespace Convai.Scripts.Runtime.Multiplayer
{
///
- /// Simple UDP Audio Receiver V2 - Simulates microphone input by triggering normal Convai flow
+ /// Simple UDP Audio Receiver - Simulates microphone input by triggering normal Convai flow
/// This approach is much simpler and more reliable than trying to replicate gRPC calls
///
- public class ConvaiSimpleUDPAudioReceiverV2 : MonoBehaviour
+ public class ConvaiSimpleUDPAudioReceiver : MonoBehaviour
{
[Header("Network Configuration")]
[SerializeField] private int listenPort = 12345;
[SerializeField] private bool enableDebugLogging = true;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[Header("NPC Target")]
[SerializeField] private bool useActiveNPC = true;
@@ -58,6 +60,15 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void Start()
{
_cancellationTokenSource = new CancellationTokenSource();
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ listenPort = cfg.port;
+ }
+ }
InitializeNetwork();
InitializeConvai();
diff --git a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioSender.cs b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioSender.cs
index 87c1609..67edbf3 100644
--- a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioSender.cs
+++ b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiSimpleUDPAudioSender.cs
@@ -18,6 +18,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
[Header("Network Settings")]
[SerializeField] private string targetIP = "127.0.0.1";
[SerializeField] private int targetPort = 12345;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[Header("Audio Settings")]
[SerializeField] private int recordingFrequency = 16000;
@@ -47,6 +49,16 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void Start()
{
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ targetIP = cfg.ipAddress;
+ targetPort = cfg.port;
+ }
+ }
InitializeNetwork();
InitializeAudio();
_cancellationTokenSource = new CancellationTokenSource();
diff --git a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechReceiver.cs b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechReceiver.cs
index 8b08d97..4d17f36 100644
--- a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechReceiver.cs
+++ b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechReceiver.cs
@@ -19,6 +19,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
[Header("Network Configuration")]
[SerializeField] private int listenPort = 12346;
[SerializeField] private bool enableDebugLogging = true;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[Header("Audio Playback")]
[SerializeField] private AudioSource speechAudioSource;
@@ -105,6 +107,15 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void Start()
{
_cancellationTokenSource = new CancellationTokenSource();
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ listenPort = cfg.port;
+ }
+ }
InitializeAudio();
InitializeNetwork();
}
diff --git a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechSender.cs b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechSender.cs
index dd9ef81..e972e9d 100644
--- a/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechSender.cs
+++ b/Unity-Master/Assets/Scripts/Multiplayer/ConvaiUDPSpeechSender.cs
@@ -21,6 +21,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
[SerializeField] private string targetIP = "127.0.0.1";
[SerializeField] private int targetPort = 12346;
[SerializeField] private bool enableDebugLogging = true;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[Header("NPC Source")]
[SerializeField] private bool useActiveNPC = true;
@@ -53,6 +55,16 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void Start()
{
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ targetIP = cfg.ipAddress;
+ targetPort = cfg.port;
+ }
+ }
InitializeNetwork();
InitializeConvai();
}
diff --git a/Unity-Master/Assets/Scripts/NetworkConfig.asset b/Unity-Master/Assets/Scripts/NetworkConfig.asset
new file mode 100644
index 0000000..0ff4eed
--- /dev/null
+++ b/Unity-Master/Assets/Scripts/NetworkConfig.asset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a67203d8d07617bf9123d8b8768746da191c3f9f0705b525103f02cbc110c31
+size 438
diff --git a/Unity-Master/Assets/Scripts/NetworkConfig.asset.meta b/Unity-Master/Assets/Scripts/NetworkConfig.asset.meta
new file mode 100644
index 0000000..c5b428b
--- /dev/null
+++ b/Unity-Master/Assets/Scripts/NetworkConfig.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 48e977b8cb2ab584a81bd94b48c1b2ab
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity-Master/Assets/Scripts/NetworkConfig.cs b/Unity-Master/Assets/Scripts/NetworkConfig.cs
new file mode 100644
index 0000000..46022ba
--- /dev/null
+++ b/Unity-Master/Assets/Scripts/NetworkConfig.cs
@@ -0,0 +1,24 @@
+using UnityEngine;
+
+[CreateAssetMenu(fileName = "NetworkConfig", menuName = "Config/Network Config")]
+public class NetworkConfig : ScriptableObject
+{
+ [Header("Global Network Settings")]
+ public string ipAddress = "127.0.0.1";
+ public int port = 8080;
+
+ private static NetworkConfig _instance;
+ public static NetworkConfig Instance
+ {
+ get
+ {
+ if (_instance == null)
+ {
+ _instance = Resources.Load("NetworkConfig");
+ }
+ return _instance;
+ }
+ }
+}
+
+
diff --git a/Unity-Master/Assets/Scripts/NetworkConfig.cs.meta b/Unity-Master/Assets/Scripts/NetworkConfig.cs.meta
new file mode 100644
index 0000000..17b1294
--- /dev/null
+++ b/Unity-Master/Assets/Scripts/NetworkConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c2f6ca8e295dcbc4a9dece402d799c69
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity-Master/Assets/Scripts/UDPAvatarBroadcaster.cs b/Unity-Master/Assets/Scripts/UDPAvatarBroadcaster.cs
index 518886c..b89d605 100644
--- a/Unity-Master/Assets/Scripts/UDPAvatarBroadcaster.cs
+++ b/Unity-Master/Assets/Scripts/UDPAvatarBroadcaster.cs
@@ -10,6 +10,8 @@ public class UDPAvatarBroadcaster : MonoBehaviour
[Header("Network Configuration")]
[SerializeField] private int broadcastPort = 8080;
[SerializeField] private string broadcastAddress = "10.138.6.255"; // Local network broadcast
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private bool enableBroadcast = true;
[Header("Avatar Configuration")]
@@ -83,6 +85,16 @@ public class UDPAvatarBroadcaster : MonoBehaviour
void Start()
{
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ broadcastAddress = cfg.ipAddress;
+ broadcastPort = cfg.port;
+ }
+ }
InitializeNetworking();
CacheAvatarComponents();
diff --git a/Unity-Master/Assets/Scripts/UDPAvatarReceiver.cs b/Unity-Master/Assets/Scripts/UDPAvatarReceiver.cs
index 561d840..17a73aa 100644
--- a/Unity-Master/Assets/Scripts/UDPAvatarReceiver.cs
+++ b/Unity-Master/Assets/Scripts/UDPAvatarReceiver.cs
@@ -11,6 +11,8 @@ public class UDPAvatarReceiver : MonoBehaviour
{
[Header("Network Configuration")]
[SerializeField] private int listenPort = 8080;
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private bool enableReceiver = true;
[SerializeField] private byte targetPlayerID = 2; // Which player to receive data from (0 = any)
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
@@ -85,6 +87,16 @@ public class UDPAvatarReceiver : MonoBehaviour
if (targetAvatarRoot == null)
targetAvatarRoot = transform;
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ listenPort = cfg.port;
+ }
+ }
+
CacheAvatarComponents();
if (enableReceiver)
diff --git a/Unity-Master/Assets/Scripts/VRExperimentController.cs b/Unity-Master/Assets/Scripts/VRExperimentController.cs
index b0ff294..47a2198 100644
--- a/Unity-Master/Assets/Scripts/VRExperimentController.cs
+++ b/Unity-Master/Assets/Scripts/VRExperimentController.cs
@@ -18,6 +18,8 @@ public class VRExperimentController : MonoBehaviour
[Header("Network Settings")]
[SerializeField] private int udpPort = 1221;
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
+ [SerializeField] private bool useGlobalNetworkConfig = true;
+ [SerializeField] private NetworkConfig networkConfigAsset;
[Header("Avatar Assignments")]
[SerializeField] private GameObject helpfulAvatar;
@@ -55,6 +57,15 @@ public class VRExperimentController : MonoBehaviour
void Start()
{
+ // Apply global config if enabled
+ if (useGlobalNetworkConfig)
+ {
+ var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
+ if (cfg != null)
+ {
+ udpPort = cfg.port;
+ }
+ }
InitializeObjectMaps();
StartUDPListener();