void RefreshSystemState() { var nl = Environment.NewLine; var names = Input.GetJoystickNames(); m_GamepadCount = names.Length; Controller_Dropdown.ClearOptions(); Controller_Dropdown.AddOptions(names.ToList()); Controller_Dropdown.value = Mathf.Clamp(Controller_Dropdown.value, 0, names.Length); Controller_Dropdown.RefreshShownValue(); if (names.Length == 0) { Controller_Dropdown.value = -1; return; } int device_count = names.Length; int disconnected = names .Where(string.IsNullOrEmpty) .Count(); Input_System.text = $"Devices.Count: {device_count - disconnected}" + nl + $"DisconnectedDevices.Count: {disconnected}"; var current_name = names[Controller_Dropdown.value]; bool is_dualshock = DetectGamepad(current_name) == GamepadType.DualShock; DualShock_Controller.SetActive(is_dualshock); XBOX_Controller.SetActive(!is_dualshock); if (is_dualshock) { m_CurrentMapping = GamepadMappings.Create_DualShock(); } else { m_CurrentMapping = GamepadMappings.Create_Xinput(); } m_CurrentMapping.m_GamepadId = Controller_Dropdown.value; }
private void Awake() { Application.runInBackground = true; m_CurrentMapping = GamepadMappings.Create_Xinput(); Controller_Dropdown.onValueChanged.AddListener((i) => RefreshSystemState()); }