private async UniTask PerformPostEngineInitializationTasks() { await LoadSettingsAsync(); if (!Engine.Initializing) { return; } await LoadGlobalAsync(); if (!Engine.Initializing) { return; } if (Configuration.EnableStateRollback) { InitializeRollback(); } async UniTask LoadSettingsAsync() { SettingsState = await SettingsSlotManager.LoadOrDefaultAsync(Configuration.DefaultSettingsSlotId); await LoadAllServicesFromStateAsync <IStatefulService <SettingsStateMap>, SettingsStateMap>(SettingsState); } async UniTask LoadGlobalAsync() { GlobalState = await GlobalSlotManager.LoadOrDefaultAsync(Configuration.DefaultGlobalSlotId); await LoadAllServicesFromStateAsync <IStatefulService <GlobalStateMap>, GlobalStateMap>(GlobalState); } void InitializeRollback() { scriptPlayer.AddPreExecutionTask(HandleCommandPreExecution); rollbackInput = Engine.GetService <IInputManager>().GetRollback(); if (rollbackInput != null) { rollbackInput.OnStart += HandleRollbackInputStart; } } }
public virtual async UniTask SaveGlobalAsync() { SaveAllServicesToState <IStatefulService <GlobalStateMap>, GlobalStateMap>(GlobalState); await GlobalSlotManager.SaveAsync(Configuration.DefaultGlobalSlotId, GlobalState); }