예제 #1
0
    /**
     * Start the lobby in server-mode.
     */
    public void StartServer(ICExperiment experiment)
    {
        SwitchToPanel(lobby.gameObject);
        lobby.StartServer(experiment);

        currentState = State.ServerLobby;
    }
예제 #2
0
    /**
     * Start the experiment (by changing the scene)
     */
    public void StartExperiment(ICExperiment experiment)
    {
        if (!experiment)
        {
            return;
        }

        lobby.StopBroadcast();

        // Switch back to neutral panel
        SwitchToPanel(experimentBrowser.gameObject);
        currentState = State.ExperimentBrowser;

        // Change level
        ICEventfulNetworkManager networkManager = ICNetworkUtilities.GetNetworkManager();

        networkManager.ServerChangeScene(experiment.sceneName);
    }
예제 #3
0
    /**
     * Start the lobby in server-mode.
     */
    public void StartServer(ICExperiment experiment)
    {
        var networkDiscovery = ICNetworkUtilities.GetNetworkDiscovery();
        var networkManager   = ICNetworkUtilities.GetNetworkManager();

        // Mark as server
        _isServer = true;

        // Update listeners
        SetupServerEventListeners(networkManager);

        // Start server and initialize broadcast
        networkManager.StartHost();

        networkDiscovery.Initialize();
        networkDiscovery.broadcastData =
            "NetworkManager:" +
            networkManager.networkAddress + ":" +
            networkManager.networkPort + ":" +
            experiment.getDisplayName();

        if (!networkDiscovery.StartAsServer())
        {
            throw new Exception("StartAsServer returned false in ICLobbyController.");
        }

        // Enable start button
        startButton.enabled = true;
        startButton.onClick.RemoveAllListeners();
        startButton.onClick.AddListener(() => { experimentSetup.StartExperiment(experiment); });

        // Remove old synchronization script
        if (syncScript)
        {
            NetworkServer.Destroy(syncScript.gameObject);
            Destroy(syncScript.gameObject);
        }

        // Spawn synchronization script on the network
        syncScript = GameObject.Instantiate(syncScriptPrefab).GetComponent <ICLobbySync>();
        NetworkServer.Spawn(syncScript.gameObject);
        syncScript.transform.SetParent(gameObject.transform);
    }