private void Connect() { ClientConfig config = new ClientConfig(ClientRole); config.SetIsAudioEndpoint(IsAudioEndpoint); config.SetLogWriter(logWriter); // Only set the server info is we are connecting on awake if (connectOnAwake) { config.SetServerAddress(ServerAddress); config.SetServerPort(ServerPort); } Manager = SharingManager.Create(config); //set up callbacks so that we know when we've connected successfully networkConnection = Manager.GetServerConnection(); networkConnectionAdapter = new NetworkConnectionAdapter(); networkConnectionAdapter.ConnectedCallback += NetworkConnectionAdapter_ConnectedCallback; networkConnection.AddListener((byte)MessageID.StatusOnly, networkConnectionAdapter); SyncStateListener = new SyncStateListener(); Manager.RegisterSyncListener(SyncStateListener); Root = new SyncRoot(Manager.GetRootSyncObject()); SessionsTracker = new ServerSessionsTracker(Manager.GetSessionManager()); SessionUsersTracker = new SessionUsersTracker(SessionsTracker); using (XString userName = new XString(DefaultUserName)) { Manager.SetUserName(userName); } }
protected override void OnDestroy() { base.OnDestroy(); if (discoveryClient != null) { discoveryClient.RemoveListener(discoveryClientAdapter); discoveryClient.Dispose(); discoveryClient = null; if (discoveryClientAdapter != null) { discoveryClientAdapter.Dispose(); discoveryClientAdapter = null; } } if (Manager != null) { // Force a disconnection so that we can stop and start Unity without connections hanging around Manager.GetPairedConnection().Disconnect(); Manager.GetServerConnection().Disconnect(); } // Release the Sharing resources if (SessionUsersTracker != null) { SessionUsersTracker.Dispose(); SessionUsersTracker = null; } if (SessionsTracker != null) { SessionsTracker.Dispose(); SessionsTracker = null; } if (networkConnection != null) { networkConnection.RemoveListener((byte)MessageID.StatusOnly, networkConnectionAdapter); networkConnection.Dispose(); networkConnection = null; if (networkConnectionAdapter != null) { networkConnectionAdapter.Dispose(); networkConnectionAdapter = null; } } if (Manager != null) { Manager.Dispose(); Manager = null; } // Forces a garbage collection to try to clean up any additional reference to SWIG-wrapped objects GC.Collect(); }
private void Connect() { var config = new ClientConfig(ClientRole); config.SetIsAudioEndpoint(IsAudioEndpoint); config.SetLogWriter(logWriter); // Only set the server info is we are connecting on awake if (connectOnAwake) { config.SetServerAddress(ServerAddress); /*#if UNITY_EDITOR * config.SetServerAddress("localhost"); #endif*/ config.SetServerPort(ServerPort); } Manager = SharingManager.Create(config); //set up callbacks so that we know when we've connected successfully networkConnection = Manager.GetServerConnection(); networkConnectionAdapter = new NetworkConnectionAdapter(); networkConnectionAdapter.ConnectedCallback += NetworkConnectionAdapter_ConnectedCallback; networkConnection.AddListener((byte)MessageID.StatusOnly, networkConnectionAdapter); SyncStateListener = new SyncStateListener(); Manager.RegisterSyncListener(SyncStateListener); Root = new SyncRoot(Manager.GetRootSyncObject()); SessionsTracker = new ServerSessionsTracker(Manager.GetSessionManager()); SessionUsersTracker = new SessionUsersTracker(SessionsTracker); using (var userName = new XString(DefaultUserName)) { #if UNITY_WSA && !UNITY_EDITOR Manager.SetUserName(SystemInfo.deviceName); #else if (!string.IsNullOrEmpty(Environment.UserName)) { Manager.SetUserName(Environment.UserName); } else { User localUser = Manager.GetLocalUser(); Manager.SetUserName(userName + localUser.GetID().ToString()); } #endif } }
private void ManagerInit(bool setConnection) { var config = new ClientConfig(ClientRole); config.SetIsAudioEndpoint(IsAudioEndpoint); config.SetLogWriter(logWriter); if (setConnection) { config.SetServerAddress(ServerAddress); config.SetServerPort(ServerPort); } Manager = SharingManager.Create(config); // Set up callbacks so that we know when we've connected successfully. networkConnectionAdapter = new NetworkConnectionAdapter(); networkConnectionAdapter.ConnectedCallback += OnNetworkConnectionChanged; networkConnectionAdapter.DisconnectedCallback += OnNetworkConnectionChanged; Connection.AddListener((byte)MessageID.StatusOnly, networkConnectionAdapter); SyncStateListener = new SyncStateListener(); Manager.RegisterSyncListener(SyncStateListener); Root = new SyncRoot(Manager.GetRootSyncObject()); SessionsTracker = new ServerSessionsTracker(Manager.GetSessionManager()); SessionUsersTracker = new SessionUsersTracker(SessionsTracker); RoomManagerAdapter = new RoomManagerAdapter(); CurrentRoomManager.AddListener(RoomManagerAdapter); using (var userName = new XString(DefaultUserName)) { #if UNITY_WSA && !UNITY_EDITOR Manager.SetUserName(SystemInfo.deviceName); #else if (!string.IsNullOrEmpty(Environment.UserName)) { Manager.SetUserName(Environment.UserName); } else { User localUser = Manager.GetLocalUser(); Manager.SetUserName(userName + localUser.GetID().ToString()); } #endif } }