public async Task Initialize(MatchInitializationSettings settings) { SetupMatchRules(); SetupStage(settings); EntityManager.CreateEntity(ComponentType.ReadOnly <MatchState>()); Simulation.SetSingleton(Config.CreateInitialState()); await SpawnPlayers(settings); }
void SetupStage(MatchInitializationSettings settings) { var system = World.GetExistingSystem <PlayerRespawnSystem>(); system.Reset(); foreach (var point in settings.RespawnPoints) { system.AddRespawnPoint(point.position); } }
async Task SpawnPlayers(MatchInitializationSettings settings) { await DataLoader.WaitUntilLoaded(); var spawnPoints = settings.SpawnPoints; var tasks = new Task <GameObject> [Config.PlayerCount]; for (var i = 0; i < Config.PlayerCount; i++) { Transform spawnPoint = spawnPoints[i % spawnPoints.Length]; tasks[i] = LoadPlayerGameObject(Config[i], spawnPoint); } var playerGos = await Task.WhenAll(tasks); for (var i = 0; i < playerGos.Length; i++) { ToPlayerEntity(Config[i], playerGos[i]); } Debug.Log("Players spawned!"); }