예제 #1
0
    static IEnumerator StartRoutine(QuickStartSettings settings)
    {
        SimulationWorldSystem.ClearAllSimulationWorlds();

        SceneService.Load(Assets.emptyScene.name, LoadSceneMode.Additive, LocalPhysicsMode.Physics3D);

        yield return(null); // wait for scene load

        PlayerProfileService.Instance.SetPlayerProfile(settings.localProfileId);

        switch (settings.playMode)
        {
        case QuickStartSettings.PlayMode.Local:
            yield return(StartLocal(settings));

            break;

        case QuickStartSettings.PlayMode.OnlineClient:
            yield return(StartClient(settings));

            break;

        case QuickStartSettings.PlayMode.OnlineServer:
            yield return(StartServer(settings));

            break;
        }

        SceneService.UnloadAsync(Assets.emptyScene);
    }
예제 #2
0
 public virtual void Enter(GameStateParam[] parameters)
 {
     if (Definition.SceneToLoadOnEnter != null && !SceneService.IsLoadedOrBeingLoaded(Definition.SceneToLoadOnEnter))
     {
         _sceneLoadPromise             = SceneService.Load(Definition.SceneToLoadOnEnter, Definition.SceneLoadSettings);
         _sceneLoadPromise.OnComplete += OnDefaultSceneLoaded;
     }
 }
예제 #3
0
    public void Load()
    {
        if (dontLoadDuplicate && SceneService.IsLoadedOrBeingLoaded(sceneInfo))
        {
            return;
        }


        _loadPromise = SceneService.Load(sceneInfo.SceneName, new SceneLoadSettings()
        {
            Async            = loadAsync,
            LoadSceneMode    = LoadSceneMode.Additive,
            LocalPhysicsMode = LocalPhysicsMode.Physics3D
        });

        _loadPromise.OnComplete += OnSceneLoaded;
    }
        public void UpdateSceneLoading()
        {
            if (_tickSystem.AvailableTicks.Count > 0)
            {
                SimTickData tick = _tickSystem.AvailableTicks.First();

                _tickId.Set(tick.ExpectedNewTickId); // clear ignore list if tick has changed
                if (_tickId.ClearDirty())
                {
                    _inputsToIgnore.Clear();
                }

                foreach (SimInputSubmission inputSubmission in tick.InputSubmissions)
                {
                    if (inputSubmission.Input is SimCommandLoadScene loadSceneCommand)
                    {
                        if (!IsLoading(loadSceneCommand.SceneName) && !_inputsToIgnore.Contains(loadSceneCommand))
                        {
                            // add input to 'ignore list' to make sure we don't load the same scenes over and over
                            _inputsToIgnore.Add(loadSceneCommand);

                            // prepare for entity injection (through convertion)
                            _simulationWorldSystem.RegisterIncomingEntityInjection(loadSceneCommand.SceneName);

                            // request load
                            _sceneLoads.Add(SceneService.Load(loadSceneCommand.SceneName, LoadSceneMode.Additive, LocalPhysicsMode.Physics3D));
                        }
                    }
                }
            }

            // clear when all scenes are loaded
            if (AreAllLoadsComplete())
            {
                _sceneLoadsToUnregisterOnUpdate.AddRange(_sceneLoads);
                _sceneLoads.Clear();
            }
        }