Files
crtr/Assets/Cryville/Crtr/InputConfig.cs

50 lines
1.1 KiB
C#

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<InputSource> _recvsrcs = new List<InputSource>();
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>().text = src.Handler.GetTypeName(src.Type);
}
});
}
}
}
}