Files
RebootKit/Runtime/Engine/Code/Input/InputService.cs
2025-07-01 18:57:31 +02:00

61 lines
1.7 KiB
C#

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<InputActionAsset> m_Handle;
InputActionAsset m_InputActionAsset;
public InputService(Config config) {
m_Config = config;
// m_Handle = Addressables.LoadAssetAsync<InputActionAsset>(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<InputActionAsset> inputAssetReference;
public InputActionAsset inputActionAsset;
}
}
}