using UnityEngine; using System.Threading.Tasks; using Unity.Services.Lobbies.Apis; using Unity.Services.Lobbies.Http; using Unity.Services.Lobbies.Scheduler; using TaskScheduler = Unity.Services.Lobbies.Scheduler.TaskScheduler; using Unity.Services.Core; using Unity.Services.Authentication; namespace Unity.Services.Lobbies { internal class LobbyServiceProvider : IInitializablePackage { private static GameObject _gameObjectFactory; [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void Register() { // Pass an instance of this class to Core var generatedPackageRegistry = CoreRegistry.Instance.RegisterPackage(new LobbyServiceProvider()); // And specify what components it requires, or provides. generatedPackageRegistry.DependsOn(); ; } public Task Initialize(CoreRegistry registry) { _gameObjectFactory = GameObjectFactory.CreateCoreSdkGameObject(); var scheduler = _gameObjectFactory.GetComponent(); var httpClient = new HttpClient(scheduler); var accessTokenLobbyApi = registry.GetServiceComponent(); if (accessTokenLobbyApi != null) { LobbyService.LobbyApiClient = new LobbyApiClient(httpClient, scheduler, accessTokenLobbyApi); } return Task.CompletedTask; } } }