public override void InstallBindings() { Container.BindInterfacesTo <EnemySpawner>().AsSingle(); Container.BindMemoryPool <EnemyFacade, EnemyFacade.Pool>() .WithInitialSize(10) .FromSubContainerResolve() .ByNewPrefab(_settings.EnemyFacadePrefab) .UnderTransformGroup("Enemies"); Container.BindMemoryPool <Bullet, Bullet.Pool>() .WithInitialSize(25) .FromComponentInNewPrefab(_settings.BulletPrefab) .UnderTransformGroup("Bullets"); Container.Bind <LevelBoundary>().AsSingle(); Container.BindMemoryPool <Explosion, Explosion.Pool>() .WithInitialSize(4) .FromComponentInNewPrefab(_settings.ExplosionPrefab) .UnderTransformGroup("Explosions"); Container.Bind <IAudioPlayer>().To <AudioPlayer>().AsSingle(); Container.BindInterfacesTo <GameRestartHandler>().AsSingle(); GameSignalsInstaller.Install(Container); }
public override void InstallBindings() { Container.BindInterfacesAndSelfTo <EnemySpawner>().AsSingle(); Container.BindFactory <float, float, EnemyFacade, EnemyFacade.Factory>() // We could just use FromMonoPoolableMemoryPool here instead, but // for IL2CPP to work we need our pool class to be used explicitly here .FromPoolableMemoryPool <float, float, EnemyFacade, EnemyFacadePool>(poolBinder => poolBinder // Spawn 5 enemies right off the bat so that we don't incur spikes at runtime .WithInitialSize(5) .FromSubContainerResolve() .ByNewPrefabInstaller <EnemyInstaller>(_settings.EnemyFacadePrefab) // Place each enemy under an Enemies game object at the root of scene hierarchy .UnderTransformGroup("Enemies")); Container.BindFactory <float, float, BulletTypes, Bullet, Bullet.Factory>() // We could just use FromMonoPoolableMemoryPool here instead, but // for IL2CPP to work we need our pool class to be used explicitly here .FromPoolableMemoryPool <float, float, BulletTypes, Bullet, BulletPool>(poolBinder => poolBinder // Spawn 20 right off the bat so that we don't incur spikes at runtime .WithInitialSize(20) // Bullets are simple enough that we don't need to make a subcontainer for them // The logic can all just be in one class .FromComponentInNewPrefab(_settings.BulletPrefab) .UnderTransformGroup("Bullets")); Container.Bind <LevelBoundary>().AsSingle(); Container.BindFactory <Explosion, Explosion.Factory>() // We could just use FromMonoPoolableMemoryPool here instead, but // for IL2CPP to work we need our pool class to be used explicitly here .FromPoolableMemoryPool <Explosion, ExplosionPool>(poolBinder => poolBinder // Spawn 4 right off the bat so that we don't incur spikes at runtime .WithInitialSize(4) .FromComponentInNewPrefab(_settings.ExplosionPrefab) .UnderTransformGroup("Explosions")); Container.Bind <AudioPlayer>().AsSingle(); Container.BindInterfacesTo <GameRestartHandler>().AsSingle(); Container.Bind <EnemyRegistry>().AsSingle(); GameSignalsInstaller.Install(Container); }