using Cryville.Common.Unity; using Cryville.Common.Unity.Input; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Cryville.Crtr { public class InputConfig : MonoBehaviour { [SerializeField] GameObject m_inputDialog; [SerializeField] Transform m_deviceList; [SerializeField] GameObject m_prefabListItem; public void OpenDialog() { m_inputDialog.SetActive(true); Game.InputManager.Activate(); CallHelper.Purge(m_deviceList); _recvsrcs.Clear(); } public void CloseDialog() { CloseDialog(null); } public void CloseDialog(InputSource? src) { m_inputDialog.SetActive(false); Game.InputManager.Deactivate(); } List _recvsrcs = new List(); void Update() { if (m_inputDialog.activeSelf) { Game.InputManager.EnumerateEvents(ev => { var src = ev.Id.Source; if (!_recvsrcs.Contains(src)) { _recvsrcs.Add(src); var obj = Instantiate(m_prefabListItem); obj.transform.SetParent(m_deviceList); obj.transform.Find("Text").GetComponent().text = src.Handler.GetTypeName(src.Type); } }); } } } }