private void CreateAndSpawnPlayers(GameModePvEConfig gameMode, LevelStageConfig levelStageConfig, GameLevelGridModel levelGridModel) { var playerConfigs = gameMode.PlayerConfigs; var spawnCorners = levelStageConfig.PlayersSpawnCorners; Assert.IsTrue(playerConfigs.Length <= spawnCorners.Length, "players count greater than the level spawn corners"); var zip = spawnCorners.Zip(playerConfigs, (spawnCorner, playerConfig) => (spawnCorner, playerConfig)); foreach (var(spawnCorner, playerConfig) in zip) { var playerInput = _inputService.RegisterPlayerInput(playerConfig); var player = _gameFactory.CreatePlayer(playerConfig, playerInput); Assert.IsNotNull(player); var position = levelGridModel.GetCornerWorldPosition(spawnCorner); var go = _gameFactory.SpawnEntity(playerConfig.HeroConfig, position); Assert.IsNotNull(go); var hero = (IHero)go.GetComponent <HeroController>(); player.AttachHero(hero, playerInput); Game.LevelManager.AddPlayer(playerConfig.PlayerTagConfig, player); } }