DI updates

This commit is contained in:
2025-03-17 18:43:45 +01:00
parent 569b1d00b3
commit f80fd22a00
18 changed files with 42 additions and 53 deletions

View File

@@ -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();
}
//