using System; using System.Collections.Generic; using UnityEditor.AddressableAssets.Settings; using UnityEngine; namespace UnityEditor.AddressableAssets.HostingServices { /// /// implementations serve Addressable content from the Unity Editor to players running /// locally or on devices with network access to the Editor. /// public interface IHostingService { /// /// Get the list of root directories being served by this hosting service /// List HostingServiceContentRoots { get; } /// /// Get a map of all profile variables and their current values /// Dictionary ProfileVariables { get; } /// /// Get a boolean that indicates if this hosting service is running /// bool IsHostingServiceRunning { get; } /// /// Start the hosting service /// void StartHostingService(); /// /// Stop the hosting service /// void StopHostingService(); /// /// Called by the HostingServicesManager before a domain reload, giving the hosting service /// an opportunity to persist state information. /// /// A key/value pair data store for use in persisting state information void OnBeforeSerialize(KeyDataStore dataStore); /// /// Called immediatley following a domain reload by the HostingServicesManager, for restoring state information /// after the service is recreated. /// /// A key/value pair data store for use in restoring state information void OnAfterDeserialize(KeyDataStore dataStore); /// /// Expand special variables from Addressable profiles /// /// Key name to match /// replacement string value for key, or null if no match string EvaluateProfileString(string key); /// /// The ILogger instance to use for debug log output /// ILogger Logger { get; set; } /// /// Draw configuration GUI elements /// // ReSharper disable once InconsistentNaming void OnGUI(); /// /// Set by the HostingServicesManager, primarily used to disambiguate multiple instances of the same service /// in the GUI. /// string DescriptiveName { get; set; } /// /// uniquely identifies this service within the scope of the HostingServicesManager /// int InstanceId { get; set; } } }