mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-12 08:27:40 +02:00
heavy rework of our input system
- implement the InputController abstract class, an adapter class for any HID interface to use common controller methods relevant to Heaven Studio - implement InputKeyboard and InputJoyshock classes, for keyboard input and controllers driven by JoyShockLibrary respectively - add Linux compile of JoyShockLibrary
This commit is contained in:
@ -1,8 +1,12 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
using HeavenStudio;
|
||||
using HeavenStudio.InputSystem;
|
||||
using static JSL;
|
||||
|
||||
namespace HeavenStudio.Editor
|
||||
@ -11,13 +15,52 @@ namespace HeavenStudio.Editor
|
||||
{
|
||||
[SerializeField] private TMP_Text numConnectedLabel;
|
||||
[SerializeField] private TMP_Text currentControllerLabel;
|
||||
[SerializeField] private TMP_Dropdown controllersDropdown;
|
||||
[SerializeField] private TMP_Dropdown splitControllersDropdown;
|
||||
|
||||
private void Start() {
|
||||
numConnectedLabel.text = "Connected: " + PlayerInput.GetNumControllersConnected();
|
||||
currentControllerLabel.text = "Current Controller: " + PlayerInput.GetInputController(1).GetDeviceName();
|
||||
}
|
||||
|
||||
public void SearchAndConnectControllers()
|
||||
{
|
||||
int connected = PlayerInput.InitJoyShocks();
|
||||
int connected = PlayerInput.InitInputControllers();
|
||||
numConnectedLabel.text = "Connected: " + connected;
|
||||
//do this better
|
||||
currentControllerLabel.text = "Current Controller: " + PlayerInput.GetJoyShockName(0);
|
||||
currentControllerLabel.text = "Current Controller: " + PlayerInput.GetInputController(1).GetDeviceName();
|
||||
}
|
||||
|
||||
public void populateControllersDropdown()
|
||||
{
|
||||
List<TMP_Dropdown.OptionData> dropDownData = new List<TMP_Dropdown.OptionData>();
|
||||
var vals = PlayerInput.GetInputControllers();
|
||||
for (int i = 0; i < vals.Count; i++)
|
||||
{
|
||||
TMP_Dropdown.OptionData optionData = new TMP_Dropdown.OptionData();
|
||||
optionData.text = vals[i].GetDeviceName();
|
||||
dropDownData.Add(optionData);
|
||||
}
|
||||
controllersDropdown.AddOptions(dropDownData);
|
||||
controllersDropdown.value = 0;
|
||||
}
|
||||
|
||||
public void populateSplitControllersDropdown()
|
||||
{
|
||||
List<TMP_Dropdown.OptionData> dropDownData = new List<TMP_Dropdown.OptionData>();
|
||||
var vals = PlayerInput.GetInputControllers();
|
||||
InputController.InputFeatures features;
|
||||
for (int i = 0; i < vals.Count; i++)
|
||||
{
|
||||
features = vals[i].GetFeatures();
|
||||
if (features.HasFlag(InputController.InputFeatures.Extra_SplitControllerLeft) || features.HasFlag(InputController.InputFeatures.Extra_SplitControllerRight))
|
||||
{
|
||||
TMP_Dropdown.OptionData optionData = new TMP_Dropdown.OptionData();
|
||||
optionData.text = vals[i].GetDeviceName();
|
||||
dropDownData.Add(optionData);
|
||||
}
|
||||
}
|
||||
splitControllersDropdown.AddOptions(dropDownData);
|
||||
splitControllersDropdown.value = 0;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user