DI updates
This commit is contained in:
@@ -46,8 +46,10 @@ namespace RebootKit.Engine {
|
||||
_diContext = new DIContext();
|
||||
_diContext.AddInjector(new CVarFieldInjector());
|
||||
|
||||
await CreateCoreServices(cancellationToken);
|
||||
await RegisterServicesFromMainSceneAsync(cancellationToken);
|
||||
CreateCoreServices();
|
||||
InstallMainScene();
|
||||
|
||||
await UniTask.Yield(cancellationToken);
|
||||
}
|
||||
|
||||
public async UniTask Run(CancellationToken cancellationToken) {
|
||||
@@ -55,25 +57,23 @@ namespace RebootKit.Engine {
|
||||
await _gameService.Start(_engineConfigAsset.StartingGameMode, cancellationToken);
|
||||
}
|
||||
|
||||
private async UniTask<TService> CreateServiceAsync<TService>(ServiceAsset<TService> asset, CancellationToken cancellationToken = default) where TService : IService {
|
||||
private TService CreateService<TService>(ServiceAsset<TService> asset) where TService : IService {
|
||||
TService service = asset.Create();
|
||||
_diContext.Bind<TService>(service);
|
||||
_diContext.Bind(service);
|
||||
_diContext.Inject(service);
|
||||
|
||||
await service.OnInit(cancellationToken);
|
||||
return service;
|
||||
}
|
||||
|
||||
private async UniTask CreateCoreServices(CancellationToken cancellationToken) {
|
||||
private void CreateCoreServices() {
|
||||
Logger.Debug("Registering core services");
|
||||
|
||||
_consoleService = await CreateServiceAsync(_engineConfigAsset.ConsoleService, cancellationToken);
|
||||
_inputService = await CreateServiceAsync(_engineConfigAsset.InputService, cancellationToken);
|
||||
_worldService = await CreateServiceAsync(_engineConfigAsset.WorldService, cancellationToken);
|
||||
_gameService = await CreateServiceAsync(_engineConfigAsset.GameService, cancellationToken);
|
||||
_consoleService = CreateService(_engineConfigAsset.ConsoleService);
|
||||
_inputService = CreateService(_engineConfigAsset.InputService);
|
||||
_worldService = CreateService(_engineConfigAsset.WorldService);
|
||||
_gameService = CreateService(_engineConfigAsset.GameService);
|
||||
}
|
||||
|
||||
private async UniTask RegisterServicesFromMainSceneAsync(CancellationToken cancellationToken = default) {
|
||||
private void InstallMainScene() {
|
||||
GameObject[] gameObjects = SceneManager.GetSceneByBuildIndex(RConsts.MainSceneBuildIndex).GetRootGameObjects();
|
||||
if (gameObjects.Length == 0) {
|
||||
return;
|
||||
@@ -88,8 +88,6 @@ namespace RebootKit.Engine {
|
||||
|
||||
di.Install(_diContext);
|
||||
}
|
||||
|
||||
await UniTask.Yield();
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user