public async void Start()
        {
            var connParams = CreateConnectionParameters(WorkerType, new MobileConnectionParametersInitializer());

            var flowInitializer = new MobileConnectionFlowInitializer(
                new MobileConnectionFlowInitializer.CommandLineSettingsProvider(),
                new MobileConnectionFlowInitializer.PlayerPrefsSettingsProvider(),
                this);

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connParams);

            switch (flowInitializer.GetConnectionService())
            {
            case ConnectionService.Receptionist:
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerType),
                                                               flowInitializer));
                break;

            default:
                throw new ArgumentException("Received unsupported connection service.");
            }

            await Connect(builder, new ForwardingDispatcher()).ConfigureAwait(false);
        }
Пример #2
0
        protected override IConnectionHandlerBuilder GetConnectionHandlerBuilder()
        {
            var connParams = CreateConnectionParameters(WorkerUtils.MobileClient);

            connParams.Network.UseExternalIp  = true;
            connParams.Network.ConnectionType = NetworkConnectionType.ModularKcp;

            var initializer = new MobileConnectionFlowInitializer(
                new MobileConnectionFlowInitializer.CommandLineSettingsProvider(),
                new MobileConnectionFlowInitializer.PlayerPrefsSettingsProvider(),
                this);

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connParams);

            switch (initializer.GetConnectionService())
            {
            case ConnectionService.Receptionist:
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.MobileClient),
                                                               initializer));
                break;

            case ConnectionService.Locator:
                builder.SetConnectionFlow(new LocatorFlow(initializer));
                break;

            default:
                throw new ArgumentException("Received unsupported connection service.");
            }

            return(builder);
        }
        protected override IConnectionHandlerBuilder GetConnectionHandlerBuilder()
        {
            var connParams = CreateConnectionParameters(WorkerUtils.MobileClient);

            connParams.Network.UseExternalIp  = true;
            connParams.Network.ConnectionType = NetworkConnectionType.Kcp;
            connParams.Network.Kcp            = new KcpNetworkParameters
            {
                // These are the last tested values
                Heartbeat = new HeartbeatParameters
                {
                    IntervalMillis = 5000,
                    TimeoutMillis  = 10000
                }
            };

            var initializer = new MobileConnectionFlowInitializer(
                new MobileConnectionFlowInitializer.CommandLineSettingsProvider(),
                new MobileConnectionFlowInitializer.PlayerPrefsSettingsProvider(),
                this);

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connParams);

            if (UseSessionFlow)
            {
                builder.SetConnectionFlow(new ChosenDeploymentLocatorFlow(deployment,
                                                                          new SessionConnectionFlowInitializer(initializer)));
                return(builder);
            }

            switch (initializer.GetConnectionService())
            {
            case ConnectionService.Receptionist:
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.MobileClient),
                                                               initializer));
                break;

            case ConnectionService.Locator:
                builder.SetConnectionFlow(new LocatorFlow(initializer));
                break;

            default:
                throw new ArgumentException("Received unsupported connection service.");
            }

            return(builder);
        }
        public async void Start()
        {
            var connParams = CreateConnectionParameters(WorkerUtils.MobileClient, new MobileConnectionParametersInitializer());

            var flowInitializer = new MobileConnectionFlowInitializer(
                new MobileConnectionFlowInitializer.CommandLineSettingsProvider(),
                new MobileConnectionFlowInitializer.PlayerPrefsSettingsProvider(),
                this);

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connParams);

            switch (flowInitializer.GetConnectionService())
            {
            case ConnectionService.Receptionist:
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.MobileClient),
                                                               flowInitializer));
                break;

            case ConnectionService.Locator:
                builder.SetConnectionFlow(new LocatorFlow(flowInitializer));
                break;

            default:
                throw new ArgumentException("Received unsupported connection service.");
            }

            await Connect(builder, new ForwardingDispatcher());

            if (level == null)
            {
                return;
            }

            levelInstance = Instantiate(level, transform.position, transform.rotation);
        }