public void OnApplicationQuit() { // just to be sure... m_runThread = false; m_workerThread?.Join(); m_workerThread = null; m_client = null; MajorDomoClient.Terminate(); }
public void Awake() { configuration.LoadConfiguration(); // force instantiation m_client = new MajorDomoClient(); m_entitiesToPublish = new List <EntityData>(); m_entitiesToRevoke = new List <EntityData>(); m_entitiesToControl = new List <EntityData>(); m_entitiesToRelease = new List <EntityData>(); m_registeredClients = new List <ClientData>(); m_unregisteredClients = new List <ClientData>(); m_processingClients = new List <ClientData>(); m_publishedEntities = new List <EntityData>(); m_revokedEntities = new List <EntityData>(); m_controlledEntities = new List <EntityData>(); m_processingEntities = new List <EntityData>(); m_broadcasts = new List <Broadcast>(); m_processingBroadcasts = new List <Broadcast>(); m_serverShutdown = new List <bool>(); m_state = ManagerState.Preparing; m_prevState = m_state; m_connectionRequested = false; m_runThread = true; m_workerThread = new Thread(WorkerThread); m_workerThread.Start(); ReplaceSpecialApplicationNameParts(); if (configuration.AutoConnectDelay > 0) { StartCoroutine(AutoConnectAsync()); } // auto-register objects that use MajorDomo IAutoRegister[] autoRegisterObjects = Resources.FindObjectsOfTypeAll <SynchronisedGameObject>(); foreach (var obj in autoRegisterObjects) { obj.RegisterWithMajorDomoManager(); } }