using System; using RebootKit.Engine.Foundation; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.InputSystem; using UnityEngine.ResourceManagement.AsyncOperations; namespace RebootKit.Engine.Input { public class InputService : IService { readonly Config m_Config; AsyncOperationHandle m_Handle; InputActionAsset m_InputActionAsset; public InputService(Config config) { m_Config = config; // m_Handle = Addressables.LoadAssetAsync(m_Config.inputAssetReference); m_InputActionAsset = config.inputActionAsset; } public void Dispose() { m_InputActionAsset = null; // Addressables.Release(m_Handle); m_Handle = default; } public void EnableControls() { m_InputActionAsset.Enable(); } public void DisableControls() { m_InputActionAsset.Disable(); } public bool AreControlsEnabled() { return m_InputActionAsset.enabled; } public InputAction FindInputAction(string path) { return m_InputActionAsset.FindAction(path); } public void LockCursor() { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } public void UnlockCursor() { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } [Serializable] public class Config { public AssetReferenceT inputAssetReference; public InputActionAsset inputActionAsset; } } }